From 871aa642ccbc54e8e9b61133b9b5d6e5463a7d8a Mon Sep 17 00:00:00 2001 From: Robert Jackson Date: Wed, 25 Feb 2015 09:12:10 -0500 Subject: [PATCH] [BUGFIX beta] Add assertion when calling this.$() in a tagless view. --- packages/ember-views/lib/views/view.js | 1 + .../tests/views/view/jquery_test.js | 27 ++++++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/packages/ember-views/lib/views/view.js b/packages/ember-views/lib/views/view.js index c2f03716d6e..20bf012ed97 100644 --- a/packages/ember-views/lib/views/view.js +++ b/packages/ember-views/lib/views/view.js @@ -938,6 +938,7 @@ var View = CoreView.extend( @return {jQuery} the jQuery object for the DOM node */ $: function(sel) { + Ember.assert('You cannot access this.$() on a component with `tagName: \'\'` specified.', this.tagName !== ''); return this.currentState.$(this, sel); }, diff --git a/packages/ember-views/tests/views/view/jquery_test.js b/packages/ember-views/tests/views/view/jquery_test.js index 906792de253..143f2c4b9f5 100644 --- a/packages/ember-views/tests/views/view/jquery_test.js +++ b/packages/ember-views/tests/views/view/jquery_test.js @@ -1,6 +1,6 @@ import { get } from "ember-metal/property_get"; -import run from "ember-metal/run_loop"; import EmberView from "ember-views/views/view"; +import { runAppend, runDestroy } from "ember-runtime/tests/utils"; var view; QUnit.module("EmberView#$", { @@ -11,15 +11,11 @@ QUnit.module("EmberView#$", { } }).create(); - run(function() { - view.append(); - }); + runAppend(view); }, teardown: function() { - run(function() { - view.destroy(); - }); + runDestroy(view); } }); @@ -29,9 +25,7 @@ QUnit.test("returns undefined if no element", function() { equal(view.$(), undefined, 'should return undefined'); equal(view.$('span'), undefined, 'should undefined if filter passed'); - run(function() { - view.destroy(); - }); + runDestroy(view); }); QUnit.test("returns jQuery object selecting element if provided", function() { @@ -57,3 +51,16 @@ QUnit.test("returns empty jQuery object if filter passed that does not match ite equal(jquery.length, 0, 'view.$(body) should have no elements'); }); +QUnit.test("asserts for tagless views", function() { + var view = EmberView.create({ + tagName: '' + }); + + runAppend(view); + + expectAssertion(function() { + view.$(); + }, /You cannot access this.\$\(\) on a component with `tagName: \'\'` specified/); + + runDestroy(view); +});