test/traka_change_test.rb in traka-0.0.4 vs test/traka_change_test.rb in traka-0.0.5

- old
+ new

@@ -39,15 +39,33 @@ p2 = Product.create(:name => "Product B") assert_equal Traka::Change.staged_changes.count, 1 assert_equal Traka::Change.staged_changes.first.klass, "Product" - assert_equal Traka::Change.changes_from(1).count, 3 - assert_equal Traka::Change.changes_from(1).map(&:klass), ["Product", "Cheese", "Product"] - assert_equal Traka::Change.changes_from(1).map(&:action_type), ["create", "create", "create"] + assert_equal Traka::Change.staged_changes(:version => 1).count, 3 + assert_equal Traka::Change.staged_changes(:version => 1).map(&:klass), ["Product", "Cheese", "Product"] + assert_equal Traka::Change.staged_changes(:version => 1).map(&:action_type), ["create", "create", "create"] end + test "TrakaChange can list changes for a particular version" do + p = Product.create(:name => "Product A") + c = Cheese.create(:name => "Cheese A") + + assert_equal Traka::Change.staged_changes.count, 2 + + Traka::Change.publish_new_version! + + p2 = Product.create(:name => "Product B") + + assert_equal Traka::Change.staged_changes.count, 1 + assert_equal Traka::Change.staged_changes.first.klass, "Product" + + assert_equal Traka::Change.staged_changes(:version => (2..2)).count, 2 + assert_equal Traka::Change.staged_changes(:version => (2..2)).map(&:klass), ["Product", "Cheese"] + assert_equal Traka::Change.staged_changes(:version => (2..2)).map(&:action_type), ["create", "create"] + end + test "TrakaChange can list differing changes" do p = Product.create(:name => "Product A") c = Cheese.create(:name => "Cheese A") Traka::Change.publish_new_version! @@ -139,13 +157,65 @@ p.save p.destroy c.destroy - # Abridged version would be empty because destroys would cancel out creates. - assert_equal Traka::Change.staged_changes(false).count, 6 - assert_equal Traka::Change.staged_changes(false).map(&:klass), ["Product", "Cheese", "Product", "Product", "Product", "Cheese"] - assert_equal Traka::Change.staged_changes(false).map(&:action_type), ["create", "create", "update", "update", "destroy", "destroy"] + # Abridged version would be empty because destroys would cancel out creates and updates. + assert_equal Traka::Change.staged_changes(:filter => false).count, 6 + assert_equal Traka::Change.staged_changes(:filter => false).map(&:klass), ["Product", "Cheese", "Product", "Product", "Product", "Cheese"] + assert_equal Traka::Change.staged_changes(:filter => false).map(&:action_type), ["create", "create", "update", "update", "destroy", "destroy"] + end + + test "TrakaChange can give changes for sub-set of resources" do + p = Product.create(:name => "Product A") + c = Cheese.create(:name => "Cheese A") + + p.name = "New name" + p.save + + c.name = "Another name" + c.save + + assert_equal Traka::Change.staged_changes(:only => [Product], :filter => false).count, 2 + assert_equal Traka::Change.staged_changes(:only => [Product], :filter => false).map(&:klass), ["Product", "Product"] + assert_equal Traka::Change.staged_changes(:only => [Product], :filter => false).map(&:action_type), ["create", "update"] + end + + test "TrakaChange can give changes for sub-set of actions" do + p = Product.create(:name => "Product A") + c = Cheese.create(:name => "Cheese A") + + p.name = "New name" + p.save + + p.name = "Another name" + p.save + + assert_equal Traka::Change.staged_changes(:actions => [:create]).count, 2 + assert_equal Traka::Change.staged_changes(:actions => [:create]).map(&:klass), ["Product", "Cheese"] + assert_equal Traka::Change.staged_changes(:actions => [:create]).map(&:action_type), ["create", "create"] + end + + test "TrakaChange can accept multiple options" do + p = Product.create(:name => "Product A") + c = Cheese.create(:name => "Cheese A") + + p.name = "New name" + p.save + + p.name = "Another name" + p.save + + p.destroy + c.destroy + + assert_equal Traka::Change.staged_changes(:actions => [:create], :filter => false, :only => [Product, Cheese]).count, 2 + assert_equal Traka::Change.staged_changes(:actions => [:create], :filter => false, :only => [Product, Cheese]).map(&:klass), ["Product", "Cheese"] + assert_equal Traka::Change.staged_changes(:actions => [:create], :filter => false, :only => [Product, Cheese]).map(&:action_type), ["create", "create"] + + assert_equal Traka::Change.staged_changes(:actions => [:create, :update], :filter => false).count, 4 + assert_equal Traka::Change.staged_changes(:actions => [:create, :update], :filter => false, :only => [Product, Cheese]).map(&:klass), ["Product", "Cheese", "Product", "Product"] + assert_equal Traka::Change.staged_changes(:actions => [:create, :update], :filter => false, :only => [Product, Cheese]).map(&:action_type), ["create", "create", "update", "update"] end test "TrakaChange can resolve AR objects" do p = Product.create(:name => "Product A") c = Cheese.create(:name => "Cheese A")