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