UNPKG

undoo

Version:
216 lines (164 loc) 6.14 kB
const Undoo = require('../'); const be = require('bejs'); describe('Undoo', function () { it('current should be return hello', function (done) { const myUndo = new Undoo(); myUndo.save('hello'); console.log(myUndo._history); be.err(done).equal('hello', myUndo.current()); }); it('current should be return world', function (done) { const myUndo = new Undoo(); myUndo.save('hello'); myUndo.save('world'); be.err(done).equal('world', myUndo.current()); }); it('undo should be return hello', function (done) { const myUndo = new Undoo(); myUndo.save('hello'); myUndo.save('world'); myUndo.undo(); be.err(done).equal('hello', myUndo.current()); }); it('undo and save should be return ciao', function (done) { const myUndo = new Undoo(); myUndo.save('hello'); myUndo.save('world'); myUndo.undo(); myUndo.save('ciao'); be.err.equal('ciao', myUndo.current()); console.log(myUndo._history); be.err(done).equal(['hello', 'ciao'], myUndo._history); }); it('undo, redo and save should be return ciao', function (done) { const myUndo = new Undoo(); myUndo.save('hello'); myUndo.save('world'); myUndo.undo(); myUndo.redo(); myUndo.save('ciao'); be.err.equal('ciao', myUndo.current()); console.log(myUndo._history); be.err(done).equal(['hello', 'world', 'ciao'], myUndo._history); }); it('2 undo should be return hello', function (done) { const myUndo = new Undoo(); myUndo.save('hello'); myUndo.save('world'); myUndo.save('ciao'); myUndo.undo(); myUndo.undo(); console.log(myUndo._history); be.err.equal('hello', myUndo.current()); be.err(done).equal([ 'hello', 'world', 'ciao' ], myUndo._history); }); it('save 3 times the same thing, should be every 1 item', function (done) { const myUndo = new Undoo(); myUndo.save('hello'); myUndo.save('hello'); myUndo.save('hello'); console.log(myUndo._history); be.err.equal('hello', myUndo.current()); be.err(done).equal(['hello'], myUndo._history); }); it('provider should be return hello', function (done) { const myUndo = new Undoo({ provider: ()=> 'hello' }); myUndo.save(); console.log(myUndo._history); be.err.equal('hello', myUndo.current()); be.err(done).equal([ 'hello' ], myUndo._history); }); it('2 undo and empty save should be return hello', function (done) { const myUndo = new Undoo(); myUndo.save('hello'); myUndo.save('world'); myUndo.save('ciao'); myUndo.undo(); myUndo.undo(); myUndo.save(); console.log(myUndo._history); be.err.equal('hello', myUndo.current()); be.err(done).equal([ 'hello'], myUndo._history); }); it('2 undo and empty save should be return bau', function (done) { const myUndo = new Undoo(); myUndo.save('hello'); myUndo.save('world'); myUndo.save('ciao'); myUndo.undo(); myUndo.undo(); myUndo.save(); myUndo.save('bau'); console.log(myUndo._history); be.err.equal('bau', myUndo.current()); be.err(done).equal(['hello', 'bau'], myUndo._history); }); it('maxLength set to 5 should be return foo', function (done) { const myUndo = new Undoo({ maxLength: 5 }).onMaxLength(()=>{ console.log('exceeded'); }); myUndo.save('hello'); myUndo.save('world'); myUndo.save('ciao'); myUndo.save('miao'); myUndo.save('bau'); myUndo.save('foo'); console.log(myUndo); console.log(myUndo.current()); console.log(myUndo.history()); be.err.equal('foo', myUndo.current()); be.err(done).equal([ 'world', 'ciao', 'miao', 'bau', 'foo' ], myUndo._history); }); it('import and history', function (done) { const myUndo = new Undoo(); myUndo.import([ 'world', 'ciao', 'miao', 'bau', 'foo' ]); console.log(myUndo.count()); be.err.equal('foo', myUndo.current()); be.err(done).equal([ 'world', 'ciao', 'miao', 'bau', 'foo' ], myUndo.history()); }); it('import with error', function (done) { const myUndo = new Undoo(); try { myUndo.import({a: 1}); } catch (e) { done(); } }); it('onBeforeSave should be return false', function (done) { const myUndo = new Undoo(); myUndo.onBeforeSave(()=>false); myUndo.save('hello'); console.log(myUndo._history); be.err(done).null(myUndo.current()); }); it('onBeforeSave should be return ciao', function (done) { const myUndo = new Undoo(); myUndo.onBeforeSave(()=>'ciao'); myUndo.save('hello'); console.log(myUndo._history); be.err(done).equal('ciao', myUndo.current()); }); it('suspendSave true, returns hello', function (done) { const myUndo = new Undoo(); myUndo.save('hello'); myUndo.suspendSave(); myUndo.save('ciao'); console.log(myUndo._history); be.err().false(myUndo.allowedSave()); be.err(done).equal('hello', myUndo.current()); }); it('suspendSave true and false, returns world', function (done) { const myUndo = new Undoo(); myUndo.save('hello'); myUndo.suspendSave(); myUndo.save('ciao'); myUndo.suspendSave(false); myUndo.save('world'); console.log(myUndo._history); be.err(done).equal('world', myUndo.current()); }); });