diff --git a/Integrationtests/TestTrackEventsToMicro.swift b/Integrationtests/TestTrackEventsToMicro.swift index e5e4d8e9d..3dcddbf35 100644 --- a/Integrationtests/TestTrackEventsToMicro.swift +++ b/Integrationtests/TestTrackEventsToMicro.swift @@ -25,7 +25,7 @@ class TestTrackEventsToMicro: XCTestCase { tracker = Snowplow.createTracker(namespace: "testMicro-" + UUID().uuidString, network: NetworkConfiguration(endpoint: Micro.endpoint), - configurations: [trackerConfig])! + configurations: [trackerConfig]) wait(for: [Micro.reset()], timeout: Micro.timeout) } diff --git a/Sources/Snowplow/Snowplow.swift b/Sources/Snowplow/Snowplow.swift index f8fec0898..b20b0801f 100644 --- a/Sources/Snowplow/Snowplow.swift +++ b/Sources/Snowplow/Snowplow.swift @@ -198,7 +198,7 @@ public class Snowplow: NSObject { /// the tracker. /// - Returns: The tracker instance created. @objc - public class func createTracker(namespace: String, network networkConfiguration: NetworkConfiguration, configurations: [ConfigurationProtocol] = []) -> TrackerController? { + public class func createTracker(namespace: String, network networkConfiguration: NetworkConfiguration, configurations: [ConfigurationProtocol] = []) -> TrackerController { if let serviceProvider = serviceProviderInstances[namespace] { serviceProvider.reset(configurations: configurations + [networkConfiguration]) return serviceProvider.trackerController @@ -234,7 +234,7 @@ public class Snowplow: NSObject { /// collector. /// - configurationBuilder: Swift DSL builder for your configuration objects (e.g, `EmitterConfiguration`, `TrackerConfiguration`) /// - Returns: The tracker instance created. - public class func createTracker(namespace: String, network networkConfiguration: NetworkConfiguration, @ConfigurationBuilder _ configurationBuilder: () -> [ConfigurationProtocol]) -> TrackerController? { + public class func createTracker(namespace: String, network networkConfiguration: NetworkConfiguration, @ConfigurationBuilder _ configurationBuilder: () -> [ConfigurationProtocol]) -> TrackerController { let configurations = configurationBuilder() return createTracker(namespace: namespace, network: networkConfiguration, @@ -361,12 +361,8 @@ public class Snowplow: NSObject { for bundle in bundles { objc_sync_enter(self) if let networkConfiguration = bundle.networkConfiguration { - if let _ = createTracker( - namespace: bundle.namespace, - network: networkConfiguration, - configurations: bundle.configurations) { - namespaces?.append(bundle.namespace) - } + _ = createTracker(namespace: bundle.namespace, network: networkConfiguration, configurations: bundle.configurations) + namespaces?.append(bundle.namespace) } else { // remove tracker if it exists if let tracker = tracker(namespace: bundle.namespace) { diff --git a/Tests/Configurations/TestEmitterConfiguration.swift b/Tests/Configurations/TestEmitterConfiguration.swift index 0abcd88c2..6c32d5571 100644 --- a/Tests/Configurations/TestEmitterConfiguration.swift +++ b/Tests/Configurations/TestEmitterConfiguration.swift @@ -88,7 +88,7 @@ class TestEmitterConfiguration: XCTestCase { let namespace = "testEmitter" + String(describing: Int.random(in: 0..<100)) return Snowplow.createTracker(namespace: namespace, network: networkConfig, - configurations: [trackerConfig, emitterConfig])! + configurations: [trackerConfig, emitterConfig]) } } diff --git a/Tests/Configurations/TestMultipleInstances.swift b/Tests/Configurations/TestMultipleInstances.swift index 7cf3fa36b..5a7a4e400 100644 --- a/Tests/Configurations/TestMultipleInstances.swift +++ b/Tests/Configurations/TestMultipleInstances.swift @@ -25,18 +25,18 @@ class TestMultipleInstances: XCTestCase { func testSingleInstanceIsReconfigurable() { let t1 = Snowplow.createTracker(namespace: "t1", network: NetworkConfiguration(endpoint: "snowplowanalytics.fake")) - XCTAssertEqual(t1?.network?.endpoint, "https://snowplowanalytics.fake/com.snowplowanalytics.snowplow/tp2") + XCTAssertEqual(t1.network?.endpoint, "https://snowplowanalytics.fake/com.snowplowanalytics.snowplow/tp2") let t2 = Snowplow.createTracker(namespace: "t1", network: NetworkConfiguration(endpoint: "snowplowanalytics.fake2")) - XCTAssertEqual(t2?.network?.endpoint, "https://snowplowanalytics.fake2/com.snowplowanalytics.snowplow/tp2") + XCTAssertEqual(t2.network?.endpoint, "https://snowplowanalytics.fake2/com.snowplowanalytics.snowplow/tp2") XCTAssertEqual(["t1"], Snowplow.instancedTrackerNamespaces) XCTAssertTrue(t1 === t2) } func testMultipleInstances() { let t1 = Snowplow.createTracker(namespace: "t1", network: NetworkConfiguration(endpoint: "snowplowanalytics.fake")) - XCTAssertEqual(t1?.network?.endpoint, "https://snowplowanalytics.fake/com.snowplowanalytics.snowplow/tp2") + XCTAssertEqual(t1.network?.endpoint, "https://snowplowanalytics.fake/com.snowplowanalytics.snowplow/tp2") let t2 = Snowplow.createTracker(namespace: "t2", network: NetworkConfiguration(endpoint: "snowplowanalytics.fake2")) - XCTAssertEqual(t2?.network?.endpoint, "https://snowplowanalytics.fake2/com.snowplowanalytics.snowplow/tp2") + XCTAssertEqual(t2.network?.endpoint, "https://snowplowanalytics.fake2/com.snowplowanalytics.snowplow/tp2") XCTAssertFalse(t1 === t2) let expectedNamespaces = Set(["t1", "t2"]) XCTAssertEqual(expectedNamespaces, Set(Snowplow.instancedTrackerNamespaces)) @@ -46,7 +46,7 @@ class TestMultipleInstances: XCTestCase { let t1 = Snowplow.createTracker(namespace: "t1", network: NetworkConfiguration(endpoint: "snowplowanalytics.fake")) _ = Snowplow.createTracker(namespace: "t2", network: NetworkConfiguration(endpoint: "snowplowanalytics.fake2")) let td = Snowplow.defaultTracker() - XCTAssertEqual(t1?.namespace, td?.namespace) + XCTAssertEqual(t1.namespace, td?.namespace) } func testUpdateDefaultTracker() { @@ -54,7 +54,7 @@ class TestMultipleInstances: XCTestCase { let t2 = Snowplow.createTracker(namespace: "t2", network: NetworkConfiguration(endpoint: "snowplowanalytics.fake2")) _ = Snowplow.setAsDefault(tracker: t2) let td = Snowplow.defaultTracker() - XCTAssertEqual(t2?.namespace, td?.namespace) + XCTAssertEqual(t2.namespace, td?.namespace) } func testRemoveTracker() { diff --git a/Tests/Configurations/TestTrackerConfiguration.swift b/Tests/Configurations/TestTrackerConfiguration.swift index 110fe6cd3..07ebf298a 100644 --- a/Tests/Configurations/TestTrackerConfiguration.swift +++ b/Tests/Configurations/TestTrackerConfiguration.swift @@ -94,8 +94,8 @@ class TestTrackerConfiguration: XCTestCase { let tracker = Snowplow.createTracker(namespace: "namespace", network: networkConfig, configurations: [trackerConfig]) XCTAssertNotNil(tracker) - XCTAssertNotNil(tracker?.emitter) - let url = URL(string: tracker?.network?.endpoint ?? "") + XCTAssertNotNil(tracker.emitter) + let url = URL(string: tracker.network?.endpoint ?? "") XCTAssertNotNil(url) let host = url?.host let scheme = url?.scheme @@ -106,8 +106,8 @@ class TestTrackerConfiguration: XCTestCase { XCTAssertEqual(networkConfig.endpoint, derivedEndpoint) XCTAssertEqual(`protocol`, scheme) - XCTAssertEqual(trackerConfig.appId, tracker?.appId) - XCTAssertEqual("namespace", tracker?.namespace) + XCTAssertEqual(trackerConfig.appId, tracker.appId) + XCTAssertEqual("namespace", tracker.namespace) } func testSessionInitialization() { @@ -120,13 +120,13 @@ class TestTrackerConfiguration: XCTestCase { backgroundTimeoutInSeconds: expectedBackground) let tracker = Snowplow.createTracker(namespace: "namespace", network: networkConfig, configurations: [trackerConfig, sessionConfig]) - let foreground = tracker?.session?.foregroundTimeoutInSeconds ?? 0 - let background = tracker?.session?.backgroundTimeoutInSeconds ?? 0 + let foreground = tracker.session?.foregroundTimeoutInSeconds ?? 0 + let background = tracker.session?.backgroundTimeoutInSeconds ?? 0 XCTAssertEqual(expectedForeground, foreground) XCTAssertEqual(expectedBackground, background) - let foregroundMeasure = (tracker?.session)?.foregroundTimeout - let backgroundMeasure = (tracker?.session)?.backgroundTimeout + let foregroundMeasure = (tracker.session)?.foregroundTimeout + let backgroundMeasure = (tracker.session)?.backgroundTimeout XCTAssertEqual(Measurement(value: Double(expectedForeground), unit: UnitDuration.seconds), foregroundMeasure) XCTAssertEqual(Measurement(value: Double(expectedBackground), unit: UnitDuration.seconds), backgroundMeasure) } @@ -136,11 +136,11 @@ class TestTrackerConfiguration: XCTestCase { let trackerConfig = TrackerConfiguration(appId: "appid") trackerConfig.sessionContext = true var tracker = Snowplow.createTracker(namespace: "namespace", network: networkConfig, configurations: [trackerConfig]) - XCTAssertNotNil(tracker?.session) + XCTAssertNotNil(tracker.session) trackerConfig.sessionContext = false tracker = Snowplow.createTracker(namespace: "namespace", network: networkConfig, configurations: [trackerConfig]) - XCTAssertNil(tracker?.session) + XCTAssertNil(tracker.session) } func testSessionConfigurationCallback() { @@ -157,7 +157,7 @@ class TestTrackerConfiguration: XCTestCase { expectation.fulfill() } - guard let tracker = Snowplow.createTracker(namespace: "namespace", network: networkConfig, configurations: [trackerConfig, sessionConfig]) else { return XCTFail() } + let tracker = Snowplow.createTracker(namespace: "namespace", network: networkConfig, configurations: [trackerConfig, sessionConfig]) _ = tracker.track(Timing(category: "cat", variable: "var", timing: 123)) @@ -185,9 +185,9 @@ class TestTrackerConfiguration: XCTestCase { let tracker = Snowplow.createTracker(namespace: "namespace", network: networkConfig, configurations: [trackerConfig, sessionConfig]) - _ = tracker?.track(Timing(category: "cat", variable: "var", timing: 123)) + _ = tracker.track(Timing(category: "cat", variable: "var", timing: 123)) Thread.sleep(forTimeInterval: 0.1) - tracker?.session?.startNewSession() + tracker.session?.startNewSession() _ = tracker?.track(Timing(category: "cat", variable: "var", timing: 123)) Thread.sleep(forTimeInterval: 0.1) @@ -209,7 +209,7 @@ class TestTrackerConfiguration: XCTestCase { // Track fake event let event = Structured(category: "category", action: "action") - _ = trackerController?.track(event) + _ = trackerController.track(event) for _ in 0..<1 { Thread.sleep(forTimeInterval: 1) } @@ -234,7 +234,7 @@ class TestTrackerConfiguration: XCTestCase { emitterConfiguration.threadPoolSize = 10 let gdprConfiguration = GDPRConfiguration(basis: .consent, documentId: "id", documentVersion: "ver", documentDescription: "desc") let trackerController = Snowplow.createTracker(namespace: "namespace", network: networkConfiguration, configurations: [trackerConfiguration, gdprConfiguration, emitterConfiguration]) - let gdprController = trackerController?.gdpr + let gdprController = trackerController.gdpr // Check gdpr settings XCTAssertEqual(.consent, gdprController?.basisForProcessing) @@ -248,7 +248,7 @@ class TestTrackerConfiguration: XCTestCase { // Check gdpr context added var event = Structured(category: "category", action: "action") - _ = trackerController?.track(event) + _ = trackerController.track(event) for _ in 0..<1 { Thread.sleep(forTimeInterval: 1) } @@ -268,7 +268,7 @@ class TestTrackerConfiguration: XCTestCase { // Check gdpr context not added event = Structured(category: "category", action: "action") - _ = trackerController?.track(event) + _ = trackerController.track(event) for _ in 0..<1 { Thread.sleep(forTimeInterval: 1) } @@ -294,14 +294,14 @@ class TestTrackerConfiguration: XCTestCase { emitterConfiguration.eventStore = eventStore emitterConfiguration.threadPoolSize = 10 let trackerController = Snowplow.createTracker(namespace: "namespace", network: networkConfiguration, configurations: [trackerConfiguration, emitterConfiguration]) - let gdprController = trackerController?.gdpr + let gdprController = trackerController.gdpr // Check gdpr settings XCTAssertFalse(gdprController?.isEnabled ?? false) // Check gdpr context not added var event = Structured(category: "category", action: "action") - _ = trackerController?.track(event) + _ = trackerController.track(event) for _ in 0..<1 { Thread.sleep(forTimeInterval: 1) } @@ -320,7 +320,7 @@ class TestTrackerConfiguration: XCTestCase { // Check gdpr context added event = Structured(category: "category", action: "action") - _ = trackerController?.track(event) + _ = trackerController.track(event) for _ in 0..<1 { Thread.sleep(forTimeInterval: 1) } @@ -349,7 +349,7 @@ class TestTrackerConfiguration: XCTestCase { // Track an event and retrieve tracked context JSON from event store let event = Structured(category: "category", action: "action") - _ = trackerController?.track(event) + _ = trackerController.track(event) for _ in 0..<1 { Thread.sleep(forTimeInterval: 1) } @@ -378,7 +378,7 @@ class TestTrackerConfiguration: XCTestCase { // Track fake event let event = Structured(category: "category", action: "action") - let eventId = trackerController?.track(event) + let eventId = trackerController.track(event) for _ in 0..<1 { Thread.sleep(forTimeInterval: 1) } diff --git a/Tests/Ecommerce/TestEcommerceController.swift b/Tests/Ecommerce/TestEcommerceController.swift index b1727aae1..b8ff6c742 100644 --- a/Tests/Ecommerce/TestEcommerceController.swift +++ b/Tests/Ecommerce/TestEcommerceController.swift @@ -112,7 +112,7 @@ class TestEcommerceController: XCTestCase { return Snowplow.createTracker(namespace: namespace, network: networkConfig, - configurations: [trackerConfig, plugin])! + configurations: [trackerConfig, plugin]) } private func waitForEventsToBeTracked() { diff --git a/Tests/Ecommerce/TestEcommerceEvents.swift b/Tests/Ecommerce/TestEcommerceEvents.swift index f04a9c016..8f03da368 100644 --- a/Tests/Ecommerce/TestEcommerceEvents.swift +++ b/Tests/Ecommerce/TestEcommerceEvents.swift @@ -318,7 +318,7 @@ class TestEcommerceEvents: XCTestCase { return Snowplow.createTracker(namespace: namespace, network: networkConfig, - configurations: [trackerConfig, plugin])! + configurations: [trackerConfig, plugin]) } private func waitForEventsToBeTracked() { diff --git a/Tests/Media/TestMediaController.swift b/Tests/Media/TestMediaController.swift index 211312adf..d3dd0ffb4 100644 --- a/Tests/Media/TestMediaController.swift +++ b/Tests/Media/TestMediaController.swift @@ -459,7 +459,7 @@ class TestMediaController: XCTestCase { return Snowplow.createTracker(namespace: namespace, network: networkConfig, - configurations: [trackerConfig, plugin])! + configurations: [trackerConfig, plugin]) } private func waitForEventsToBeTracked() { diff --git a/Tests/TestEvents.swift b/Tests/TestEvents.swift index 8936975c2..a81a53608 100644 --- a/Tests/TestEvents.swift +++ b/Tests/TestEvents.swift @@ -44,7 +44,7 @@ class TestEvents: XCTestCase { let trackerController = Snowplow.createTracker(namespace: "namespace", network: networkConfiguration, configurations: [trackerConfiguration, emitterConfiguration]) // Track event - _ = trackerController?.track(event) + _ = trackerController.track(event) for _ in 0..<1 { Thread.sleep(forTimeInterval: 1) } @@ -76,7 +76,7 @@ class TestEvents: XCTestCase { let trackerController = Snowplow.createTracker(namespace: "namespace", network: networkConfiguration, configurations: [trackerConfiguration, emitterConfiguration]) // Track event - _ = trackerController?.track(event) + _ = trackerController.track(event) for _ in 0..<1 { Thread.sleep(forTimeInterval: 1) } @@ -112,8 +112,8 @@ class TestEvents: XCTestCase { let trackerController = Snowplow.createTracker(namespace: "namespace", network: networkConfiguration, configurations: [trackerConfiguration, emitterConfiguration]) // Track event - _ = trackerController?.track(deepLink) - let screenViewId = trackerController?.track(screenView) + _ = trackerController.track(deepLink) + let screenViewId = trackerController.track(screenView) for _ in 0..<2 { Thread.sleep(forTimeInterval: 1) } diff --git a/Tests/TestPlugins.swift b/Tests/TestPlugins.swift index b69b2658b..34878e02b 100644 --- a/Tests/TestPlugins.swift +++ b/Tests/TestPlugins.swift @@ -205,7 +205,7 @@ class TestPlugins: XCTestCase { let namespace = "testPlugins" + String(describing: Int.random(in: 0..<100)) return Snowplow.createTracker(namespace: namespace, network: networkConfig, - configurations: configurations + [trackerConfig])! + configurations: configurations + [trackerConfig]) } private func waitForEventsToBeTracked() {