test/undo_test.rb in mongoid-undo-0.10.1 vs test/undo_test.rb in mongoid-undo-0.11.0
- old
+ new
@@ -5,88 +5,101 @@
include Mongoid::Undo
field :name, type: String
end
-class Localized
- include Mongoid::Document
- include Mongoid::Undo
-
+class Localized < Document
field :language, localize: true, type: String
end
-class Timestamped
- include Mongoid::Document
- include Mongoid::Undo
+class Timestamped < Document
include Mongoid::Timestamps
-
- field :name, type: String
end
class UndoTest < Minitest::Unit::TestCase
def test_create
document = Document.create(name: 'foo')
assert_equal :create, document.action
assert_equal 1, document.version
assert document.persisted?
+ assert document.undoable?
document.undo
assert_equal :create, document.action
assert_equal 1, document.version
assert_not document.persisted?
+ assert document.undoable?
document.redo
assert_equal :create, document.action
assert_equal 1, document.version
assert document.persisted?
+ assert document.undoable?
end
def test_update
document = Document.create(name: 'foo')
+ document.save
+ assert_not document.undoable?
+
document.update_attributes name: 'bar'
assert_equal :update, document.action
assert_equal 2, document.version
assert_equal 'bar', document.name
+ assert document.undoable?
document.undo
assert_equal :update, document.action
assert_equal 3, document.version
assert_equal 'foo', document.name
+ assert document.undoable?
+
document.redo
assert_equal :update, document.action
assert_equal 4, document.version
assert_equal 'bar', document.name
+ assert document.undoable?
end
def test_destroy
document = Document.create(name: 'foo')
document.destroy
assert_equal :destroy, document.action
assert_not document.persisted?
+ assert document.undoable?
document.undo
assert_equal :destroy, document.action
assert document.persisted?
+ assert document.undoable?
document.redo
assert_equal :destroy, document.action
assert_not document.persisted?
+ assert document.undoable?
end
def test_redo_equals_to_undo
document = Document.create(name: 'foo')
assert_equal document.method(:undo), document.method(:redo)
end
+ def test_redoable_equals_to_undoable
+ document = Document.create(name: 'foo')
+
+ assert_equal document.method(:undoable?), document.method(:redoable?)
+ end
+
+
def test_localized_attributes
document = Localized.create(language: 'English')
document.update_attributes language: 'English Updated'
document.undo
@@ -131,9 +144,25 @@
mock.expect :before_redo, nil
mock.expect :after_redo, nil
document.redo
mock.verify
+ end
+
+
+ def test_around_callback
+ document = Document.create(name: 'foo')
+ document.update_attributes name: 'bar'
+
+ tap do |test|
+ document.class.around_undo do |document, proc|
+ test.assert_equal 'bar', document.name
+ proc.call
+ test.assert_equal 'foo', document.name
+ end
+ end
+
+ document.undo
end
def test_disabling_undo_via_callbacks
document = Document.create(name: 'foo')