diff --git a/Sources/MessagingInApp/MessagingInAppImplementation.swift b/Sources/MessagingInApp/MessagingInAppImplementation.swift index 26e2881e8..e7e449a6c 100644 --- a/Sources/MessagingInApp/MessagingInAppImplementation.swift +++ b/Sources/MessagingInApp/MessagingInAppImplementation.swift @@ -99,13 +99,11 @@ extension MessagingInAppImplementation: GistDelegate { logger.debug("in-app action made. \(action), \(message.describeForLogs)") // a close action does not count as a clicked action. - guard action != "gist://close" else { - return - } - - if let deliveryId = getDeliveryId(from: message) { - // the state of the SDK does not change if adding this queue task isn't successful so ignore result - _ = queue.addTrackInAppDeliveryTask(deliveryId: deliveryId, event: .clicked) + if action != "gist://close" { + if let deliveryId = getDeliveryId(from: message) { + // the state of the SDK does not change if adding this queue task isn't successful so ignore result + _ = queue.addTrackInAppDeliveryTask(deliveryId: deliveryId, event: .clicked) + } } eventListener?.messageActionTaken( diff --git a/Tests/MessagingInApp/MessagingInAppImplementationTest.swift b/Tests/MessagingInApp/MessagingInAppImplementationTest.swift index e181e46d4..be5dc6ca8 100644 --- a/Tests/MessagingInApp/MessagingInAppImplementationTest.swift +++ b/Tests/MessagingInApp/MessagingInAppImplementationTest.swift @@ -167,4 +167,25 @@ class MessagingInAppImplementationTest: UnitTest { messagingInApp.action(message: givenGistMessage, currentRoute: .random, action: .random, name: .random) XCTAssertEqual(eventListenerMock.messageActionTakenCallsCount, 2) } + + func test_eventListeners_givenCloseAction_expectListenerEvent() { + let givenGistMessage = Message.random + let expectedInAppMessage = InAppMessage(gistMessage: givenGistMessage) + let givenCurrentRoute = String.random + let givenAction = "gist://close" + let givenName = String.random + + XCTAssertEqual(eventListenerMock.messageActionTakenCallsCount, 0) + + messagingInApp.action( + message: givenGistMessage, + currentRoute: givenCurrentRoute, + action: givenAction, + name: givenName + ) + XCTAssertEqual(eventListenerMock.messageActionTakenCallsCount, 1) + XCTAssertEqual(eventListenerMock.messageActionTakenReceivedArguments?.message, expectedInAppMessage) + XCTAssertEqual(eventListenerMock.messageActionTakenReceivedArguments?.actionValue, givenAction) + XCTAssertEqual(eventListenerMock.messageActionTakenReceivedArguments?.actionName, givenName) + } }