Module: RSpec::AdvancedSubject::ClassExampleGroup

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

Class Method Summary collapse

Instance Method Summary collapse

Methods included from CommonClassMethods

descriptee

Methods included from CommonInstanceMethods

#metadata, #subject_args

Class Method Details

.included(base) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/rspec-advanced_subject/class_example_group.rb', line 16

def self.included(base)
  set_subject_class_proc(base.)
  set_initialization_args(base.)

  base.subject do
    instance_eval &subject_class_proc
  end
end

.set_initialization_args(metadata) ⇒ Object



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

def self.set_initialization_args()
  [:initialization_args] = .fetch(:with_args,[])
end

.set_subject_class_proc(metadata) ⇒ Object



25
26
27
28
29
# File 'lib/rspec-advanced_subject/class_example_group.rb', line 25

def self.set_subject_class_proc()
  [:subject_class_proc] ||= proc do |x|
    described_class.new(*initialization_args)
  end
end

Instance Method Details

#initialization_argsObject



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

def initialization_args
  .fetch(:initialization_args, Array.new)
end

#subject_class_procObject



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

def subject_class_proc
  [:subject_class_proc]
end