Module: TypedViewModel::Trait
- Defined in:
- lib/typed_view_model/trait.rb
Overview
Base module for creating view traits that can be mixed into view model classes. Provides DSL for declaring prop requirements for documentation and introspection.
Note: When traits are used in TypedViewModel::Base subclasses, Literal::Data’s typed props already enforce that required data is present and correctly typed at instantiation. The ‘requires` declaration serves as documentation and is used by the test harness (TraitTestHarness) to validate that test setups provide the necessary props.
Instance Method Summary collapse
-
#required_props ⇒ Object
Introspect the required props for this trait.
-
#requires(*props) ⇒ Object
Declare which props this trait expects to be available.
Instance Method Details
#required_props ⇒ Object
Introspect the required props for this trait
26 27 28 |
# File 'lib/typed_view_model/trait.rb', line 26 def required_props @required_props || [] end |
#requires(*props) ⇒ Object
Declare which props this trait expects to be available. These are the props that the hosting ViewModel class (or test harness) must provide.
Usage:
module MyTrait
extend TypedViewModel::Trait
requires :user, :account
end
Note: calling requires again replaces the previous declaration (does not merge).
21 22 23 |
# File 'lib/typed_view_model/trait.rb', line 21 def requires(*props) @required_props = props end |