Module: RSpec::WithArgs::ClassExampleGroup

Extended by:
CommonClassMethods
Includes:
CommonInstanceMethods
Defined in:
lib/with_args.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



34
35
36
37
38
39
40
41
# File 'lib/with_args.rb', line 34

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



49
50
51
# File 'lib/with_args.rb', line 49

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

.set_subject_class_proc(metadata) ⇒ Object



43
44
45
46
47
# File 'lib/with_args.rb', line 43

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

Instance Method Details

#initialization_argsObject



57
58
59
60
61
62
63
64
# File 'lib/with_args.rb', line 57

def initialization_args
  args = [:initialization_args]
  if args.is_a?(Array)
    args
  else
    Array.new
  end
end

#subject_class_procObject



53
54
55
# File 'lib/with_args.rb', line 53

def subject_class_proc
  [:subject_class_proc]
end