diff --git a/app/controllers/submissions/detail.js b/app/controllers/submissions/detail.js index 7220c22c..abd2beb9 100644 --- a/app/controllers/submissions/detail.js +++ b/app/controllers/submissions/detail.js @@ -12,6 +12,7 @@ export default class SubmissionsDetail extends Controller { @service submissionHandler; @service searchHelper; @service flashMessages; + @service router; constructor() { super(...arguments); @@ -479,7 +480,7 @@ export default class SubmissionsDetail extends Controller { ignoreList.clearIgnore(); ignoreList.ignore(submission.get('id')); - this.transitionToRoute('submissions'); + this.router.transitionTo('submissions'); } catch (e) { this.flashMessages.danger( 'We encountered an error deleting this draft submission. Please try again later or contact your administrator' diff --git a/app/controllers/submissions/new.js b/app/controllers/submissions/new.js index 81a4b617..0ed6caaf 100644 --- a/app/controllers/submissions/new.js +++ b/app/controllers/submissions/new.js @@ -106,7 +106,7 @@ export default class SubmissionsNew extends Controller { set(this, 'uploading', false); set(this, 'comment', ''); set(this, 'workflow.filesTemp', A()); - this.transitionToRoute('thanks', { queryParams: { submission: get(sub, 'id') } }); + this.router.transitionTo('thanks', { queryParams: { submission: get(sub, 'id') } }); }) .catch((error) => { this.set('uploading', false); diff --git a/app/controllers/submissions/new/basics.js b/app/controllers/submissions/new/basics.js index 57f3a648..74320c53 100644 --- a/app/controllers/submissions/new/basics.js +++ b/app/controllers/submissions/new/basics.js @@ -10,6 +10,7 @@ import { task } from 'ember-concurrency-decorators'; export default class SubmissionsNewBasics extends Controller { @service workflow; @service flashMessages; + @service router; @alias('model.newSubmission') submission; @alias('model.publication') publication; @@ -64,7 +65,7 @@ export default class SubmissionsNewBasics extends Controller { this.doiInfo.title = this.publication.title; await this.submission.save(); - this.transitionToRoute(gotoRoute); + this.router.transitionTo(gotoRoute); } @action diff --git a/app/controllers/submissions/new/files.js b/app/controllers/submissions/new/files.js index 7cb266c4..b129f005 100644 --- a/app/controllers/submissions/new/files.js +++ b/app/controllers/submissions/new/files.js @@ -8,6 +8,7 @@ import { inject as service } from '@ember/service'; export default class SubmissionsNewFiles extends Controller { @service workflow; @service flashMessages; + @service router; @alias('model.newSubmission') submission; @alias('model.files') files; @@ -50,7 +51,7 @@ export default class SubmissionsNewFiles extends Controller { this.updateRelatedData(); await this.submission.save(); set(this, 'loadingNext', false); // reset for next time - this.transitionToRoute(gotoRoute); + this.router.transitionTo(gotoRoute); } @action diff --git a/app/controllers/submissions/new/grants.js b/app/controllers/submissions/new/grants.js index bdd01a48..1e90aad7 100644 --- a/app/controllers/submissions/new/grants.js +++ b/app/controllers/submissions/new/grants.js @@ -2,8 +2,11 @@ import Controller, { inject as controller } from '@ember/controller'; import { action } from '@ember/object'; import { alias } from '@ember/object/computed'; +import { inject as service } from '@ember/service'; export default class SubmissionsNewGrants extends Controller { + @service router; + @alias('model.newSubmission') submission; @alias('model.publication') publication; @alias('model.submissionEvents') submissionEvents; @@ -24,7 +27,7 @@ export default class SubmissionsNewGrants extends Controller { async loadTab(gotoRoute) { // add validation, processing await this.submission.save(); - this.transitionToRoute(gotoRoute); + this.router.transitionTo(gotoRoute); } @action diff --git a/app/controllers/submissions/new/metadata.js b/app/controllers/submissions/new/metadata.js index e3d63aa9..fa7fb989 100644 --- a/app/controllers/submissions/new/metadata.js +++ b/app/controllers/submissions/new/metadata.js @@ -2,8 +2,11 @@ import Controller, { inject as controller } from '@ember/controller'; import { action } from '@ember/object'; import { alias } from '@ember/object/computed'; +import { inject as service } from '@ember/service'; export default class SubmissionsNewMetadata extends Controller { + @service router; + @alias('model.newSubmission') submission; @alias('model.repositories') repositories; @alias('model.publication') publication; @@ -25,7 +28,7 @@ export default class SubmissionsNewMetadata extends Controller { async loadTab(gotoRoute) { // add validation, processing await this.submission.save(); - this.transitionToRoute(gotoRoute); + this.router.transitionTo(gotoRoute); } @action diff --git a/app/controllers/submissions/new/policies.js b/app/controllers/submissions/new/policies.js index ff3ef5a7..be7b752f 100644 --- a/app/controllers/submissions/new/policies.js +++ b/app/controllers/submissions/new/policies.js @@ -2,8 +2,11 @@ import Controller, { inject as controller } from '@ember/controller'; import { action } from '@ember/object'; import { alias } from '@ember/object/computed'; +import { inject as service } from '@ember/service'; export default class SubmissionsNewPolicies extends Controller { + @service router; + @alias('model.newSubmission') submission; @alias('model.policies') policies; @alias('model.publication') publication; @@ -25,7 +28,7 @@ export default class SubmissionsNewPolicies extends Controller { async loadTab(gotoRoute) { // add validation, processing await this.submission.save(); - this.transitionToRoute(gotoRoute); + this.router.transitionTo(gotoRoute); } @action diff --git a/app/controllers/submissions/new/repositories.js b/app/controllers/submissions/new/repositories.js index abf44263..17bd1117 100644 --- a/app/controllers/submissions/new/repositories.js +++ b/app/controllers/submissions/new/repositories.js @@ -7,6 +7,7 @@ import { inject as service } from '@ember/service'; export default class SubmissionsNewRepositories extends Controller { @service workflow; + @service router; @alias('model.newSubmission') submission; @alias('model.repositories') repositories; @@ -82,7 +83,7 @@ export default class SubmissionsNewRepositories extends Controller { @action async loadTab(gotoRoute) { await this.submission.save(); - this.transitionToRoute(gotoRoute); + this.router.transitionTo(gotoRoute); set(this, 'loadingNext', false); // reset for next time } @@ -102,7 +103,7 @@ export default class SubmissionsNewRepositories extends Controller { }); if (value.dismiss) { - this.transitionToRoute('dashboard'); + this.router.transitionTo('dashboard'); } // do nothing } else { diff --git a/app/controllers/submissions/new/review.js b/app/controllers/submissions/new/review.js index 2ac3fe94..ccc1363d 100644 --- a/app/controllers/submissions/new/review.js +++ b/app/controllers/submissions/new/review.js @@ -3,8 +3,11 @@ import Controller, { inject as controller } from '@ember/controller'; import { action, computed, get } from '@ember/object'; import { alias } from '@ember/object/computed'; import { tracked } from '@glimmer/tracking'; +import { inject as service } from '@ember/service'; export default class SubmissionsNewReview extends Controller { + @service router; + @alias('model.newSubmission') submission; @alias('model.files') files; @alias('model.publication') publication; @@ -31,9 +34,7 @@ export default class SubmissionsNewReview extends Controller { @action loadTab(gotoRoute) { - // add validation, processing - // this.submission.save().then(() => this.transitionToRoute(gotoRoute)); - this.transitionToRoute(gotoRoute); + this.router.transitionTo(gotoRoute); } @action diff --git a/app/deprecation-workflow.js b/app/deprecation-workflow.js index 2d48a9c0..1cc5447e 100644 --- a/app/deprecation-workflow.js +++ b/app/deprecation-workflow.js @@ -2,7 +2,6 @@ import setupDeprecationWorkflow from 'ember-cli-deprecation-workflow'; setupDeprecationWorkflow({ workflow: [ - { handler: 'silence', matchId: 'routing.transition-methods' }, { handler: 'silence', matchId: 'ember-data:deprecate-promise-many-array-behaviors' }, { handler: 'silence', matchId: 'ember-data:deprecate-array-like' }, { handler: 'silence', matchId: 'ember-data:no-a-with-array-like' }, diff --git a/app/routes/application.js b/app/routes/application.js index 44981bbf..22a6282c 100644 --- a/app/routes/application.js +++ b/app/routes/application.js @@ -5,6 +5,7 @@ import { action } from '@ember/object'; export default class ApplicationRoute extends CheckSessionRoute { @service('app-static-config') staticConfig; + @service router; queryParams = ['userToken']; @@ -16,7 +17,7 @@ export default class ApplicationRoute extends CheckSessionRoute { @action transitionTo(route, model) { - this.transitionTo(route, model); + this.router.transitionTo(route, model); } /** diff --git a/app/routes/submissions/new.js b/app/routes/submissions/new.js index b4908bff..f05a267d 100644 --- a/app/routes/submissions/new.js +++ b/app/routes/submissions/new.js @@ -8,13 +8,14 @@ export default class NewRoute extends CheckSessionRoute { @service('workflow') workflow; @service store; + @service router; @service('current-user') currentUser; beforeModel() { if (this.workflow.getCurrentStep() === 0) { - this.transitionTo('submissions.new'); + this.router.transitionTo('submissions.new'); } } diff --git a/app/routes/submissions/new/index.js b/app/routes/submissions/new/index.js index f90f1791..7b2c5df1 100644 --- a/app/routes/submissions/new/index.js +++ b/app/routes/submissions/new/index.js @@ -2,11 +2,11 @@ import { inject as service } from '@ember/service'; import CheckSessionRoute from './../../check-session-route'; export default class IndexRoute extends CheckSessionRoute { - @service('workflow') - workflow; + @service workflow; + @service router; beforeModel() { this.workflow.resetWorkflow(); - this.replaceWith('submissions.new.basics'); + this.router.replaceWith('submissions.new.basics'); } } diff --git a/tests/unit/controllers/submissions/detail-test.js b/tests/unit/controllers/submissions/detail-test.js index 0c48a753..b72d728b 100644 --- a/tests/unit/controllers/submissions/detail-test.js +++ b/tests/unit/controllers/submissions/detail-test.js @@ -13,7 +13,7 @@ module('Unit | Controller | submissions/detail', (hooks) => { }); test('delete action should call the submission handler', function (assert) { - assert.expect(3); + assert.expect(2); // Mock the global SweetAlert object to always return immediately swal = () => @@ -35,7 +35,6 @@ module('Unit | Controller | submissions/detail', (hooks) => { }, }) ); - controller.set('transitionToRoute', () => assert.ok(true)); controller.send('deleteSubmission', submission); }); @@ -47,7 +46,8 @@ module('Unit | Controller | submissions/detail', (hooks) => { swal = Sinon.fake.resolves({ value: true }); const controller = this.owner.lookup('controller:submissions/detail'); - const transitionFake = Sinon.replace(controller, 'transitionToRoute', Sinon.fake()); + const routerService = this.owner.lookup('service:router'); + const transitionFake = Sinon.replace(routerService, 'transitionTo', Sinon.fake()); controller.submissionHandler = this.owner.lookup('service:submission-handler'); const deleteFake = Sinon.replace(controller.submissionHandler, 'deleteSubmission', Sinon.fake.rejects()); diff --git a/tests/unit/controllers/submissions/new-test.js b/tests/unit/controllers/submissions/new-test.js index 14df52a1..814efda4 100644 --- a/tests/unit/controllers/submissions/new-test.js +++ b/tests/unit/controllers/submissions/new-test.js @@ -94,7 +94,9 @@ module('Unit | Controller | submissions/new', (hooks) => { // After the route transition to thanks, all promises should be resolved handler // and tests can be run. - controller.set('transitionToRoute', (name) => { + + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = (name) => { assert.strictEqual(name, 'thanks'); assert.true(publicationSaved); @@ -120,7 +122,7 @@ module('Unit | Controller | submissions/new', (hooks) => { assert.deepEqual(md.agreements[0], { moo: 'Milk cows', }); - }); + }; controller.set('model', model); controller.set('comment', comment); @@ -193,7 +195,8 @@ module('Unit | Controller | submissions/new', (hooks) => { // After the route transition to thanks, all promises should be resolved handler // and tests can be run. - controller.set('transitionToRoute', (name) => { + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = (name) => { assert.strictEqual(name, 'thanks'); assert.true(publicationSaved); @@ -207,7 +210,7 @@ module('Unit | Controller | submissions/new', (hooks) => { assert.strictEqual(submissionEvent.performerRole, 'preparer'); assert.strictEqual(submissionEvent.eventType, 'approval-requested'); assert.strictEqual(submissionEvent.comment, comment); - }); + }; controller.set('model', model); controller.set('comment', comment); @@ -279,7 +282,8 @@ module('Unit | Controller | submissions/new', (hooks) => { // After the route transition to thanks, all promises should be resolved handler // and tests can be run. - controller.set('transitionToRoute', (name) => { + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = (name) => { assert.strictEqual(name, 'thanks'); assert.true(publicationSaved); @@ -295,7 +299,7 @@ module('Unit | Controller | submissions/new', (hooks) => { assert.strictEqual(submissionEvent.performerRole, 'preparer'); assert.strictEqual(submissionEvent.eventType, 'approval-requested-newuser'); assert.strictEqual(submissionEvent.comment, comment); - }); + }; controller.set('model', model); controller.set('comment', comment); @@ -310,7 +314,7 @@ module('Unit | Controller | submissions/new', (hooks) => { * to the expected route. * * This action should first create a SweetAlert (swal), then call 'deleteSubmission' in the - * submission handler, finally call 'transitionToRoute' to transition to the 'submissions' + * submission handler, finally call 'transitionTo' to transition to the 'submissions' * route. */ test('abort should delete submission and transition', async function (assert) { diff --git a/tests/unit/controllers/submissions/new/basics-test.js b/tests/unit/controllers/submissions/new/basics-test.js index 138c127a..821c82b4 100644 --- a/tests/unit/controllers/submissions/new/basics-test.js +++ b/tests/unit/controllers/submissions/new/basics-test.js @@ -139,7 +139,8 @@ module('Unit | Controller | submissions/new/basics', (hooks) => { publication, }; controller.set('model', model); - controller.transitionToRoute = function () { + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = () => { assert.ok(true); loadTabAccessed = true; }; @@ -192,7 +193,8 @@ module('Unit | Controller | submissions/new/basics', (hooks) => { }; controller.set('model', model); - controller.set('transitionToRoute', (route) => { + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = () => { // no errors and loadTab accessed assert.false(controller.get('submitterIsInvalid')); assert.false(controller.get('titleError')); @@ -203,7 +205,7 @@ module('Unit | Controller | submissions/new/basics', (hooks) => { assert.strictEqual(controller.get('flaggedFields').indexOf('submitterEmail'), -1); assert.ok(subSaved, 'submission was not saved'); - }); + }; assert.true(controller.get('model.newSubmission.isProxySubmission')); controller.send('validateAndLoadTab', 'submissions.new.basics'); diff --git a/tests/unit/controllers/submissions/new/files-test.js b/tests/unit/controllers/submissions/new/files-test.js index 8f8f75b1..0ed90391 100644 --- a/tests/unit/controllers/submissions/new/files-test.js +++ b/tests/unit/controllers/submissions/new/files-test.js @@ -152,7 +152,8 @@ module('Unit | Controller | submissions/new/files', (hooks) => { }), }; controller.set('model', model); - controller.transitionToRoute = function () { + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = () => { assert.ok(subSaved, 'Submission was not saved'); assert.strictEqual(controller.get('workflow').getFilesTemp().length, 0); assert.strictEqual(controller.get('model.files').length, 1); diff --git a/tests/unit/controllers/submissions/new/grants-test.js b/tests/unit/controllers/submissions/new/grants-test.js index e070318f..31afb1a8 100644 --- a/tests/unit/controllers/submissions/new/grants-test.js +++ b/tests/unit/controllers/submissions/new/grants-test.js @@ -23,7 +23,8 @@ module('Unit | Controller | submissions/new/grants', (hooks) => { controller.set('model', model); - controller.transitionToRoute = function (route) { + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = function (route) { assert.strictEqual(route, 'submissions.new.basics'); }; controller.send('loadPrevious'); @@ -41,7 +42,8 @@ module('Unit | Controller | submissions/new/grants', (hooks) => { controller.set('model', model); - controller.transitionToRoute = function (route) { + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = function (route) { assert.strictEqual(route, 'submissions.new.policies'); }; controller.send('loadNext'); @@ -62,7 +64,8 @@ module('Unit | Controller | submissions/new/grants', (hooks) => { }); controller.set('model', model); - controller.set('transitionToRoute', () => {}); + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = () => {}; controller.send('loadNext'); controller.send('loadPrevious'); diff --git a/tests/unit/controllers/submissions/new/metadata-test.js b/tests/unit/controllers/submissions/new/metadata-test.js index 6a45534c..c9cecf38 100644 --- a/tests/unit/controllers/submissions/new/metadata-test.js +++ b/tests/unit/controllers/submissions/new/metadata-test.js @@ -26,7 +26,8 @@ module('Unit | Controller | submissions/new/metadata', (hooks) => { }); controller.set('model', model); - controller.transitionToRoute = function (route) { + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = function (route) { assert.ok(subSaved, 'submission was not saved'); assert.strictEqual(route, 'submissions.new.repositories'); }; @@ -47,7 +48,9 @@ module('Unit | Controller | submissions/new/metadata', (hooks) => { }); controller.set('model', model); - controller.transitionToRoute = function (route) { + + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = function (route) { assert.ok(subSaved, 'submission was not saved'); assert.strictEqual(route, 'submissions.new.files'); }; diff --git a/tests/unit/controllers/submissions/new/policies-test.js b/tests/unit/controllers/submissions/new/policies-test.js index 98100b71..9d476ef4 100644 --- a/tests/unit/controllers/submissions/new/policies-test.js +++ b/tests/unit/controllers/submissions/new/policies-test.js @@ -22,7 +22,8 @@ module('Unit | Controller | submissions/new/policies', (hooks) => { }); controller.set('model', model); - controller.transitionToRoute = function (route) { + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = function (route) { assert.strictEqual(route, 'submissions.new.grants'); }; controller.send('loadPrevious'); @@ -39,7 +40,8 @@ module('Unit | Controller | submissions/new/policies', (hooks) => { }); controller.set('model', model); - controller.transitionToRoute = function (route) { + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = function (route) { assert.strictEqual(route, 'submissions.new.repositories'); }; controller.send('loadNext'); @@ -56,9 +58,10 @@ module('Unit | Controller | submissions/new/policies', (hooks) => { }); controller.set('model', model); - controller.set('transitionToRoute', (route) => - assert.ok(route === 'submissions.new.repositories' || route === 'submissions.new.grants') - ); + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = function (route) { + assert.ok(route === 'submissions.new.repositories' || route === 'submissions.new.grants'); + }; controller.send('loadNext'); controller.send('loadPrevious'); diff --git a/tests/unit/controllers/submissions/new/repositories-test.js b/tests/unit/controllers/submissions/new/repositories-test.js index c73774bf..7e625e3c 100644 --- a/tests/unit/controllers/submissions/new/repositories-test.js +++ b/tests/unit/controllers/submissions/new/repositories-test.js @@ -31,7 +31,8 @@ module('Unit | Controller | submissions/new/repositories', (hooks) => { }); controller.set('model', model); let loadTabAccessed = false; - controller.transitionToRoute = function () { + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = function (route) { loadTabAccessed = true; }; // override swal so it doesn't pop up @@ -65,7 +66,8 @@ module('Unit | Controller | submissions/new/repositories', (hooks) => { }); controller.set('model', model); - controller.transitionToRoute = function () { + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = function (route) { assert.ok(true); }; controller.send('validateAndLoadTab'); @@ -119,9 +121,10 @@ module('Unit | Controller | submissions/new/repositories', (hooks) => { }); controller.set('model', model); - controller.set('transitionToRoute', (route) => - assert.ok(['submissions.new.metadata', 'submissions.new.policies'].includes(route)) - ); + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = function (route) { + assert.ok(['submissions.new.metadata', 'submissions.new.policies'].includes(route)); + }; controller.send('loadNext'); assert.ok(subSaved); diff --git a/tests/unit/controllers/submissions/new/review-test.js b/tests/unit/controllers/submissions/new/review-test.js index 7c8c0432..f25f27f9 100644 --- a/tests/unit/controllers/submissions/new/review-test.js +++ b/tests/unit/controllers/submissions/new/review-test.js @@ -24,7 +24,8 @@ module('Unit | Controller | submissions/new/review', (hooks) => { controller.set('model', model); let loadTabAccessed = false; - controller.transitionToRoute = function (route) { + const routerService = this.owner.lookup('service:router'); + routerService.transitionTo = function (route) { loadTabAccessed = true; assert.strictEqual(route, 'submissions.new.files'); };