QUnit.test('Destroying the application resets the router before the container is destroyed', function() { App.Router.map(function() { this.route('home', { path: '/' }); }); App.HomeRoute = Ember.Route.extend({ setupController() { this.controllerFor('home').set('selectedMenuItem', 'home'); }, deactivate() { this.controllerFor('home').set('selectedMenuItem', null); } }); App.ApplicationRoute = Ember.Route.extend({ setupController() { this.controllerFor('application').set('selectedMenuItem', 'home'); }, deactivate() { this.controllerFor('application').set('selectedMenuItem', null); } }); container.lookup('router:main'); Ember.run(App, 'advanceReadiness'); handleURL('/'); equal(Ember.controllerFor(container, 'home').get('selectedMenuItem'), 'home'); equal(Ember.controllerFor(container, 'application').get('selectedMenuItem'), 'home'); Ember.run(App, 'destroy'); equal(Ember.controllerFor(container, 'home').get('selectedMenuItem'), null); equal(Ember.controllerFor(container, 'application').get('selectedMenuItem'), null); });
QUnit.test('Resetting the application allows controller properties to be set when a route deactivates', function() { App.Router.map(function() { this.route('home', { path: '/' }); }); App.HomeRoute = Ember.Route.extend({ setupController() { this.controllerFor('home').set('selectedMenuItem', 'home'); }, deactivate() { this.controllerFor('home').set('selectedMenuItem', null); } }); App.ApplicationRoute = Ember.Route.extend({ setupController() { this.controllerFor('application').set('selectedMenuItem', 'home'); }, deactivate() { this.controllerFor('application').set('selectedMenuItem', null); } }); container.lookup('router:main'); Ember.run(App, 'advanceReadiness'); handleURL('/'); equal(Ember.controllerFor(container, 'home').get('selectedMenuItem'), 'home'); equal(Ember.controllerFor(container, 'application').get('selectedMenuItem'), 'home'); App.reset(); equal(Ember.controllerFor(container, 'home').get('selectedMenuItem'), null); equal(Ember.controllerFor(container, 'application').get('selectedMenuItem'), null); });