Class: ActiveMocker::MockCreator
- Inherits:
-
Object
- Object
- ActiveMocker::MockCreator
show all
- Defined in:
- lib/active_mocker/mock_creator.rb,
lib/active_mocker/mock_creator/scopes.rb,
lib/active_mocker/mock_creator/attributes.rb,
lib/active_mocker/mock_creator/associations.rb,
lib/active_mocker/mock_creator/class_methods.rb,
lib/active_mocker/mock_creator/defined_methods.rb,
lib/active_mocker/mock_creator/modules_constants.rb,
lib/active_mocker/mock_creator/recreate_class_method_calls.rb
Defined Under Namespace
Modules: Associations, Attributes, ClassMethods, DefinedMethods, ModulesConstants, RecreateClassMethodCalls, Scopes
Constant Summary
collapse
- ENABLED_PARTIALS_DEFAULT =
[
:modules_constants,
:class_methods,
:attributes,
:scopes,
:recreate_class_method_calls,
:defined_methods,
:associations,
].freeze
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#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) ⇒ MockCreator
Returns a new instance of MockCreator.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/active_mocker/mock_creator.rb', line 17
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
|
Instance Attribute Details
#errors ⇒ Object
Returns the value of attribute errors.
60
61
62
|
# File 'lib/active_mocker/mock_creator.rb', line 60
def errors
@errors
end
|
Instance Method Details
#class_name ⇒ Object
136
137
138
|
# File 'lib/active_mocker/mock_creator.rb', line 136
def class_name
@class_name ||= class_introspector.parsed_source.class_name.split("::").last
end
|
#completed? ⇒ Boolean
56
57
58
|
# File 'lib/active_mocker/mock_creator.rb', line 56
def completed?
@completed
end
|
#create ⇒ Object
41
42
43
44
45
|
# File 'lib/active_mocker/mock_creator.rb', line 41
def create
verify_class
render { file_out.close } if errors.empty?
self
end
|
#nested_modules ⇒ Object
140
141
142
143
144
|
# File 'lib/active_mocker/mock_creator.rb', line 140
def nested_modules
@nested_modules ||= begin
class_introspector.parsed_source.module_nesting.join("::")
end
end
|
#partials ⇒ Object
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
# File 'lib/active_mocker/mock_creator.rb', line 115
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 ⇒ Object
146
147
148
|
# File 'lib/active_mocker/mock_creator.rb', line 146
def primary_key
@primary_key ||= ActiveRecordSchemaScrapper::Attribute.new(name: "id", type: :integer)
end
|
#render ⇒ Object
47
48
49
50
51
52
53
54
|
# File 'lib/active_mocker/mock_creator.rb', line 47
def render
template_creator.render
rescue => e
raise e unless error_already_collected?(e)
ensure
yield
@completed = true
end
|