Module: RSpec::AdvancedSubject::ClassMethodExampleGroup

Extended by:
CommonClassMethods
Includes:
CommonInstanceMethods
Defined in:
lib/rspec-advanced_subject/class_method_example_group.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from CommonClassMethods

descriptee

Methods included from CommonInstanceMethods

#metadata, #subject_args, #subject_class_proc

Class Method Details

.class_regexObject



36
37
38
# File 'lib/rspec-advanced_subject/class_method_example_group.rb', line 36

def self.class_regex
  /^\./
end

.included(base) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'lib/rspec-advanced_subject/class_method_example_group.rb', line 12

def self.included(base)
  set_subject_proc(base.)
  set_subject_method_name(base.)

  base.subject do
    raise NotImplementedError if [:with_args].nil?
    instance_eval &subject_proc
  end
end

.set_subject_method_name(metadata) ⇒ Object



31
32
33
34
# File 'lib/rspec-advanced_subject/class_method_example_group.rb', line 31

def self.set_subject_method_name()
  d = [:description_args].first
  [:subject_method_name] = d.gsub class_regex, ""
end

.set_subject_proc(metadata) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/rspec-advanced_subject/class_method_example_group.rb', line 22

def self.set_subject_proc()
  [:subject_proc] = proc do |x|
    described_class.send(
      subject_method_name,
      *subject_args
    )
  end
end

Instance Method Details

#subject_method_nameObject



44
45
46
# File 'lib/rspec-advanced_subject/class_method_example_group.rb', line 44

def subject_method_name
  [:subject_method_name]
end

#subject_procObject



40
41
42
# File 'lib/rspec-advanced_subject/class_method_example_group.rb', line 40

def subject_proc
  [:subject_proc]
end