# File lib/active_mocker/mock_creator.rb, line 147 def primary_key @primary_key ||= ActiveRecordSchemaScrapper::Attribute.new(name: "id", type: :integer) end
class ActiveMocker::MockCreator
Constants
- ENABLED_PARTIALS_DEFAULT
Attributes
active_record_base_klass[R]
active_record_model[R]
class_introspector[R]
enabled_partials[R]
errors[R]
file[R]
file_out[R]
klasses_to_be_mocked[R]
mock_append_name[R]
schema_scrapper[R]
template_creator[R]
Public Class Methods
new(file:, file_out:, schema_scrapper:, template_creator: nil, class_introspector: nil, enabled_partials: nil, klasses_to_be_mocked:, mock_append_name:, active_record_model:, active_record_base_klass: ActiveRecord::Base)
click to toggle source
# File lib/active_mocker/mock_creator.rb, line 18 def initialize(file:, file_out:, schema_scrapper:, template_creator: nil, class_introspector: nil, enabled_partials: nil, klasses_to_be_mocked:, mock_append_name:, active_record_model:, active_record_base_klass: ActiveRecord::Base) @file = file @file_out = file_out @schema_scrapper = schema_scrapper @template_creator = template_creator || template_creator_default(file_out) @class_introspector = class_introspector || class_introspector_default @enabled_partials = enabled_partials || ENABLED_PARTIALS_DEFAULT @klasses_to_be_mocked = klasses_to_be_mocked @active_record_base_klass = active_record_base_klass @mock_append_name = mock_append_name @active_record_model = active_record_model @errors = [] @completed = false end
Public Instance Methods
class_name()
click to toggle source
# File lib/active_mocker/mock_creator.rb, line 137 def class_name @class_name ||= class_introspector.parsed_source.class_name.split("::").last end
completed?()
click to toggle source
# File lib/active_mocker/mock_creator.rb, line 57 def completed? @completed end
create()
click to toggle source
# File lib/active_mocker/mock_creator.rb, line 42 def create verify_class render { file_out.close } if errors.empty? self end
nested_modules()
click to toggle source
# File lib/active_mocker/mock_creator.rb, line 141 def nested_modules @nested_modules ||= begin class_introspector.parsed_source.module_nesting.join("::") end end
partials()
click to toggle source
# File lib/active_mocker/mock_creator.rb, line 116 def partials OpenStruct.new(enabled_partials.each_with_object({}) do |p, hash| begin file = File.new(File.join(File.dirname(__FILE__), "mock_template/_#{p}.erb")) extend(ActiveMocker::MockCreator.const_get(p.to_s.camelize)) hash[p] = ERB.new(file.read, nil, "-", "_sub#{p}").result(binding) rescue => e errors << ErrorObject.new(class_name: class_name, original_error: e, type: :generation, level: :error, message: e.message) errors << ErrorObject.new(class_name: class_name, original_error: e, type: :erb, level: :debug, message: "Erb template: #{p} failed.\n#{file.path}") raise e end end) end
primary_key()
click to toggle source
render() { || ... }
click to toggle source
# File lib/active_mocker/mock_creator.rb, line 48 def render template_creator.render rescue => e raise e unless error_already_collected?(e) ensure yield @completed = true end
Private Instance Methods
class_introspector_default()
click to toggle source
# File lib/active_mocker/mock_creator.rb, line 94 def class_introspector_default DissociatedIntrospection::Inspection.new(file: file) end
error_already_collected?(e)
click to toggle source
# File lib/active_mocker/mock_creator.rb, line 76 def error_already_collected?(e) errors.any? { |eo| eo.original_error == e } end
parent_class_inspector()
click to toggle source
– END defaults – #
# File lib/active_mocker/mock_creator.rb, line 100 def parent_class_inspector @parent_class_inspector ||= ParentClass.new(parsed_source: class_introspector.parsed_source, klasses_to_be_mocked: klasses_to_be_mocked, mock_append_name: mock_append_name).call end
template_creator_default(file_out)
click to toggle source
– Defaults – #
# File lib/active_mocker/mock_creator.rb, line 81 def template_creator_default(file_out) TemplateCreator.new(file_out: file_out, erb_template: File.new(File.join(File.dirname(__FILE__), "mock_template.erb"), "r"), binding: binding, post_process: lambda do |str| ruby_code = DissociatedIntrospection::RubyCode.build_from_source(str, parse_with_comments: true) DissociatedIntrospection::WrapInModules.new(ruby_code: ruby_code) .call(modules: nested_modules) .source_from_ast.gsub(/end\n/, "end\n\n") end) end
verify_class()
click to toggle source
# File lib/active_mocker/mock_creator.rb, line 110 def verify_class verify_parent_class end
verify_parent_class()
click to toggle source
# File lib/active_mocker/mock_creator.rb, line 106 def verify_parent_class errors << parent_class_inspector.error if parent_class_inspector.error end