class ActiveMocker::ParentClass

Attributes

active_record_base_klass[R]
error[R]
klasses_to_be_mocked[R]
mock_append_name[R]
parsed_source[R]

Public Class Methods

new(parsed_source:, klasses_to_be_mocked:, mock_append_name:, active_record_base_klass: ::ActiveRecord::Base) click to toggle source
# File lib/active_mocker/parent_class.rb, line 4
def initialize(parsed_source:, klasses_to_be_mocked:, mock_append_name:, active_record_base_klass: ::ActiveRecord::Base)
  @parsed_source            = parsed_source
  @klasses_to_be_mocked     = klasses_to_be_mocked
  @active_record_base_klass = active_record_base_klass
  @mock_append_name         = mock_append_name
end

Public Instance Methods

call() click to toggle source
# File lib/active_mocker/parent_class.rb, line 13
def call
  if parent_class?
    deal_with_parent
  else
    create_error("#{class_name} is missing a parent class.")
  end
  self
end
parent_mock_name() click to toggle source
# File lib/active_mocker/parent_class.rb, line 22
def parent_mock_name
  if @parent_mock_name
    "#{@parent_mock_name}#{mock_append_name}"
  else
    "ActiveMocker::Base"
  end
end

Private Instance Methods

class_name() click to toggle source
# File lib/active_mocker/parent_class.rb, line 58
def class_name
  parsed_source.class_name
end
create_error(message) click to toggle source
# File lib/active_mocker/parent_class.rb, line 45
def create_error(message)
  @error = OpenStruct.new(class_name: class_name,
                          message:    message)
end
deal_with_parent() click to toggle source
# File lib/active_mocker/parent_class.rb, line 37
def deal_with_parent
  if parent_class <= active_record_base_klass
    @parent_mock_name = parent_class_name if included_mocked_class?
  else
    create_error("#{class_name} does not inherit from ActiveRecord::Base")
  end
end
included_mocked_class?() click to toggle source
# File lib/active_mocker/parent_class.rb, line 66
def included_mocked_class?
  sanitize_consts(klasses_to_be_mocked).include?(sanitize_consts(parent_class_name).first)
end
parent_class() click to toggle source
# File lib/active_mocker/parent_class.rb, line 62
def parent_class
  parent_class_name.constantize
end
parent_class?() click to toggle source
# File lib/active_mocker/parent_class.rb, line 50
def parent_class?
  parsed_source.parent_class?
end
parent_class_name() click to toggle source
# File lib/active_mocker/parent_class.rb, line 54
def parent_class_name
  parsed_source.parent_class_name
end
sanitize_consts(consts) click to toggle source
# File lib/active_mocker/parent_class.rb, line 70
def sanitize_consts(consts)
  [*consts].map do |const|
    const.split("::").reject(&:empty?).join("::")
  end
end