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")