Module: SolidObjects::TestHelper
- Defined in:
- lib/solid_objects/test_helper.rb,
sig/generated/lib/solid_objects/test_helper.rbs
Class Method Summary collapse
Instance Method Summary collapse
- #build_solid_objects_runners(roles) ⇒ Array[Worker | EffectExecutor | ReminderScheduler | BroadcastExecutor]
- #drain_solid_objects(roles: [ :reminders, :actors, :effects, :broadcasts ], max_passes: 1_000) ⇒ Integer
- #reset_actors! ⇒ void
- #solid_objects_runner_result(runner) ⇒ Integer
Class Method Details
.included(test_case) ⇒ void
This method returns an undefined value.
9 10 11 12 13 |
# File 'lib/solid_objects/test_helper.rb', line 9 def included(test_case) test_case.use_transactional_tests = false if test_case.respond_to?(:use_transactional_tests=) test_case.setup { reset_actors! } test_case.teardown { reset_actors! } end |
.reset_actors! ⇒ void
This method returns an undefined value.
16 17 18 19 20 |
# File 'lib/solid_objects/test_helper.rb', line 16 def reset_actors! SolidObjects.reset_caller_process! Instance.delete_all Process.delete_all end |
Instance Method Details
#build_solid_objects_runners(roles) ⇒ Array[Worker | EffectExecutor | ReminderScheduler | BroadcastExecutor]
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/solid_objects/test_helper.rb', line 51 def build_solid_objects_runners(roles) unknown_roles = roles - [ :actors, :effects, :reminders, :broadcasts ] raise ArgumentError, "unknown Solid Objects test roles: #{unknown_roles.join(", ")}" if unknown_roles.any? runners = {} runners[:actors] = Worker.new if roles.include?(:actors) runners[:effects] = EffectExecutor.new if roles.include?(:effects) runners[:reminders] = ReminderScheduler.new if roles.include?(:reminders) runners[:broadcasts] = BroadcastExecutor.new if roles.include?(:broadcasts) [ runners[:reminders], runners[:actors], runners[:effects], runners[:actors], runners[:broadcasts] ].compact end |
#drain_solid_objects(roles: [ :reminders, :actors, :effects, :broadcasts ], max_passes: 1_000) ⇒ Integer
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/solid_objects/test_helper.rb', line 29 def drain_solid_objects( roles: [ :reminders, :actors, :effects, :broadcasts ], max_passes: 1_000 ) runners = build_solid_objects_runners(roles) total = 0 max_passes.times do processed = runners.sum { |runner| solid_objects_runner_result(runner) } break if processed.zero? total += processed end total ensure runners&.uniq&.each(&:stop) end |
#reset_actors! ⇒ void
This method returns an undefined value.
24 25 26 |
# File 'lib/solid_objects/test_helper.rb', line 24 def reset_actors! TestHelper.reset_actors! end |
#solid_objects_runner_result(runner) ⇒ Integer
71 72 73 74 75 76 |
# File 'lib/solid_objects/test_helper.rb', line 71 def solid_objects_runner_result(runner) result = runner.run_once return result if result.is_a?(Integer) result ? 1 : 0 end |