From e121146b5f91d7782f0bf936ec9451857ef7a3df Mon Sep 17 00:00:00 2001 From: Hugh Francis Date: Mon, 17 Oct 2016 08:23:54 -0700 Subject: [PATCH] Fix Ember Infinity Tests (#187) * Fix Ember Infinity Tests * Adds a slew of Ember Try cases * Adds Try Cases to Travis * View Cleanup changed in Ember 2.8 * Add Ember Data to Ember Try --- .travis.yml | 9 +++ addon/components/infinity-loader.js | 5 +- config/ember-try.js | 63 +++++++++++++++++++ tests/unit/components/infinity-loader-test.js | 14 ++++- 4 files changed, 88 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 17d27e34..a6fb4e1e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,15 @@ env: - EMBER_TRY_SCENARIO=ember-1.11 - EMBER_TRY_SCENARIO=ember-1.12 - EMBER_TRY_SCENARIO=ember-1.13 + - EMBER_TRY_SCENARIO=ember-2.0 + - EMBER_TRY_SCENARIO=ember-2.1 + - EMBER_TRY_SCENARIO=ember-2.2 + - EMBER_TRY_SCENARIO=ember-2.3 + - EMBER_TRY_SCENARIO=ember-2.4 + - EMBER_TRY_SCENARIO=ember-2.5 + - EMBER_TRY_SCENARIO=ember-2.6 + - EMBER_TRY_SCENARIO=ember-2.7 + - EMBER_TRY_SCENARIO=ember-2.8 - EMBER_TRY_SCENARIO=ember-release - EMBER_TRY_SCENARIO=ember-release-ember-data-1.13.1x - EMBER_TRY_SCENARIO=ember-beta diff --git a/addon/components/infinity-loader.js b/addon/components/infinity-loader.js index 2ce90bc4..ab39b949 100644 --- a/addon/components/infinity-loader.js +++ b/addon/components/infinity-loader.js @@ -36,7 +36,10 @@ const InfinityLoaderComponent = Ember.Component.extend({ }, _unbindEvent(eventName) { - this.get('_scrollable').off(`${eventName}.${this.get('guid')}`); + let scrollable = this.get('_scrollable'); + if (scrollable) { + scrollable.off(`${eventName}.${this.get('guid')}`); + } }, _selfOffset() { diff --git a/config/ember-try.js b/config/ember-try.js index 85cbad58..c868d8ed 100644 --- a/config/ember-try.js +++ b/config/ember-try.js @@ -31,6 +31,69 @@ module.exports = { ember: '~1.13.0' } }, + { + name: 'ember-2.0', + dependencies: { + ember: '~2.0.0', + 'ember-data': '~2.0.0' + } + }, + { + name: 'ember-2.1', + dependencies: { + ember: '~2.1.0', + 'ember-data': '~2.1.0' + } + }, + { + name: 'ember-2.2', + dependencies: { + ember: '~2.2.0', + 'ember-data': '~2.2.0' + } + }, + { + name: 'ember-2.3', + dependencies: { + ember: '~2.3.0', + 'ember-data': '~2.3.0' + } + }, + { + name: 'ember-2.4', + dependencies: { + ember: '~2.4.0', + 'ember-data': '~2.4.0' + } + }, + { + name: 'ember-2.5', + dependencies: { + ember: '~2.5.0', + 'ember-data': '~2.5.0' + } + }, + { + name: 'ember-2.6', + dependencies: { + ember: '~2.6.0', + 'ember-data': '~2.6.0' + } + }, + { + name: 'ember-2.7', + dependencies: { + ember: '~2.7.0', + 'ember-data': '~2.7.0' + } + }, + { + name: 'ember-2.8', + dependencies: { + ember: '~2.8.0', + 'ember-data': '~2.8.0' + } + }, { name: 'ember-release', dependencies: { diff --git a/tests/unit/components/infinity-loader-test.js b/tests/unit/components/infinity-loader-test.js index 3297bbb6..9708fe0d 100644 --- a/tests/unit/components/infinity-loader-test.js +++ b/tests/unit/components/infinity-loader-test.js @@ -42,7 +42,10 @@ test('it will not destroy on load unless set', function(assert) { component.set('destroyOnInfinity', true); }); - assert.equal(component._state, 'destroying'); + // In Ember 2.8, there was an optimization that meant tearing + // down views would return them to the preRender state, ready + // to be reinserted. See here: https://github.com/emberjs/ember.js/pull/13648#issuecomment-225334352 + assert.notEqual(component._state, 'inDOM'); }); test('it changes text property', function(assert) { @@ -88,6 +91,7 @@ test('it uses the provided scrollable element', function(assert) { test('it throws error when scrollable element is not found', function(assert) { assert.expect(1); + this.subject({scrollable: "#nonexistent"}); assert.throws(function() { this.render(); }, Error, "Should raise error"); @@ -95,8 +99,10 @@ test('it throws error when scrollable element is not found', function(assert) { test('it throws error when multiple scrollable elements are found', function(assert) { assert.expect(1); - $(document.body).append("
"); + $(document.body).append("
"); + $(document.body).append("
"); + this.subject({scrollable: ".hello"}); assert.throws(function() { this.render(); }, Error, "Should raise error"); @@ -114,6 +120,7 @@ test('it throws error when scrollable is something other than nothing or string' test('it checks if in view on the scroll event', function(assert) { assert.expect(1); + var done = assert.async(); var component = this.subject(); @@ -121,6 +128,7 @@ test('it checks if in view on the scroll event', function(assert) { component.set('_loadMoreIfNeeded', function() { if (isAfterRender) { assert.ok(true); + done(); } }); @@ -132,6 +140,7 @@ test('it checks if in view on the scroll event', function(assert) { test('it checks if in view on the resize event', function(assert) { assert.expect(1); + var done = assert.async(); var component = this.subject(); @@ -139,6 +148,7 @@ test('it checks if in view on the resize event', function(assert) { component.set('_loadMoreIfNeeded', function() { if (isAfterRender) { assert.ok(true); + done(); } });