diff --git a/app/mixins/polling.coffee b/app/mixins/polling.coffee index 83cdca8d..f68d3fa7 100644 --- a/app/mixins/polling.coffee +++ b/app/mixins/polling.coffee @@ -48,15 +48,13 @@ mixin = Ember.Mixin.create @get('polling').startPollingHook(this) if @pollHook stopPolling: -> - pollModels = @get('pollModels') - return unless pollModels + if pollModels = @get('pollModels') + pollModels = [pollModels] unless Ember.isArray(pollModels) - pollModels = [pollModels] unless Ember.isArray(pollModels) - - pollModels.forEach (property) => - @stopPollingModel(property) - @removeObserver(property, this, 'pollModelDidChange') - Ember.removeBeforeObserver(this, property, this, 'pollModelWillChange') + pollModels.forEach (property) => + @stopPollingModel(property) + @removeObserver(property, this, 'pollModelDidChange') + Ember.removeBeforeObserver(this, property, this, 'pollModelWillChange') @get('polling').stopPollingHook(this) diff --git a/tests/unit/mixins/polling-test.coffee b/tests/unit/mixins/polling-test.coffee index 7b127a8e..1012b42c 100644 --- a/tests/unit/mixins/polling-test.coffee +++ b/tests/unit/mixins/polling-test.coffee @@ -47,6 +47,21 @@ moduleForComponent 'polling-test', 'PollingTestComponent', { pollingChangesHistory = [] } +test 'it properly stops polling hook without any models', -> + component = @subject(pollModels: null) + @append() + + Ember.run -> + component.destroy() + + expected = [ + { type: 'start-hook', source: '' }, + { type: 'stop-hook', source: '' } + ] + + deepEqual pollingChangesHistory, expected + + test 'it works even if one of the model is null', -> component = @subject(model1: { name: 'model1' }) @append()