Module: RSpec::AdvancedSubject::InstanceMethodExampleGroup

Extended by:
CommonClassMethods
Includes:
CommonInstanceMethods
Defined in:
lib/rspec-advanced_subject/instance_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

.included(base) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/rspec-advanced_subject/instance_method_example_group.rb', line 13

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

  base.subject do
    if [:with_args].nil?
      super()
    else
      callee
    end
  end
end

.instance_regexObject



39
40
41
# File 'lib/rspec-advanced_subject/instance_method_example_group.rb', line 39

def self.instance_regex
  /^#/
end

.set_subject_method_name(metadata) ⇒ Object



34
35
36
37
# File 'lib/rspec-advanced_subject/instance_method_example_group.rb', line 34

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

.set_subject_method_proc(metadata) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/rspec-advanced_subject/instance_method_example_group.rb', line 26

def self.set_subject_method_proc()
  [:subject_method_proc] = Proc.new do |x|
    x.send(
      subject_method_name, *subject_args
    )
  end
end

Instance Method Details

#calleeObject



43
44
45
# File 'lib/rspec-advanced_subject/instance_method_example_group.rb', line 43

def callee
  instance_exec parent_callee, &subject_method_proc
end

#parent_calleeObject



47
48
49
# File 'lib/rspec-advanced_subject/instance_method_example_group.rb', line 47

def parent_callee
  instance_eval &subject_class_proc
end

#subject_method_nameObject



55
56
57
# File 'lib/rspec-advanced_subject/instance_method_example_group.rb', line 55

def subject_method_name
  [:subject_method_name]
end

#subject_method_procObject



51
52
53
# File 'lib/rspec-advanced_subject/instance_method_example_group.rb', line 51

def subject_method_proc
  [:subject_method_proc]
end