Skip to content

Commit

Permalink
Fix Ember Infinity Tests (#187)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
hhff authored Oct 17, 2016
1 parent eea29e3 commit e121146
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 3 deletions.
9 changes: 9 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 4 additions & 1 deletion addon/components/infinity-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down
63 changes: 63 additions & 0 deletions config/ember-try.js
Original file line number Diff line number Diff line change
Expand Up @@ -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: {
Expand Down
14 changes: 12 additions & 2 deletions tests/unit/components/infinity-loader-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -88,15 +91,18 @@ 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");
});

test('it throws error when multiple scrollable elements are found', function(assert) {
assert.expect(1);
$(document.body).append("<div/><div/>");
$(document.body).append("<div class='hello'><div/>");
$(document.body).append("<div class='hello'><div/>");

this.subject({scrollable: ".hello"});
assert.throws(function() {
this.render();
}, Error, "Should raise error");
Expand All @@ -114,13 +120,15 @@ 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();

var isAfterRender = false;
component.set('_loadMoreIfNeeded', function() {
if (isAfterRender) {
assert.ok(true);
done();
}
});

Expand All @@ -132,13 +140,15 @@ 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();

var isAfterRender = false;
component.set('_loadMoreIfNeeded', function() {
if (isAfterRender) {
assert.ok(true);
done();
}
});

Expand Down

0 comments on commit e121146

Please sign in to comment.