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
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 |