Module: TestBench::Fixture::Actuate::Object
- Defined in:
- lib/test_bench/fixture/actuate/object.rb
Constant Summary collapse
- ModuleError =
::Class.new(RuntimeError)
Class Method Summary collapse
- .assure_included(object, mod) ⇒ Object
- .call(object, *modules, session: nil, &block_actuator) ⇒ Object
- .extend(object, *modules) ⇒ Object
- .fixture_module(object) ⇒ Object
- .fixture_module?(object) ⇒ Boolean
- .fixture_module_target(object) ⇒ Object
- .fixture_modules(object) ⇒ Object
- .included_modules(object) ⇒ Object
Class Method Details
.assure_included(object, mod) ⇒ Object
37 38 39 40 41 |
# File 'lib/test_bench/fixture/actuate/object.rb', line 37 def self.assure_included(object, mod) if not object.is_a?(mod) raise ModuleError, "Object doesn't include module -- #{mod.inspect}" end end |
.call(object, *modules, session: nil, &block_actuator) ⇒ Object
7 8 9 10 11 12 13 |
# File 'lib/test_bench/fixture/actuate/object.rb', line 7 def self.call(object, *modules, session: nil, &block_actuator) extend(object, *modules) Session.configure(object, session:, attr_name: :test_session) block_actuator.(object) end |
.extend(object, *modules) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/test_bench/fixture/actuate/object.rb', line 15 def self.extend(object, *modules) if modules.empty? fixture_modules = fixture_modules(object) else fixture_modules = modules.map do |mod| assure_included(object, mod) fixture_module(mod) end end if fixture_modules.empty? raise ModuleError, "No Fixture modules found -- #{object.inspect}" end fixture_modules.each do |fixture_module| object.extend(fixture_module) end object.extend(Fixture) end |
.fixture_module(object) ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'lib/test_bench/fixture/actuate/object.rb', line 60 def self.fixture_module(object) if not fixture_module?(object) raise ModuleError, "Couldn't resolve a Fixture module -- #{object.inspect}" end target = fixture_module_target(object) target.const_get(:Fixture, false) end |
.fixture_module?(object) ⇒ Boolean
70 71 72 73 74 |
# File 'lib/test_bench/fixture/actuate/object.rb', line 70 def self.fixture_module?(object) target = fixture_module_target(object) target.const_defined?(:Fixture, false) end |
.fixture_module_target(object) ⇒ Object
76 77 78 79 80 81 82 |
# File 'lib/test_bench/fixture/actuate/object.rb', line 76 def self.fixture_module_target(object) if object.is_a?(Module) object else object.class end end |
.fixture_modules(object) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/test_bench/fixture/actuate/object.rb', line 43 def self.fixture_modules(object) fixture_modules = [] targets = included_modules(object) targets << object targets.select do |target| if fixture_module?(target) fixture_module = fixture_module(target) fixture_modules << fixture_module end end fixture_modules end |
.included_modules(object) ⇒ Object
84 85 86 87 |
# File 'lib/test_bench/fixture/actuate/object.rb', line 84 def self.included_modules(object) modules = (object.class.included_modules | object.singleton_class.included_modules) - ::Object.included_modules modules.sort_by(&:name) end |