@@ -886,6 +886,110 @@ class MParticleTestsSwift: XCTestCase {
886886#endif
887887 }
888888
889+ // MARK: - logEvent
890+
891+ func testLogEventCalledLoggerErrorWhenEventIsNil( ) {
892+ mparticle. logEvent ( nil )
893+ XCTAssertEqual ( receivedMessage, " mParticle -> Cannot log nil event! " )
894+ }
895+
896+ func testLogEventCalledLogCustomEvent( ) {
897+ let event = MPEvent ( name: " test " , type: . other) !
898+ mparticle. logEvent ( event)
899+ wait ( for: [ listenerController. onAPICalledExpectation!] , timeout: 0.1 )
900+ XCTAssertEqual ( listenerController. onAPICalledApiName? . description, " logCustomEvent: " )
901+ }
902+
903+ func testLogEventCalledLogCommerceEvent( ) {
904+ let commerceEvent = MPCommerceEvent ( action: . purchase) !
905+ mparticle. logEvent ( commerceEvent)
906+ wait ( for: [ listenerController. onAPICalledExpectation!] , timeout: 0.1 )
907+ XCTAssertEqual ( listenerController. onAPICalledApiName? . description, " logCommerceEvent: " )
908+ }
909+
910+ func testLogEventWithFilterReturningNil_blocksEvent( ) {
911+ let event = MPBaseEvent ( eventType: . other) !
912+
913+ let executor = ExecutorMock ( )
914+ mparticle. setExecutor ( executor)
915+
916+ let backendController = MPBackendControllerMock ( )
917+ mparticle. backendController = backendController
918+
919+ let dataPlanFilter = MPDataPlanFilterMock ( )
920+ dataPlanFilter. transformEventForBaseEventReturnValue = nil
921+ mparticle. dataPlanFilter = dataPlanFilter
922+
923+ mparticle. logEvent ( event)
924+
925+ // Verify listener was called
926+ XCTAssertEqual ( listenerController. onAPICalledApiName? . description, " logEvent: " )
927+ XCTAssertTrue ( listenerController. onAPICalledParameter1 === event)
928+
929+ // Verify backend was called
930+ XCTAssertTrue ( backendController. logBaseEventCalled)
931+ XCTAssertTrue ( backendController. logBaseEventEventParam === event)
932+ let completion = backendController. logBaseEventCompletionHandler!
933+ XCTAssertNotNil ( completion)
934+ completion ( event, . success)
935+
936+ // Verify executor usage
937+ XCTAssertTrue ( executor. executeOnMessageQueueAsync)
938+
939+ // Verify filter transform event
940+ XCTAssertTrue ( dataPlanFilter. transformEventForBaseEventCalled)
941+ XCTAssertTrue ( dataPlanFilter. transformEventForBaseEventParam === event)
942+
943+ // Logger should record the blocked event message
944+ XCTAssertEqual ( receivedMessage, " mParticle -> Blocked base event from kits: \( event) " )
945+ }
946+
947+ func testLogBaseEventWithFilterReturningEvent_forwardsTransformedEvent( ) {
948+ let event = MPBaseEvent ( eventType: . other) !
949+ let transformedEvent = MPBaseEvent ( eventType: . addToCart) !
950+
951+ let executor = ExecutorMock ( )
952+ mparticle. setExecutor ( executor)
953+
954+ let backendController = MPBackendControllerMock ( )
955+ mparticle. backendController = backendController
956+
957+ let dataPlanFilter = MPDataPlanFilterMock ( )
958+ dataPlanFilter. transformEventForBaseEventReturnValue = transformedEvent
959+ mparticle. dataPlanFilter = dataPlanFilter
960+
961+ let kitContainer = MPKitContainerMock ( )
962+ mparticle. setKitContainer ( kitContainer)
963+
964+ mparticle. logEvent ( event)
965+
966+ // Verify listener was called
967+ XCTAssertEqual ( listenerController. onAPICalledApiName? . description, " logEvent: " )
968+ XCTAssertTrue ( listenerController. onAPICalledParameter1 === event)
969+
970+ // Verify backend was called
971+ XCTAssertTrue ( backendController. logBaseEventCalled)
972+ XCTAssertTrue ( backendController. logBaseEventEventParam === event)
973+ let completion = backendController. logBaseEventCompletionHandler!
974+ XCTAssertNotNil ( completion)
975+ completion ( event, . success)
976+
977+ // Verify executor usage
978+ XCTAssertTrue ( executor. executeOnMessageQueueAsync)
979+ XCTAssertTrue ( executor. executeOnMainAsync)
980+
981+ // Verify filter transformed event
982+ XCTAssertTrue ( dataPlanFilter. transformEventForBaseEventCalled)
983+ XCTAssertTrue ( dataPlanFilter. transformEventForBaseEventParam === event)
984+
985+ // Verify kit container forwarded transformed event
986+ XCTAssertTrue ( kitContainer. forwardSDKCallCalled)
987+ XCTAssertEqual ( kitContainer. forwardSDKCallSelectorParam? . description, " logBaseEvent: " )
988+ XCTAssertEqual ( kitContainer. forwardSDKCallMessageTypeParam, . unknown)
989+ XCTAssertTrue ( kitContainer. forwardSDKCallEventParam === transformedEvent)
990+ }
991+
992+
889993 // MARK: - logCustomEvent
890994
891995 func testLogCustomEventWithNilEvent_logsError( ) {
0 commit comments