spec/spec_helper.rb in metacosm-0.1.3 vs spec/spec_helper.rb in metacosm-0.1.4

- old
+ new

@@ -2,119 +2,15 @@ require 'rspec/its' require 'pry' require 'ostruct' require 'metacosm' +require 'metacosm/support/test_harness' include Metacosm require 'support/fizz_buzz' require 'support/village' -class GivenWhenThen < Struct.new(:given_events,:when_command,:then_event_class) - include RSpec::Matchers - - def when(*commands) - @when_commands ||= [] - commands.each do |command| - @when_commands.push command - end - self - end - - def expect_events(evts) - @then_events = evts - verify! - self - end - - def expect_query(query, to_find:) - @query = query - @expected_query_results = to_find - verify! - self - end - - protected - - def verify! - clean_slate! - receive_events! - fire_commands! - - validate_events! - validate_query! - - self - end - - private - - def clean_slate! - PassiveRecord.drop_all - Simulation.current.clear! - self - end - - def receive_events! - unless self.given_events.nil? - self.given_events.each do |evt| - sim.receive(evt, record: false) - end - end - self - end - - def fire_commands! - unless @when_commands.nil? - @when_commands.each do |cmd| - sim.apply(cmd) - end - end - self - end - - def validate_events! - if @then_event_class - expect(@then_event_class).to eq(sim.events.last.class) - end - - if @then_events - expect(@then_events).to match_array(sim.events) - end - - if @then_event_attrs - @then_event_attrs.each do |k,v| - expect(sim.events.last.send(k)).to eq(v) - end - end - - self - end - - def validate_query! - if @query - expect(@query.execute).to eq(@expected_query_results) - end - self - end - - def sim - @sim ||= Simulation.current - end -end - -module Metacosm - module SpecHelpers - def given_no_activity - GivenWhenThen.new - end - - def given_events(events) - GivenWhenThen.new(events) - end - end -end - RSpec.configure do |c| - c.include Metacosm::SpecHelpers + c.include Metacosm::TestHarness end