module RSpec::AdvancedSubject::ClassMethodExampleGroup

Public Class Methods

class_regex() click to toggle source
# File lib/rspec-advanced_subject/class_method_example_group.rb, line 36
def self.class_regex
  /^\./
end
included(base) click to toggle source
# File lib/rspec-advanced_subject/class_method_example_group.rb, line 12
def self.included(base)
  set_subject_proc(base.metadata)
  set_subject_method_name(base.metadata)

  base.subject do
    raise NotImplementedError if metadata[:with_args].nil?
    instance_eval &subject_proc
  end
end
set_subject_method_name(metadata) click to toggle source
# File lib/rspec-advanced_subject/class_method_example_group.rb, line 31
def self.set_subject_method_name(metadata)
  d = metadata[:description_args].first
  metadata[:subject_method_name] = d.gsub class_regex, ""
end
set_subject_proc(metadata) click to toggle source
# File lib/rspec-advanced_subject/class_method_example_group.rb, line 22
def self.set_subject_proc(metadata)
  metadata[:subject_proc] = proc do |x|
    described_class.send(
      subject_method_name,
      *subject_args
    )
  end
end

Public Instance Methods

subject_method_name() click to toggle source
# File lib/rspec-advanced_subject/class_method_example_group.rb, line 44
def subject_method_name
  metadata[:subject_method_name]
end
subject_proc() click to toggle source
# File lib/rspec-advanced_subject/class_method_example_group.rb, line 40
def subject_proc
  metadata[:subject_proc]
end