Skip to content
Merged
2 changes: 2 additions & 0 deletions Sources/Segment/Startup.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import Sovran
extension Analytics: Subscriber {

internal func platformStartup() {
add(plugin: StartupQueue(name: StartupQueue.specificName))

// add segment destination plugin unless
// asked not to via configuration.
if configuration.values.autoAddSegmentDestination {
Expand Down
21 changes: 21 additions & 0 deletions Tests/Segment-Tests/Analytics_Tests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ final class Analytics_Tests: XCTestCase {
let analytics = Analytics(configuration: Configuration(writeKey: "test"))
let outputReader = OutputReaderPlugin(name: "outputReader")
analytics.add(plugin: outputReader)

waitUntilStarted(analytics: analytics)

analytics.setDeviceToken("1234")
analytics.track(name: "token check")
Expand All @@ -78,6 +80,8 @@ final class Analytics_Tests: XCTestCase {
let outputReader = OutputReaderPlugin(name: "outputReader")
analytics.add(plugin: outputReader)

waitUntilStarted(analytics: analytics)

let dataToken = UUID().asData()
analytics.registeredForRemoteNotifications(deviceToken: dataToken)
analytics.track(name: "token check")
Expand All @@ -94,6 +98,8 @@ final class Analytics_Tests: XCTestCase {
let outputReader = OutputReaderPlugin(name: "outputReader")
analytics.add(plugin: outputReader)

waitUntilStarted(analytics: analytics)

analytics.track(name: "test track")

let trackEvent: TrackEvent? = outputReader.lastEvent as? TrackEvent
Expand All @@ -106,6 +112,8 @@ final class Analytics_Tests: XCTestCase {
let outputReader = OutputReaderPlugin(name: "outputReader")
analytics.add(plugin: outputReader)

waitUntilStarted(analytics: analytics)

analytics.identify(userId: "brandon", traits: MyTraits(email: "[email protected]"))

let identifyEvent: IdentifyEvent? = outputReader.lastEvent as? IdentifyEvent
Expand All @@ -119,6 +127,8 @@ final class Analytics_Tests: XCTestCase {
let outputReader = OutputReaderPlugin(name: "outputReader")
analytics.add(plugin: outputReader)

waitUntilStarted(analytics: analytics)

analytics.identify(userId: "brandon", traits: MyTraits(email: "[email protected]"))

let identifyEvent: IdentifyEvent? = outputReader.lastEvent as? IdentifyEvent
Expand All @@ -143,6 +153,8 @@ final class Analytics_Tests: XCTestCase {
let outputReader = OutputReaderPlugin(name: "outputReader")
analytics.add(plugin: outputReader)

waitUntilStarted(analytics: analytics)

analytics.screen(screenTitle: "screen1", category: "category1")

let screen1Event: ScreenEvent? = outputReader.lastEvent as? ScreenEvent
Expand All @@ -163,6 +175,8 @@ final class Analytics_Tests: XCTestCase {
let outputReader = OutputReaderPlugin(name: "outputReader")
analytics.add(plugin: outputReader)

waitUntilStarted(analytics: analytics)

analytics.group(groupId: "1234")

let group1Event: GroupEvent? = outputReader.lastEvent as? GroupEvent
Expand All @@ -181,6 +195,8 @@ final class Analytics_Tests: XCTestCase {
let outputReader = OutputReaderPlugin(name: "outputReader")
analytics.add(plugin: outputReader)

waitUntilStarted(analytics: analytics)

analytics.identify(userId: "brandon", traits: MyTraits(email: "[email protected]"))

let identifyEvent: IdentifyEvent? = outputReader.lastEvent as? IdentifyEvent
Expand All @@ -203,6 +219,9 @@ final class Analytics_Tests: XCTestCase {

func testFlush() {
let analytics = Analytics(configuration: Configuration(writeKey: "test"))

waitUntilStarted(analytics: analytics)

analytics.identify(userId: "brandon", traits: MyTraits(email: "[email protected]"))

let currentBatchCount = analytics.storage.eventFiles(includeUnfinished: true).count
Expand All @@ -220,6 +239,8 @@ final class Analytics_Tests: XCTestCase {
let outputReader = OutputReaderPlugin(name: "outputReader")
analytics.add(plugin: outputReader)

waitUntilStarted(analytics: analytics)

analytics.track(name: "whataversion")

let trackEvent: TrackEvent? = outputReader.lastEvent as? TrackEvent
Expand Down
15 changes: 14 additions & 1 deletion Tests/Segment-Tests/Support/TestUtilities.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
//

import Foundation
import Segment
@testable import Segment

extension UUID{
public func asUInt8Array() -> [UInt8]{
Expand Down Expand Up @@ -107,3 +107,16 @@ class OutputReaderPlugin: Plugin {
return event
}
}

func waitUntilStarted(analytics: Analytics?) {
guard let analytics = analytics else { return }
var started = false
while started == false {
if let system: System = analytics.store.currentState() {
if system.started {
started = true
}
}
RunLoop.main.run(until: Date.distantPast)
}
}