Class: ViewModel::TestHelpers::ARVMBuilder
- Inherits:
-
Object
- Object
- ViewModel::TestHelpers::ARVMBuilder
- Defined in:
- lib/view_model/test_helpers/arvm_builder.rb
Defined Under Namespace
Classes: Spec
Instance Attribute Summary collapse
-
#model ⇒ Object
readonly
Returns the value of attribute model.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#namespace ⇒ Object
readonly
Returns the value of attribute namespace.
-
#viewmodel ⇒ Object
readonly
Returns the value of attribute viewmodel.
Instance Method Summary collapse
-
#initialize(name, model_base: ApplicationRecord, viewmodel_base: ViewModelBase, namespace: Object, spec: nil, &block) ⇒ ARVMBuilder
constructor
A new instance of ARVMBuilder.
- #teardown ⇒ Object
Constructor Details
#initialize(name, model_base: ApplicationRecord, viewmodel_base: ViewModelBase, namespace: Object, spec: nil, &block) ⇒ ARVMBuilder
Returns a new instance of ARVMBuilder.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/view_model/test_helpers/arvm_builder.rb', line 36 def initialize(name, model_base: ApplicationRecord, viewmodel_base: ViewModelBase, namespace: Object, spec: nil, &block) @model_base = model_base @viewmodel_base = viewmodel_base @namespace = namespace @name = name.to_s.camelize @no_viewmodel = false if spec define_schema(&spec.schema) define_model(&spec.model) define_viewmodel(&spec.viewmodel) else instance_eval(&block) end raise 'Model not created in ARVMBuilder' unless model raise 'Schema not created in ARVMBuilder' unless model.table_exists? raise 'ViewModel not created in ARVMBuilder' unless viewmodel || @no_viewmodel # Force the realization of the view model into the library's lookup # table. If this doesn't happen the library may have conflicting entries in # the deferred table, and will allow viewmodels to leak between tests. unless @no_viewmodel || !(@viewmodel < ViewModel::Record) resolved = ViewModel::Registry.for_view_name(viewmodel.view_name) raise 'Failed to register expected new class!' unless resolved == @viewmodel end end |
Instance Attribute Details
#model ⇒ Object (readonly)
Returns the value of attribute model.
4 5 6 |
# File 'lib/view_model/test_helpers/arvm_builder.rb', line 4 def model @model end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
4 5 6 |
# File 'lib/view_model/test_helpers/arvm_builder.rb', line 4 def name @name end |
#namespace ⇒ Object (readonly)
Returns the value of attribute namespace.
4 5 6 |
# File 'lib/view_model/test_helpers/arvm_builder.rb', line 4 def namespace @namespace end |
#viewmodel ⇒ Object (readonly)
Returns the value of attribute viewmodel.
4 5 6 |
# File 'lib/view_model/test_helpers/arvm_builder.rb', line 4 def viewmodel @viewmodel end |
Instance Method Details
#teardown ⇒ Object
64 65 66 67 68 69 70 71 72 73 |
# File 'lib/view_model/test_helpers/arvm_builder.rb', line 64 def teardown ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS #{name.underscore.pluralize} CASCADE") namespace.send(:remove_const, name) namespace.send(:remove_const, viewmodel_name) if viewmodel # prevent cached old class from being used to resolve associations if ActiveSupport::VERSION::MAJOR < 7 ActiveSupport::Dependencies::Reference.clear! end end |