Skip to content

Commit

Permalink
Merge pull request #10612 from rwjblue/fix-inject
Browse files Browse the repository at this point in the history
[BUGFIX release] `Ember.inject.controller()` works for all Controller types.
  • Loading branch information
rwjblue committed Mar 12, 2015
2 parents a6fdd05 + 7aa33c8 commit 5e39827
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
2 changes: 1 addition & 1 deletion packages/ember-runtime/lib/controllers/controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ var Controller = EmberObject.extend(Mixin);

function controllerInjectionHelper(factory) {
Ember.assert("Defining an injected controller property on a " +
"non-controller is not allowed.", Controller.detect(factory));
"non-controller is not allowed.", Mixin.detect(factory.PrototypeMixin));
}

/**
Expand Down
37 changes: 37 additions & 0 deletions packages/ember-runtime/tests/controllers/controller_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import Controller from "ember-runtime/controllers/controller";
import Service from "ember-runtime/system/service";
import ObjectController from "ember-runtime/controllers/object_controller";
import ArrayController from "ember-runtime/controllers/array_controller";
import {
objectControllerDeprecation
} from "ember-runtime/controllers/object_controller";
Expand Down Expand Up @@ -222,6 +223,42 @@ QUnit.test("controllers can be injected into controllers", function() {
equal(postsController, postController.get('postsController'), "controller.posts is injected");
});

QUnit.test("controllers can be injected into ObjectControllers", function() {
var registry = new Registry();
var container = registry.container();

registry.register('controller:post', Controller.extend({
postsController: inject.controller('posts')
}));

registry.register('controller:posts', ObjectController.extend());

var postController = container.lookup('controller:post');
var postsController;
expectDeprecation(function() {
postsController = container.lookup('controller:posts');
}, objectControllerDeprecation);

equal(postsController, postController.get('postsController'), "controller.posts is injected");
});

QUnit.test("controllers can be injected into ArrayControllers", function() {
var registry = new Registry();
var container = registry.container();

registry.register('controller:post', Controller.extend({
postsController: inject.controller('posts')
}));

registry.register('controller:posts', ArrayController.extend());

var postController = container.lookup('controller:post');
var postsController = container.lookup('controller:posts');

equal(postsController, postController.get('postsController'), "controller.posts is injected");
});


QUnit.test("services can be injected into controllers", function() {
var registry = new Registry();
var container = registry.container();
Expand Down

0 comments on commit 5e39827

Please sign in to comment.