diff options
author | NicoleYarroch <nicole@livio.io> | 2020-06-22 16:12:19 -0400 |
---|---|---|
committer | NicoleYarroch <nicole@livio.io> | 2020-06-22 16:12:19 -0400 |
commit | 80659cf1bb3665619db2c576ea36054418cf322d (patch) | |
tree | c34534dd9389c2f3a0c432464b58031cdd093cc7 | |
parent | 1eac3528e2070c8672b6690925877e4b30192fdd (diff) | |
download | sdl_ios-80659cf1bb3665619db2c576ea36054418cf322d.tar.gz |
Fixed broken unsubscribe method
Signed-off-by: NicoleYarroch <nicole@livio.io>
-rw-r--r-- | SmartDeviceLink/SDLSubscribeButtonManager.m | 12 | ||||
-rw-r--r-- | SmartDeviceLinkTests/SDLSubscribeButtonManagerSpec.m | 27 |
2 files changed, 27 insertions, 12 deletions
diff --git a/SmartDeviceLink/SDLSubscribeButtonManager.m b/SmartDeviceLink/SDLSubscribeButtonManager.m index 5d920eab1..fbe8d5f10 100644 --- a/SmartDeviceLink/SDLSubscribeButtonManager.m +++ b/SmartDeviceLink/SDLSubscribeButtonManager.m @@ -102,7 +102,17 @@ NS_ASSUME_NONNULL_BEGIN return completionHandler(nil); } - [self.subscribeButtonObservers[buttonName] removeObject:observer]; + NSMutableArray *subscribedObservers = self.subscribeButtonObservers[buttonName]; + for (uint i = 0; i < subscribedObservers.count; i += 1) { + SDLSubscribeButtonObserver *subscribedObserver = (SDLSubscribeButtonObserver *)subscribedObservers[i]; + if (subscribedObserver.observer != observer ) { continue; } + [subscribedObservers removeObjectAtIndex:i]; + break; + } + + self.subscribeButtonObservers[buttonName] = (subscribedObservers.count > 0) ? subscribedObservers : nil; + + // [self.subscribeButtonObservers[buttonName] removeObject:observer]; if (self.subscribeButtonObservers[buttonName].count > 0) { return completionHandler(nil); } diff --git a/SmartDeviceLinkTests/SDLSubscribeButtonManagerSpec.m b/SmartDeviceLinkTests/SDLSubscribeButtonManagerSpec.m index 697825f6d..27beeffb4 100644 --- a/SmartDeviceLinkTests/SDLSubscribeButtonManagerSpec.m +++ b/SmartDeviceLinkTests/SDLSubscribeButtonManagerSpec.m @@ -345,17 +345,22 @@ describe(@"subscribe button manager", ^{ }); it(@"should unsubscribe the observer if there are multiple observers subscribed to the button", ^{ -// id subscriptionID1 = [testManager subscribeButton:testButtonName withUpdateHandler:testUpdateHandler1]; -// [testManager subscribeButton:testButtonName withUpdateHandler:testUpdateHandler2]; -// -// [testManager unsubscribeButton:testButtonName withObserver:subscriptionID1 withCompletionHandler:testCompletionHandler1]; -// -// NSArray<SDLSubscribeButtonObserver *> *observers = testManager.subscribeButtonObservers[testButtonName]; -// expect(observers.count).to(equal(1)); -// expect((id)observers[0].updateBlock).to(equal((id)testUpdateHandler2)); -// -// expect(testCompletionHandler1Called).to(beTrue()); -// expect(testConnectionManager.receivedRequests.count).to(equal(1)); + id subscriptionID1 = [testManager subscribeButton:testButtonName withUpdateHandler:testUpdateHandler1]; + id subscriptionID2 = [testManager subscribeButton:testButtonName withUpdateHandler:testUpdateHandler2]; + + [testManager unsubscribeButton:testButtonName withObserver:subscriptionID1 withCompletionHandler:testCompletionHandler1]; + + NSArray<SDLSubscribeButtonObserver *> *observers = testManager.subscribeButtonObservers[testButtonName]; + expect(observers.count).to(equal(1)); + expect((id)observers[0].updateBlock).to(equal((id)testUpdateHandler2)); + + expect(testCompletionHandler1Called).to(beTrue()); + expect(testCompletionHandler2Called).to(beFalse()); + + expect(testConnectionManager.receivedRequests.count).to(equal(1)); + for (SDLRPCMessage *request in testConnectionManager.receivedRequests) { + expect([request isKindOfClass:SDLUnsubscribeButton.class]).to(beFalse()); + } }); |