Browse Source

Merge pull request #28 from naxxster/fix-combineLatest-unsubscribe-skip

Fix combineLatest operator subscription to unsubscribe from all subscription
Bjorn Swenson 7 years ago
parent
commit
34c8fee29a
3 changed files with 3 additions and 6 deletions
  1. 1 1
      rx.lua
  2. 1 1
      src/operators/combineLatest.lua
  3. 1 4
      tests/combineLatest.lua

+ 1 - 1
rx.lua

@@ -522,7 +522,7 @@ function Observable:combineLatest(...)
     end
     end
 
 
     return Subscription.create(function ()
     return Subscription.create(function ()
-      for i = 1, #subscription do
+      for i = 1, #sources do
         if subscription[i] then subscription[i]:unsubscribe() end
         if subscription[i] then subscription[i]:unsubscribe() end
       end
       end
     end)
     end)

+ 1 - 1
src/operators/combineLatest.lua

@@ -55,7 +55,7 @@ function Observable:combineLatest(...)
     end
     end
 
 
     return Subscription.create(function ()
     return Subscription.create(function ()
-      for i = 1, #subscription do
+      for i = 1, #sources do
         if subscription[i] then subscription[i]:unsubscribe() end
         if subscription[i] then subscription[i]:unsubscribe() end
       end
       end
     end)
     end)

+ 1 - 4
tests/combineLatest.lua

@@ -5,10 +5,8 @@ describe('combineLatest', function()
   end)
   end)
 
 
   it('unsubscribes from the combined source observables', function()
   it('unsubscribes from the combined source observables', function()
-    local unsubscribeA = spy()
-    local subscriptionA = Rx.Subscription.create(unsubscribeA)
     local observableA = Rx.Observable.create(function(observer)
     local observableA = Rx.Observable.create(function(observer)
-      return subscriptionA
+      return nil
     end)
     end)
 
 
     local unsubscribeB = spy()
     local unsubscribeB = spy()
@@ -19,7 +17,6 @@ describe('combineLatest', function()
 
 
     local subscription = Rx.Observable.combineLatest(observableA, observableB):subscribe()
     local subscription = Rx.Observable.combineLatest(observableA, observableB):subscribe()
     subscription:unsubscribe()
     subscription:unsubscribe()
-    expect(#unsubscribeA).to.equal(1)
     expect(#unsubscribeB).to.equal(1)
     expect(#unsubscribeB).to.equal(1)
   end)
   end)