module RSpec::AdvancedSubject::ClassExampleGroup

Public Class Methods

included(base) click to toggle source
# File lib/rspec-advanced_subject/class_example_group.rb, line 16
def self.included(base)
  set_subject_class_proc(base.metadata)
  set_initialization_args(base.metadata)

  base.subject do
    instance_eval &subject_class_proc
  end
end
set_initialization_args(metadata) click to toggle source
# File lib/rspec-advanced_subject/class_example_group.rb, line 31
def self.set_initialization_args(metadata)
  metadata[:initialization_args] = metadata.fetch(:with_args,[])
end
set_subject_class_proc(metadata) click to toggle source
# File lib/rspec-advanced_subject/class_example_group.rb, line 25
def self.set_subject_class_proc(metadata)
  metadata[:subject_class_proc] ||= proc do |x|
    described_class.new(*initialization_args)
  end
end

Public Instance Methods

initialization_args() click to toggle source
# File lib/rspec-advanced_subject/class_example_group.rb, line 39
def initialization_args
  metadata.fetch(:initialization_args, Array.new)
end
subject_class_proc() click to toggle source
# File lib/rspec-advanced_subject/class_example_group.rb, line 35
def subject_class_proc
  metadata[:subject_class_proc]
end