github.com/outbrain/consul@v1.4.5/ui-v2/tests/unit/mixins/with-blocking-actions-test.js (about) 1 import { moduleFor, skip } from 'ember-qunit'; 2 import test from 'ember-sinon-qunit/test-support/test'; 3 import { getOwner } from '@ember/application'; 4 import Route from '@ember/routing/route'; 5 import Mixin from 'consul-ui/mixins/with-blocking-actions'; 6 7 moduleFor('mixin:with-blocking-actions', 'Unit | Mixin | with blocking actions', { 8 // Specify the other units that are required for this test. 9 needs: ['service:feedback', 'service:flashMessages', 'service:logger'], 10 subject: function() { 11 const MixedIn = Route.extend(Mixin); 12 this.register('test-container:with-blocking-actions-object', MixedIn); 13 return getOwner(this).lookup('test-container:with-blocking-actions-object'); 14 }, 15 }); 16 17 // Replace this with your real tests. 18 test('it works', function(assert) { 19 const subject = this.subject(); 20 assert.ok(subject); 21 }); 22 skip('init sets up feedback properly'); 23 test('afterCreate just calls afterUpdate', function(assert) { 24 const subject = this.subject(); 25 const expected = [1, 2, 3, 4]; 26 const afterUpdate = this.stub(subject, 'afterUpdate').returns(expected); 27 const actual = subject.afterCreate(expected); 28 assert.deepEqual(actual, expected); 29 assert.ok(afterUpdate.calledOnce); 30 }); 31 test('afterUpdate calls transitionTo without the last part of the current route name', function(assert) { 32 const subject = this.subject(); 33 const expected = 'dc.kv'; 34 subject.routeName = expected + '.edit'; 35 const transitionTo = this.stub(subject, 'transitionTo').returnsArg(0); 36 const actual = subject.afterUpdate(); 37 assert.equal(actual, expected); 38 assert.ok(transitionTo.calledOnce); 39 }); 40 test('afterDelete calls transitionTo without the last part of the current route name if the last part is not `index`', function(assert) { 41 const subject = this.subject(); 42 const expected = 'dc.kv'; 43 subject.routeName = expected + '.edit'; 44 const transitionTo = this.stub(subject, 'transitionTo').returnsArg(0); 45 const actual = subject.afterDelete(); 46 assert.equal(actual, expected); 47 assert.ok(transitionTo.calledOnce); 48 }); 49 test('afterDelete calls refresh if the last part is `index`', function(assert) { 50 const subject = this.subject(); 51 subject.routeName = 'dc.kv.index'; 52 const expected = 'refresh'; 53 const refresh = this.stub(subject, 'refresh').returns(expected); 54 const actual = subject.afterDelete(); 55 assert.equal(actual, expected); 56 assert.ok(refresh.calledOnce); 57 }); 58 test('the error hooks return type', function(assert) { 59 const subject = this.subject(); 60 const expected = 'success'; 61 ['errorCreate', 'errorUpdate', 'errorDelete'].forEach(function(item) { 62 const actual = subject[item](expected, {}); 63 assert.equal(actual, expected); 64 }); 65 }); 66 test('action cancel just calls afterUpdate', function(assert) { 67 const subject = this.subject(); 68 const expected = [1, 2, 3, 4]; 69 const afterUpdate = this.stub(subject, 'afterUpdate').returns(expected); 70 // TODO: unsure as to whether ember testing should actually bind this for you? 71 const actual = subject.actions.cancel.bind(subject)(expected); 72 assert.deepEqual(actual, expected); 73 assert.ok(afterUpdate.calledOnce); 74 });