@@ -358,6 +358,7 @@ final class Analytics_Tests: XCTestCase {
358358 }
359359 }
360360
361+ // Test to ensure bundled and unbundled integrations are populated correctly
361362 func testDestinationMetadata( ) {
362363 let analytics = Analytics ( configuration: Configuration ( writeKey: " test " ) )
363364 let mixpanel = AnyDestination ( key: " Mixpanel " )
@@ -393,6 +394,45 @@ final class Analytics_Tests: XCTestCase {
393394 let metadata = trackEvent? . _metadata
394395
395396 XCTAssertEqual ( metadata? . bundled, [ " Mixpanel " ] )
396- XCTAssertEqual ( metadata? . unbundled, [ " Customer.io " , " Amplitude " ] )
397+ XCTAssertEqual ( metadata? . unbundled. sorted ( ) , [ " Amplitude " , " Customer.io " ] )
398+ }
399+
400+ // Test to ensure bundled and active integrations are populated correctly
401+ func testDestinationMetadataUnbundled( ) {
402+ let analytics = Analytics ( configuration: Configuration ( writeKey: " test " ) )
403+ let mixpanel = AnyDestination ( key: " Mixpanel " )
404+ let outputReader = OutputReaderPlugin ( )
405+
406+ // we want the output reader on the segment plugin
407+ // cuz that's the only place the metadata is getting added.
408+ let segmentDest = analytics. find ( pluginType: SegmentDestination . self)
409+ segmentDest? . add ( plugin: outputReader)
410+
411+ analytics. add ( plugin: mixpanel)
412+ var settings = Settings ( writeKey: " 123 " )
413+ let integrations = try ? JSON ( [
414+ " Segment.io " : JSON ( [
415+ " unbundledIntegrations " :
416+ [
417+ " Customer.io "
418+ ]
419+ ] ) ,
420+ " Mixpanel " : JSON ( [ " someKey " : " someVal " ] ) ,
421+ " Amplitude " : JSON ( [ " someKey " : " somVal " ] ) ,
422+ " dest1 " : JSON ( [ " someKey " : " someVal " ] )
423+ ] )
424+ settings. integrations = integrations
425+ analytics. store. dispatch ( action: System . UpdateSettingsAction ( settings: settings) )
426+
427+ waitUntilStarted ( analytics: analytics)
428+
429+
430+ analytics. track ( name: " sampleEvent " )
431+
432+ let trackEvent : TrackEvent ? = outputReader. lastEvent as? TrackEvent
433+ let metadata = trackEvent? . _metadata
434+
435+ XCTAssertEqual ( metadata? . bundled, [ " Mixpanel " ] )
436+ XCTAssertEqual ( metadata? . unbundled. sorted ( ) , [ " Amplitude " , " Customer.io " , " dest1 " ] )
397437 }
398438}
0 commit comments