sandthorn 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/Gemfile.lock +1 -1
 - data/lib/sandthorn/aggregate_root_base.rb +24 -25
 - data/lib/sandthorn/aggregate_root_dirty_hashy.rb +13 -1
 - data/lib/sandthorn/version.rb +1 -1
 - data/spec/aggregate_root_spec.rb +30 -0
 - data/spec/event_inspector_spec.rb +139 -139
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 570d52af1a092035a72a6db14afb0c43ec61ae48
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 39f92e0f586d6af40ec7d1b0c9eacdf7c08827ae
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 95e7d6c19f1c50f01a4a63d0fec9378205956c29b9fb2be22fded7e5fb9c219dde8edfae25b5a3c7f620b01610157b7deb6f2531b79932b66912f7605105a776
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: b8e4d2e12afb2ea861b6e1136b9f3d263ed5fac7cd700a50969a3ecc556e3599e2200dbde479d99dda264fea753039719509d0f60a76489e98fee771ae7505b2
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    
| 
         @@ -31,11 +31,11 @@ module Sandthorn 
     | 
|
| 
       31 
31 
     | 
    
         
             
                  end
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
                  def commit *args
         
     | 
| 
       34 
     | 
    
         
            -
                    increase_current_aggregate_version!
         
     | 
| 
       35 
     | 
    
         
            -
                    method_name = caller_locations(1,1)[0].label.gsub("block in ", "")
         
     | 
| 
       36 
34 
     | 
    
         
             
                    aggregate_attribute_deltas = get_delta
         
     | 
| 
       37 
35 
     | 
    
         | 
| 
       38 
36 
     | 
    
         
             
                    unless aggregate_attribute_deltas.empty?
         
     | 
| 
      
 37 
     | 
    
         
            +
                      method_name = caller_locations(1,1)[0].label.gsub("block in ", "")
         
     | 
| 
      
 38 
     | 
    
         
            +
                      increase_current_aggregate_version!
         
     | 
| 
       39 
39 
     | 
    
         
             
                      data = {:method_name => method_name, :method_args => args, :attribute_deltas => aggregate_attribute_deltas}
         
     | 
| 
       40 
40 
     | 
    
         
             
                      data.merge!({trace: @aggregate_trace_information}) unless @aggregate_trace_information.nil? || @aggregate_trace_information.empty?
         
     | 
| 
       41 
41 
     | 
    
         
             
                      @aggregate_events << ({:aggregate_version => @aggregate_current_event_version, :event_name => method_name, :event_args => data})
         
     | 
| 
         @@ -45,22 +45,22 @@ module Sandthorn 
     | 
|
| 
       45 
45 
     | 
    
         | 
| 
       46 
46 
     | 
    
         
             
                  alias :record_event :commit
         
     | 
| 
       47 
47 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
                  def aggregate_trace args
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                  end
         
     | 
| 
      
 48 
     | 
    
         
            +
                  # def aggregate_trace args
         
     | 
| 
      
 49 
     | 
    
         
            +
                  #   @aggregate_trace_information = args
         
     | 
| 
      
 50 
     | 
    
         
            +
                  #   yield self
         
     | 
| 
      
 51 
     | 
    
         
            +
                  #   @aggregate_trace_information = nil
         
     | 
| 
      
 52 
     | 
    
         
            +
                  # end
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
       54 
54 
     | 
    
         
             
                  module ClassMethods
         
     | 
| 
       55 
55 
     | 
    
         | 
| 
       56 
     | 
    
         
            -
                    @@aggregate_trace_information = nil
         
     | 
| 
       57 
     | 
    
         
            -
                    def aggregate_trace args
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
                    end
         
     | 
| 
      
 56 
     | 
    
         
            +
                    # @@aggregate_trace_information = nil
         
     | 
| 
      
 57 
     | 
    
         
            +
                    # def aggregate_trace args
         
     | 
| 
      
 58 
     | 
    
         
            +
                    #   @@aggregate_trace_information = args
         
     | 
| 
      
 59 
     | 
    
         
            +
                    #   @aggregate_trace_information = args
         
     | 
| 
      
 60 
     | 
    
         
            +
                    #   yield self
         
     | 
| 
      
 61 
     | 
    
         
            +
                    #   @@aggregate_trace_information = nil
         
     | 
| 
      
 62 
     | 
    
         
            +
                    #   @aggregate_trace_information = nil
         
     | 
| 
      
 63 
     | 
    
         
            +
                    # end
         
     | 
| 
       64 
64 
     | 
    
         | 
| 
       65 
65 
     | 
    
         
             
                    def all
         
     | 
| 
       66 
66 
     | 
    
         
             
                      aggregate_id_list = Sandthorn.get_aggregate_list_by_typename(self.name)
         
     | 
| 
         @@ -84,13 +84,14 @@ module Sandthorn 
     | 
|
| 
       84 
84 
     | 
    
         
             
                    def new *args
         
     | 
| 
       85 
85 
     | 
    
         
             
                      aggregate = super
         
     | 
| 
       86 
86 
     | 
    
         
             
                      aggregate.aggregate_base_initialize
         
     | 
| 
      
 87 
     | 
    
         
            +
                      aggr = aggregate
         
     | 
| 
       87 
88 
     | 
    
         | 
| 
       88 
     | 
    
         
            -
                      aggregate.aggregate_trace @@aggregate_trace_information do |aggr|
         
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
                      end
         
     | 
| 
      
 89 
     | 
    
         
            +
                      #aggregate.aggregate_trace @@aggregate_trace_information do |aggr|
         
     | 
| 
      
 90 
     | 
    
         
            +
                      aggregate.aggregate_initialize
         
     | 
| 
      
 91 
     | 
    
         
            +
                      aggregate.send :set_aggregate_id, Sandthorn.generate_aggregate_id
         
     | 
| 
      
 92 
     | 
    
         
            +
                      aggregate.send :commit, *args
         
     | 
| 
      
 93 
     | 
    
         
            +
                      aggregate
         
     | 
| 
      
 94 
     | 
    
         
            +
                      #end
         
     | 
| 
       94 
95 
     | 
    
         
             
                    end
         
     | 
| 
       95 
96 
     | 
    
         | 
| 
       96 
97 
     | 
    
         
             
                    def aggregate_build events
         
     | 
| 
         @@ -137,6 +138,7 @@ module Sandthorn 
     | 
|
| 
       137 
138 
     | 
    
         
             
                      aggregate.send :set_orginating_aggregate_version!, current_aggregate_version
         
     | 
| 
       138 
139 
     | 
    
         
             
                      aggregate.send :set_current_aggregate_version!, current_aggregate_version
         
     | 
| 
       139 
140 
     | 
    
         
             
                      aggregate.send :set_instance_variables!, attributes
         
     | 
| 
      
 141 
     | 
    
         
            +
                      aggregate.send :aggregate_initialize
         
     | 
| 
       140 
142 
     | 
    
         
             
                      aggregate
         
     | 
| 
       141 
143 
     | 
    
         
             
                    end
         
     | 
| 
       142 
144 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -150,9 +152,7 @@ module Sandthorn 
     | 
|
| 
       150 
152 
     | 
    
         
             
                  end
         
     | 
| 
       151 
153 
     | 
    
         | 
| 
       152 
154 
     | 
    
         
             
                  def extract_relevant_aggregate_instance_variables
         
     | 
| 
       153 
     | 
    
         
            -
                    instance_variables.select  
     | 
| 
       154 
     | 
    
         
            -
                      i.to_s != "@hashy" && (!i.to_s.start_with?("@aggregate_") || i.to_s == "@aggregate_id")
         
     | 
| 
       155 
     | 
    
         
            -
                    end
         
     | 
| 
      
 155 
     | 
    
         
            +
                    instance_variables.select { |i| i.to_s=="@aggregate_id" || !i.to_s.start_with?("@aggregate_") }
         
     | 
| 
       156 
156 
     | 
    
         
             
                  end
         
     | 
| 
       157 
157 
     | 
    
         | 
| 
       158 
158 
     | 
    
         
             
                  def set_orginating_aggregate_version! aggregate_version
         
     | 
| 
         @@ -169,7 +169,6 @@ module Sandthorn 
     | 
|
| 
       169 
169 
     | 
    
         | 
| 
       170 
170 
     | 
    
         
             
                  def clear_aggregate_events
         
     | 
| 
       171 
171 
     | 
    
         
             
                    @aggregate_events = []
         
     | 
| 
       172 
     | 
    
         
            -
                    @aggregate_attribute_deltas = []
         
     | 
| 
       173 
172 
     | 
    
         
             
                  end
         
     | 
| 
       174 
173 
     | 
    
         | 
| 
       175 
174 
     | 
    
         
             
                  def aggregate_clear_current_event_version!
         
     | 
| 
         @@ -10,18 +10,30 @@ module Sandthorn 
     | 
|
| 
       10 
10 
     | 
    
         
             
                    base.extend(Sandthorn::AggregateRoot::Base::ClassMethods)
         
     | 
| 
       11 
11 
     | 
    
         
             
                  end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
                  def aggregate_initialize
         
     | 
| 
      
 13 
     | 
    
         
            +
                  def aggregate_initialize *args
         
     | 
| 
       14 
14 
     | 
    
         
             
                    @hashy = ::DirtyHashy.new
         
     | 
| 
       15 
15 
     | 
    
         
             
                  end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
      
 17 
     | 
    
         
            +
                  def set_instance_variables! attribute
         
     | 
| 
      
 18 
     | 
    
         
            +
                    super attribute
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                    extract_relevant_aggregate_instance_variables.each do |var|
         
     | 
| 
      
 21 
     | 
    
         
            +
                      next if var.to_s == "@hashy"
         
     | 
| 
      
 22 
     | 
    
         
            +
                      @hashy[var.to_s.delete("@")] = self.instance_variable_get("#{var}")
         
     | 
| 
      
 23 
     | 
    
         
            +
                    end
         
     | 
| 
      
 24 
     | 
    
         
            +
                    @hashy.clean_up!
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
       17 
27 
     | 
    
         
             
                  def get_delta
         
     | 
| 
       18 
28 
     | 
    
         
             
                    extract_relevant_aggregate_instance_variables.each do |var|
         
     | 
| 
      
 29 
     | 
    
         
            +
                      next if var.to_s == "@hashy"
         
     | 
| 
       19 
30 
     | 
    
         
             
                      @hashy[var.to_s.delete("@")] = self.instance_variable_get("#{var}")
         
     | 
| 
       20 
31 
     | 
    
         
             
                    end
         
     | 
| 
       21 
32 
     | 
    
         
             
                    aggregate_attribute_deltas = []
         
     | 
| 
       22 
33 
     | 
    
         
             
                    @hashy.changes.each do |attribute|
         
     | 
| 
       23 
34 
     | 
    
         
             
                      aggregate_attribute_deltas << { :attribute_name => attribute[0], :old_value => attribute[1][0], :new_value => attribute[1][1]}
         
     | 
| 
       24 
35 
     | 
    
         
             
                    end
         
     | 
| 
      
 36 
     | 
    
         
            +
                    @hashy.clean_up!
         
     | 
| 
       25 
37 
     | 
    
         
             
                    aggregate_attribute_deltas
         
     | 
| 
       26 
38 
     | 
    
         
             
                  end
         
     | 
| 
       27 
39 
     | 
    
         | 
    
        data/lib/sandthorn/version.rb
    CHANGED
    
    
    
        data/spec/aggregate_root_spec.rb
    CHANGED
    
    | 
         @@ -136,6 +136,36 @@ module Sandthorn 
     | 
|
| 
       136 
136 
     | 
    
         
             
                      expect{DirtyClass.find("666")}.to raise_error
         
     | 
| 
       137 
137 
     | 
    
         
             
                    end
         
     | 
| 
       138 
138 
     | 
    
         
             
                  end
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
                end
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
                describe "event data" do
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
                  let(:dirty_obejct) { 
         
     | 
| 
      
 146 
     | 
    
         
            +
                    o = DirtyClass.new :name => "old_value"
         
     | 
| 
      
 147 
     | 
    
         
            +
                    o
         
     | 
| 
      
 148 
     | 
    
         
            +
                  }
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
                  context "old_value should be set" do
         
     | 
| 
      
 151 
     | 
    
         
            +
                  
         
     | 
| 
      
 152 
     | 
    
         
            +
                    it "should set the old_value on the event" do
         
     | 
| 
      
 153 
     | 
    
         
            +
                      dirty_obejct.change_name "new_name"
         
     | 
| 
      
 154 
     | 
    
         
            +
                      expect(dirty_obejct.aggregate_events.last[:event_args][:attribute_deltas].first[:old_value]).to eql "old_value"
         
     | 
| 
      
 155 
     | 
    
         
            +
                    end
         
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
                    it "should not change aggregate_id" do
         
     | 
| 
      
 158 
     | 
    
         
            +
                      dirty_obejct.change_name "new_name"
         
     | 
| 
      
 159 
     | 
    
         
            +
                      expect(dirty_obejct.aggregate_events.last[:event_args][:attribute_deltas].last[:attribute_name]).not_to eql "aggregate_id"
         
     | 
| 
      
 160 
     | 
    
         
            +
                    end
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
      
 162 
     | 
    
         
            +
                    it "should not change sex attribute" do
         
     | 
| 
      
 163 
     | 
    
         
            +
                      dirty_obejct.change_name "new_name"
         
     | 
| 
      
 164 
     | 
    
         
            +
                      dirty_obejct.aggregate_events.each do |event|
         
     | 
| 
      
 165 
     | 
    
         
            +
                        expect(event[:event_name]).not_to eql "change_sex"
         
     | 
| 
      
 166 
     | 
    
         
            +
                      end
         
     | 
| 
      
 167 
     | 
    
         
            +
                    end
         
     | 
| 
      
 168 
     | 
    
         
            +
                  end
         
     | 
| 
       139 
169 
     | 
    
         
             
                end
         
     | 
| 
       140 
170 
     | 
    
         
             
              end
         
     | 
| 
       141 
171 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,152 +1,152 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'sandthorn/event_inspector'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'sandthorn/aggregate_root_dirty_hashy'
         
     | 
| 
      
 1 
     | 
    
         
            +
            # require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            # require 'sandthorn/event_inspector'
         
     | 
| 
      
 3 
     | 
    
         
            +
            # require 'sandthorn/aggregate_root_dirty_hashy'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            class InspectorAggregate
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
            # class InspectorAggregate
         
     | 
| 
      
 6 
     | 
    
         
            +
            #   include Sandthorn::AggregateRoot::DirtyHashy
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 8 
     | 
    
         
            +
            #   attr_reader :foo_bar
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
            #   def initialize args = {}
         
     | 
| 
      
 11 
     | 
    
         
            +
            #     @foo_bar = args.fetch(:foo_bar, nil)
         
     | 
| 
      
 12 
     | 
    
         
            +
            #   end
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
            end
         
     | 
| 
      
 14 
     | 
    
         
            +
            #   def this_is_an_event args = nil
         
     | 
| 
      
 15 
     | 
    
         
            +
            #     record_event args
         
     | 
| 
      
 16 
     | 
    
         
            +
            #   end
         
     | 
| 
      
 17 
     | 
    
         
            +
            #   def another_event
         
     | 
| 
      
 18 
     | 
    
         
            +
            #     record_event
         
     | 
| 
      
 19 
     | 
    
         
            +
            #   end
         
     | 
| 
      
 20 
     | 
    
         
            +
            #   def new_damaged_item_was_added hello
         
     | 
| 
      
 21 
     | 
    
         
            +
            #     record_event hello
         
     | 
| 
      
 22 
     | 
    
         
            +
            #   end 
         
     | 
| 
      
 23 
     | 
    
         
            +
            # end
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
            module Sandthorn
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
            # module Sandthorn
         
     | 
| 
      
 26 
     | 
    
         
            +
            #   describe EventInspector do
         
     | 
| 
      
 27 
     | 
    
         
            +
            #     let(:aggregate) {InspectorAggregate.new.extend EventInspector}
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
            #     context "when using extract_trace_info from an event" do
         
     | 
| 
      
 30 
     | 
    
         
            +
            #       let(:trace_info) {{user_id: "foo", ip: "bar"}}
         
     | 
| 
      
 31 
     | 
    
         
            +
            #       let(:subject) do
         
     | 
| 
      
 32 
     | 
    
         
            +
            #         aggregate.aggregate_trace trace_info do |traced|
         
     | 
| 
      
 33 
     | 
    
         
            +
            #           traced.this_is_an_event
         
     | 
| 
      
 34 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 35 
     | 
    
         
            +
            #         aggregate
         
     | 
| 
      
 36 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 37 
     | 
    
         
            +
            #       context "and unsaved aggregate" do
         
     | 
| 
      
 38 
     | 
    
         
            +
            #         it "should extract exact traceinfo from event" do
         
     | 
| 
      
 39 
     | 
    
         
            +
            #           all_trace = subject.events_with_trace_info
         
     | 
| 
      
 40 
     | 
    
         
            +
            #           all_trace.last[:trace].should eql trace_info
         
     | 
| 
      
 41 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 42 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 43 
     | 
    
         
            +
            #       context "and saved aggregate" do
         
     | 
| 
      
 44 
     | 
    
         
            +
            #         it "should extract exact traceinfo from event" do
         
     | 
| 
      
 45 
     | 
    
         
            +
            #           subject.save
         
     | 
| 
      
 46 
     | 
    
         
            +
            #           all_trace = subject.events_with_trace_info
         
     | 
| 
      
 47 
     | 
    
         
            +
            #           all_trace.last[:trace].should eql trace_info
         
     | 
| 
      
 48 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 49 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 50 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 51 
     | 
    
         
            +
            #     context "when inspecting non saved events" do
         
     | 
| 
      
 52 
     | 
    
         
            +
            #       context "with no tracing information" do
         
     | 
| 
      
 53 
     | 
    
         
            +
            #         let(:subject) { aggregate.this_is_an_event;aggregate }
         
     | 
| 
       54 
54 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
      
 55 
     | 
    
         
            +
            #         it "should have the new event" do
         
     | 
| 
      
 56 
     | 
    
         
            +
            #           subject.has_event?(:new).should be_true
         
     | 
| 
      
 57 
     | 
    
         
            +
            #         end
         
     | 
| 
       58 
58 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
      
 59 
     | 
    
         
            +
            #         it "should report true on has_unsaved_event? :this_is_an_event" do
         
     | 
| 
      
 60 
     | 
    
         
            +
            #           subject.has_unsaved_event?(:this_is_an_event).should be_true
         
     | 
| 
      
 61 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 62 
     | 
    
         
            +
            #         it "should report false on has_unsaved_event? :no_event_here" do
         
     | 
| 
      
 63 
     | 
    
         
            +
            #           subject.has_unsaved_event?(:no_event_here).should be_false
         
     | 
| 
      
 64 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 65 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 66 
     | 
    
         
            +
            #       context "with tracing information" do
         
     | 
| 
      
 67 
     | 
    
         
            +
            #         let(:subject) do
         
     | 
| 
      
 68 
     | 
    
         
            +
            #           aggregate.aggregate_trace user_id: 123, ip: "1234" do |traced|
         
     | 
| 
      
 69 
     | 
    
         
            +
            #             traced.this_is_an_event "my name"
         
     | 
| 
      
 70 
     | 
    
         
            +
            #           end
         
     | 
| 
      
 71 
     | 
    
         
            +
            #           aggregate
         
     | 
| 
      
 72 
     | 
    
         
            +
            #         end
         
     | 
| 
       73 
73 
     | 
    
         | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
      
 74 
     | 
    
         
            +
            #         it "should report true on has_unsaved_event? :this_is_an_event" do
         
     | 
| 
      
 75 
     | 
    
         
            +
            #           subject.has_unsaved_event?(:this_is_an_event, trace: {user_id: 123, ip: "1234"}).should be_true
         
     | 
| 
      
 76 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 77 
     | 
    
         
            +
            #         it "should report false on has_unsaved_event? :no_event_here" do
         
     | 
| 
      
 78 
     | 
    
         
            +
            #           subject.has_unsaved_event?(:this_is_an_event, trace: {user_id: 321}).should be_false
         
     | 
| 
      
 79 
     | 
    
         
            +
            #           subject.has_unsaved_event?(:this_is_an_event, trace: {another_user_id: 123}).should be_false
         
     | 
| 
      
 80 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 81 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 82 
     | 
    
         
            +
            #     end 
         
     | 
| 
      
 83 
     | 
    
         
            +
            #     context "when inspecting saved events" do
         
     | 
| 
      
 84 
     | 
    
         
            +
            #       context "with no tracing information" do
         
     | 
| 
      
 85 
     | 
    
         
            +
            #         let(:subject) { aggregate.this_is_an_event;aggregate.save;aggregate }
         
     | 
| 
       86 
86 
     | 
    
         | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
      
 87 
     | 
    
         
            +
            #         it "should report true on has_unsaved_event? :this_is_an_event" do
         
     | 
| 
      
 88 
     | 
    
         
            +
            #           subject.has_saved_event?(:this_is_an_event).should be_true
         
     | 
| 
      
 89 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 90 
     | 
    
         
            +
            #         it "should report false on has_unsaved_event? :no_event_here" do
         
     | 
| 
      
 91 
     | 
    
         
            +
            #           subject.has_saved_event?(:no_event_here).should be_false
         
     | 
| 
      
 92 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 93 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 94 
     | 
    
         
            +
            #       context "with tracing information" do
         
     | 
| 
      
 95 
     | 
    
         
            +
            #         let(:subject) do
         
     | 
| 
      
 96 
     | 
    
         
            +
            #           aggregate.aggregate_trace user_id: 123, ip: "1234" do |traced|
         
     | 
| 
      
 97 
     | 
    
         
            +
            #             traced.this_is_an_event "my name"
         
     | 
| 
      
 98 
     | 
    
         
            +
            #           end
         
     | 
| 
      
 99 
     | 
    
         
            +
            #           aggregate.save
         
     | 
| 
      
 100 
     | 
    
         
            +
            #           aggregate
         
     | 
| 
      
 101 
     | 
    
         
            +
            #         end
         
     | 
| 
       102 
102 
     | 
    
         | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
             
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
      
 103 
     | 
    
         
            +
            #         it "should report true on has_unsaved_event? :this_is_an_event" do
         
     | 
| 
      
 104 
     | 
    
         
            +
            #           subject.has_saved_event?(:this_is_an_event, trace: {user_id: 123, ip: "1234"}).should be_true
         
     | 
| 
      
 105 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 106 
     | 
    
         
            +
            #         it "should report false on has_unsaved_event? :no_event_here" do
         
     | 
| 
      
 107 
     | 
    
         
            +
            #           subject.has_saved_event?(:this_is_an_event, trace: {user_id: 321}).should be_false
         
     | 
| 
      
 108 
     | 
    
         
            +
            #           subject.has_saved_event?(:this_is_an_event, trace: {another_user_id: 123}).should be_false
         
     | 
| 
      
 109 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 110 
     | 
    
         
            +
            #         it "should be able to check complex trace" do
         
     | 
| 
      
 111 
     | 
    
         
            +
            #           subject.aggregate_trace client_ip: "10", user_id: "123" do |trace|
         
     | 
| 
      
 112 
     | 
    
         
            +
            #             trace.new_damaged_item_was_added "foobar"
         
     | 
| 
      
 113 
     | 
    
         
            +
            #             trace.save  
         
     | 
| 
      
 114 
     | 
    
         
            +
            #           end
         
     | 
| 
      
 115 
     | 
    
         
            +
            #           subject.has_saved_event?(:new_damaged_item_was_added, trace: {user_id: "123", client_ip: "10"})
         
     | 
| 
      
 116 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 117 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 118 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 119 
     | 
    
         
            +
            #     context "when inspecting any events" do
         
     | 
| 
      
 120 
     | 
    
         
            +
            #       context "with no tracing information" do
         
     | 
| 
      
 121 
     | 
    
         
            +
            #         let(:subject) { aggregate.this_is_an_event;aggregate.save;aggregate.another_event;aggregate }
         
     | 
| 
       122 
122 
     | 
    
         | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
     | 
    
         
            -
             
     | 
| 
       130 
     | 
    
         
            -
             
     | 
| 
       131 
     | 
    
         
            -
             
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
       133 
     | 
    
         
            -
             
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
             
     | 
| 
       137 
     | 
    
         
            -
             
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
     | 
    
         
            -
             
     | 
| 
      
 123 
     | 
    
         
            +
            #         it "should report true on has_unsaved_event? :this_is_an_event" do
         
     | 
| 
      
 124 
     | 
    
         
            +
            #           subject.has_event?(:this_is_an_event).should be_true
         
     | 
| 
      
 125 
     | 
    
         
            +
            #           subject.has_event?(:another_event).should be_true
         
     | 
| 
      
 126 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 127 
     | 
    
         
            +
            #         it "should report false on has_unsaved_event? :no_event_here" do
         
     | 
| 
      
 128 
     | 
    
         
            +
            #           subject.has_event?(:no_event_here).should be_false
         
     | 
| 
      
 129 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 130 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 131 
     | 
    
         
            +
            #       context "with tracing information" do
         
     | 
| 
      
 132 
     | 
    
         
            +
            #         let(:subject) do
         
     | 
| 
      
 133 
     | 
    
         
            +
            #           aggregate.aggregate_trace user_id: 123, ip: "1234" do |traced|
         
     | 
| 
      
 134 
     | 
    
         
            +
            #             traced.this_is_an_event "my name"
         
     | 
| 
      
 135 
     | 
    
         
            +
            #             traced.save
         
     | 
| 
      
 136 
     | 
    
         
            +
            #             traced.another_event
         
     | 
| 
      
 137 
     | 
    
         
            +
            #           end
         
     | 
| 
      
 138 
     | 
    
         
            +
            #           aggregate
         
     | 
| 
      
 139 
     | 
    
         
            +
            #         end
         
     | 
| 
       140 
140 
     | 
    
         | 
| 
       141 
     | 
    
         
            -
             
     | 
| 
       142 
     | 
    
         
            -
             
     | 
| 
       143 
     | 
    
         
            -
             
     | 
| 
       144 
     | 
    
         
            -
             
     | 
| 
       145 
     | 
    
         
            -
             
     | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
       147 
     | 
    
         
            -
             
     | 
| 
       148 
     | 
    
         
            -
             
     | 
| 
       149 
     | 
    
         
            -
             
     | 
| 
       150 
     | 
    
         
            -
             
     | 
| 
       151 
     | 
    
         
            -
             
     | 
| 
       152 
     | 
    
         
            -
            end
         
     | 
| 
      
 141 
     | 
    
         
            +
            #         it "should report true on has_unsaved_event? :this_is_an_event" do
         
     | 
| 
      
 142 
     | 
    
         
            +
            #           subject.has_event?(:this_is_an_event, trace: {user_id: 123, ip: "1234"}).should be_true
         
     | 
| 
      
 143 
     | 
    
         
            +
            #           subject.has_event?(:another_event, trace: {user_id: 123, ip: "1234"}).should be_true
         
     | 
| 
      
 144 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 145 
     | 
    
         
            +
            #         it "should report false on has_unsaved_event? :no_event_here" do
         
     | 
| 
      
 146 
     | 
    
         
            +
            #           subject.has_event?(:this_is_an_event, trace: {user_id: 321}).should be_false
         
     | 
| 
      
 147 
     | 
    
         
            +
            #           subject.has_event?(:another_event, trace: {ip: "123"}).should be_false
         
     | 
| 
      
 148 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 149 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 150 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 151 
     | 
    
         
            +
            #   end
         
     | 
| 
      
 152 
     | 
    
         
            +
            # end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: sandthorn
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Lars Krantz
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2014- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2014-04-02 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: bundler
         
     |