@@ -77,7 +77,11 @@ class IntegrationTest: XCTestCase {
7777 ClickstreamAnalytics . Item. ITEM_CATEGORY: " book " ,
7878 ClickstreamAnalytics . Item. PRICE: 99.9
7979 ]
80- ClickstreamAnalytics . recordEvent ( " testEvent " , [ " id " : 123 ] , [ item_book] )
80+ ClickstreamAnalytics . recordEvent ( " testEvent " ,
81+ [ " id " : 123 ,
82+ ClickstreamAnalytics . Attr. VALUE: 99.9 ,
83+ ClickstreamAnalytics . Attr. CURRENCY: " USD " ] ,
84+ [ item_book] )
8185 Thread . sleep ( forTimeInterval: 0.2 )
8286 let testEvent = try getTestEvent ( )
8387 let items = testEvent [ " items " ] as! [ JsonObject ]
@@ -120,7 +124,7 @@ class IntegrationTest: XCTestCase {
120124
121125 func testAddGlobalAttribute( ) throws {
122126 ClickstreamAnalytics . addGlobalAttributes ( [
123- " channel " : " AppStore " ,
127+ ClickstreamAnalytics . Attr . APP_INSTALL_CHANNEL : " App Store " ,
124128 " level " : 5.1 ,
125129 " class " : 5 ,
126130 " isOpenNotification " : true
@@ -130,26 +134,53 @@ class IntegrationTest: XCTestCase {
130134
131135 let testEvent = try getTestEvent ( )
132136 let eventAttribute = testEvent [ " attributes " ] as! [ String : Any ]
133- XCTAssertEqual ( " AppStore " , eventAttribute [ " channel " ] as! String )
137+ XCTAssertEqual ( " App Store " , eventAttribute [ ClickstreamAnalytics . Attr . APP_INSTALL_CHANNEL ] as! String )
134138 XCTAssertEqual ( 5.1 , eventAttribute [ " level " ] as! Double )
135139 XCTAssertEqual ( 5 , eventAttribute [ " class " ] as! Int )
136140 XCTAssertEqual ( true , eventAttribute [ " isOpenNotification " ] as! Bool )
137141 }
138142
143+ func testAddGlobalAttributeForTrafficSource( ) throws {
144+ ClickstreamAnalytics . addGlobalAttributes ( [
145+ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_SOURCE: " amazon " ,
146+ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_MEDIUM: " cpc " ,
147+ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_CAMPAIGN: " summer_promotion " ,
148+ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_CAMPAIGN_ID: " summer_promotion_01 " ,
149+ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_TERM: " running_shoes " ,
150+ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_CONTENT: " banner_ad_1 " ,
151+ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_CLID: " amazon_ad_123 " ,
152+ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_CLID_PLATFORM: " amazon_ads " ,
153+ ClickstreamAnalytics . Attr. APP_INSTALL_CHANNEL: " App Store "
154+ ] )
155+ ClickstreamAnalytics . recordEvent ( " testEvent " )
156+ Thread . sleep ( forTimeInterval: 0.1 )
157+ let testEvent = try getTestEvent ( )
158+ let eventAttribute = testEvent [ " attributes " ] as! [ String : Any ]
159+ XCTAssertEqual ( " amazon " , eventAttribute [ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_SOURCE] as! String )
160+ XCTAssertEqual ( " cpc " , eventAttribute [ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_MEDIUM] as! String )
161+ XCTAssertEqual ( " summer_promotion " , eventAttribute [ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_CAMPAIGN] as! String )
162+ XCTAssertEqual ( " summer_promotion_01 " , eventAttribute [ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_CAMPAIGN_ID] as! String )
163+ XCTAssertEqual ( " running_shoes " , eventAttribute [ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_TERM] as! String )
164+ XCTAssertEqual ( " banner_ad_1 " , eventAttribute [ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_CONTENT] as! String )
165+ XCTAssertEqual ( " amazon_ad_123 " , eventAttribute [ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_CLID] as! String )
166+ XCTAssertEqual ( " amazon_ads " , eventAttribute [ ClickstreamAnalytics . Attr. TRAFFIC_SOURCE_CLID_PLATFORM] as! String )
167+ XCTAssertEqual ( " App Store " , eventAttribute [ ClickstreamAnalytics . Attr. APP_INSTALL_CHANNEL] as! String )
168+ }
169+
139170 func testDeleteGlobalAttribute( ) throws {
140171 ClickstreamAnalytics . addGlobalAttributes ( [
141- " channel " : " AppStore " ,
172+ ClickstreamAnalytics . Attr . APP_INSTALL_CHANNEL : " App Store " ,
142173 " level " : 5.1 ,
143174 " class " : 5 ,
144175 " isOpenNotification " : true
145176 ] )
146- ClickstreamAnalytics . deleteGlobalAttributes ( " channel " )
177+ ClickstreamAnalytics . deleteGlobalAttributes ( ClickstreamAnalytics . Attr . APP_INSTALL_CHANNEL )
147178 ClickstreamAnalytics . recordEvent ( " testEvent " )
148179 Thread . sleep ( forTimeInterval: 0.1 )
149180
150181 let testEvent = try getTestEvent ( )
151182 let eventAttribute = testEvent [ " attributes " ] as! [ String : Any ]
152- XCTAssertNil ( eventAttribute [ " channel " ] )
183+ XCTAssertNil ( eventAttribute [ ClickstreamAnalytics . Attr . APP_INSTALL_CHANNEL ] )
153184 XCTAssertEqual ( 5.1 , eventAttribute [ " level " ] as! Double )
154185 XCTAssertEqual ( 5 , eventAttribute [ " class " ] as! Int )
155186 XCTAssertEqual ( true , eventAttribute [ " isOpenNotification " ] as! Bool )
@@ -326,7 +357,9 @@ class IntegrationTest: XCTestCase {
326357 " event_category " : " recommended "
327358 ]
328359 ClickstreamObjc . recordEvent ( " testEvent " ,
329- [ " id " : 123 ] ,
360+ [ " id " : 123 ,
361+ Attr . VALUE: 99.9 ,
362+ Attr . CURRENCY: " USD " ] ,
330363 [ item] )
331364 Thread . sleep ( forTimeInterval: 0.2 )
332365 let testEvent = try getTestEvent ( )
@@ -371,6 +404,34 @@ class IntegrationTest: XCTestCase {
371404 XCTAssertEqual ( true , eventAttribute [ " Successful " ] as! Bool )
372405 }
373406
407+ func testAddTrafficSourceForObjc( ) throws {
408+ let attribute : NSDictionary = [
409+ Attr . TRAFFIC_SOURCE_SOURCE: " amazon " ,
410+ Attr . TRAFFIC_SOURCE_MEDIUM: " cpc " ,
411+ Attr . TRAFFIC_SOURCE_CAMPAIGN: " summer_promotion " ,
412+ Attr . TRAFFIC_SOURCE_CAMPAIGN_ID: " summer_promotion_01 " ,
413+ Attr . TRAFFIC_SOURCE_TERM: " running_shoes " ,
414+ Attr . TRAFFIC_SOURCE_CONTENT: " banner_ad_1 " ,
415+ Attr . TRAFFIC_SOURCE_CLID: " amazon_ad_123 " ,
416+ Attr . TRAFFIC_SOURCE_CLID_PLATFORM: " amazon_ads " ,
417+ Attr . APP_INSTALL_CHANNEL: " App Store "
418+ ]
419+ ClickstreamObjc . addGlobalAttributes ( attribute)
420+ ClickstreamObjc . recordEvent ( " testEvent " )
421+ Thread . sleep ( forTimeInterval: 0.1 )
422+ let testEvent = try getTestEvent ( )
423+ let eventAttribute = testEvent [ " attributes " ] as! [ String : Any ]
424+ XCTAssertNotNil ( eventAttribute [ Attr . TRAFFIC_SOURCE_SOURCE] )
425+ XCTAssertNotNil ( eventAttribute [ Attr . TRAFFIC_SOURCE_MEDIUM] )
426+ XCTAssertNotNil ( eventAttribute [ Attr . TRAFFIC_SOURCE_CAMPAIGN] )
427+ XCTAssertNotNil ( eventAttribute [ Attr . TRAFFIC_SOURCE_CAMPAIGN_ID] )
428+ XCTAssertNotNil ( eventAttribute [ Attr . TRAFFIC_SOURCE_TERM] )
429+ XCTAssertNotNil ( eventAttribute [ Attr . TRAFFIC_SOURCE_CONTENT] )
430+ XCTAssertNotNil ( eventAttribute [ Attr . TRAFFIC_SOURCE_CLID] )
431+ XCTAssertNotNil ( eventAttribute [ Attr . TRAFFIC_SOURCE_CLID_PLATFORM] )
432+ XCTAssertNotNil ( eventAttribute [ Attr . APP_INSTALL_CHANNEL] )
433+ }
434+
374435 func testUserAttributeForObjc( ) throws {
375436 ClickstreamObjc . setUserId ( " 3231 " )
376437 let userAttribute : NSDictionary = [
0 commit comments