@@ -16,6 +16,8 @@ class TrackConversionRequestBuilderTests: XCTestCase {
1616 fileprivate let itemName = " some item name "
1717 fileprivate let customerID = " custIDq3éû qd "
1818 fileprivate let sectionName = " some section name@ "
19+ fileprivate let conversionType = " like "
20+ fileprivate let revenue = 12.45
1921
2022 fileprivate var encodedSearchTerm : String = " "
2123 fileprivate var encodedItemName : String = " "
@@ -38,13 +40,15 @@ class TrackConversionRequestBuilderTests: XCTestCase {
3840 builder. build ( trackData: tracker)
3941 let request = builder. getRequest ( )
4042 let url = request. url!. absoluteString
43+ let payload = try ? JSONSerialization . jsonObject ( with: request. httpBody!, options: [ ] ) as? [ String : Any ]
4144
42- XCTAssertEqual ( request. httpMethod, " GET " )
43- XCTAssertTrue ( url. hasPrefix ( " https://ac.cnstrc.com/autocomplete/ \( encodedSearchTerm) /conversion? " ) )
44- XCTAssertTrue ( url. contains ( " name= \( encodedItemName) " ) , " URL should contain the item id. " )
45- XCTAssertTrue ( url. contains ( " customer_id= \( encodedCustomerID) " ) , " URL should contain the customer ID. " )
45+ XCTAssertEqual ( request. httpMethod, " POST " )
46+ XCTAssertTrue ( url. hasPrefix ( " https://ac.cnstrc.com/v2/behavioral_action/conversion? " ) )
4647 XCTAssertTrue ( url. contains ( " c=cioios- " ) , " URL should contain the version string. " )
4748 XCTAssertTrue ( url. contains ( " key= \( testACKey) " ) , " URL should contain the api key. " )
49+ XCTAssertEqual ( payload ? [ " item_name " ] as? String , itemName)
50+ XCTAssertEqual ( payload ? [ " item_id " ] as? String , customerID)
51+ XCTAssertEqual ( payload ? [ " search_term " ] as? String , searchTerm)
4852 }
4953
5054 func testTrackConversionBuilder_WithCustomBaseURL( ) {
@@ -54,53 +58,82 @@ class TrackConversionRequestBuilderTests: XCTestCase {
5458 builder. build ( trackData: tracker)
5559 let request = builder. getRequest ( )
5660 let url = request. url!. absoluteString
61+ let payload = try ? JSONSerialization . jsonObject ( with: request. httpBody!, options: [ ] ) as? [ String : Any ]
5762
5863 XCTAssertTrue ( url. hasPrefix ( customBaseURL) )
64+ XCTAssertEqual ( payload ? [ " item_name " ] as? String , itemName)
65+ XCTAssertEqual ( payload ? [ " item_id " ] as? String , customerID)
66+ XCTAssertEqual ( payload ? [ " search_term " ] as? String , searchTerm)
5967 }
6068
6169 func testTrackConversionBuilder_WithSectionName( ) {
6270 let tracker = CIOTrackConversionData ( searchTerm: self . searchTerm, itemName: self . itemName, customerID: self . customerID, sectionName: sectionName)
6371 builder. build ( trackData: tracker)
6472 let request = builder. getRequest ( )
6573 let url = request. url!. absoluteString
74+ let payload = try ? JSONSerialization . jsonObject ( with: request. httpBody!, options: [ ] ) as? [ String : Any ]
6675
67- XCTAssertEqual ( request. httpMethod, " GET " )
68- XCTAssertTrue ( url. hasPrefix ( " https://ac.cnstrc.com/autocomplete/ \( encodedSearchTerm) /conversion? " ) )
69- XCTAssertTrue ( url. contains ( " name= \( encodedItemName) " ) , " URL should contain the item id. " )
70- XCTAssertTrue ( url. contains ( " customer_id= \( encodedCustomerID) " ) , " URL should contain the customer ID. " )
71- XCTAssertTrue ( url. contains ( " section= \( encodedSectionName) " ) , " URL should contain the autocomplete section name. " )
76+ XCTAssertEqual ( request. httpMethod, " POST " )
77+ XCTAssertTrue ( url. hasPrefix ( " https://ac.cnstrc.com/v2/behavioral_action/conversion? " ) )
7278 XCTAssertTrue ( url. contains ( " c=cioios- " ) , " URL should contain the version string. " )
79+ XCTAssertTrue ( url. contains ( " section= \( encodedSectionName) " ) , " URL should contain the section. " )
7380 XCTAssertTrue ( url. contains ( " key= \( testACKey) " ) , " URL should contain the api key. " )
81+ XCTAssertEqual ( payload ? [ " section " ] as? String , sectionName)
82+ XCTAssertEqual ( payload ? [ " item_name " ] as? String , itemName)
83+ XCTAssertEqual ( payload ? [ " item_id " ] as? String , customerID)
84+ XCTAssertEqual ( payload ? [ " search_term " ] as? String , searchTerm)
7485 }
7586
76- func testTrackConversionBuilder_WithRevenue ( ) {
77- let tracker = CIOTrackConversionData ( searchTerm: searchTerm, itemName: itemName, customerID: customerID, revenue : 9999 )
87+ func testTrackConversionBuilder_WithConversionType ( ) {
88+ let tracker = CIOTrackConversionData ( searchTerm: self . searchTerm, itemName: self . itemName, customerID: self . customerID, conversionType : self . conversionType )
7889 builder. build ( trackData: tracker)
7990 let request = builder. getRequest ( )
8091 let url = request. url!. absoluteString
92+ let payload = try ? JSONSerialization . jsonObject ( with: request. httpBody!, options: [ ] ) as? [ String : Any ]
8193
82- XCTAssertEqual ( request. httpMethod, " GET " )
83- XCTAssertTrue ( url. hasPrefix ( " https://ac.cnstrc.com/autocomplete/ \( encodedSearchTerm) /conversion? " ) )
84- XCTAssertTrue ( url. contains ( " name= \( encodedItemName) " ) , " URL should contain the item id. " )
85- XCTAssertTrue ( url. contains ( " customer_id= \( encodedCustomerID) " ) , " URL should contain the customer ID. " )
86- XCTAssertTrue ( url. contains ( " revenue=9999.00 " ) , " URL should contain the revenue parameter. " )
94+ XCTAssertEqual ( request. httpMethod, " POST " )
95+ XCTAssertTrue ( url. hasPrefix ( " https://ac.cnstrc.com/v2/behavioral_action/conversion? " ) )
8796 XCTAssertTrue ( url. contains ( " c=cioios- " ) , " URL should contain the version string. " )
8897 XCTAssertTrue ( url. contains ( " key= \( testACKey) " ) , " URL should contain the api key. " )
98+ XCTAssertEqual ( payload ? [ " type " ] as? String , conversionType)
99+ XCTAssertEqual ( payload ? [ " item_name " ] as? String , itemName)
100+ XCTAssertEqual ( payload ? [ " item_id " ] as? String , customerID)
101+ XCTAssertEqual ( payload ? [ " search_term " ] as? String , searchTerm)
89102 }
90103
91- func testTrackConversionBuilder_WithSectionNameAndRevenue ( ) {
92- let tracker = CIOTrackConversionData ( searchTerm: searchTerm, itemName: itemName, customerID: customerID, sectionName : sectionName , revenue: 12.345 )
104+ func testTrackConversionBuilder_WithRevenue ( ) {
105+ let tracker = CIOTrackConversionData ( searchTerm: searchTerm, itemName: itemName, customerID: customerID, revenue: revenue )
93106 builder. build ( trackData: tracker)
94107 let request = builder. getRequest ( )
95108 let url = request. url!. absoluteString
109+ let payload = try ? JSONSerialization . jsonObject ( with: request. httpBody!, options: [ ] ) as? [ String : Any ]
96110
97- XCTAssertEqual ( request. httpMethod, " GET " )
98- XCTAssertTrue ( url. hasPrefix ( " https://ac.cnstrc.com/autocomplete/ \( encodedSearchTerm) /conversion? " ) )
99- XCTAssertTrue ( url. contains ( " name= \( encodedItemName) " ) , " URL should contain the item id. " )
100- XCTAssertTrue ( url. contains ( " customer_id= \( encodedCustomerID) " ) , " URL should contain the customer ID. " )
101- XCTAssertTrue ( url. contains ( " section= \( encodedSectionName) " ) , " URL should contain the autocomplete section name. " )
102- XCTAssertTrue ( url. contains ( " revenue=12.35 " ) , " URL should contain the revenue parameter. " )
111+ XCTAssertEqual ( request. httpMethod, " POST " )
112+ XCTAssertTrue ( url. hasPrefix ( " https://ac.cnstrc.com/v2/behavioral_action/conversion? " ) )
113+ XCTAssertTrue ( url. contains ( " c=cioios- " ) , " URL should contain the version string. " )
114+ XCTAssertTrue ( url. contains ( " key= \( testACKey) " ) , " URL should contain the api key. " )
115+ XCTAssertEqual ( payload ? [ " revenue " ] as? String , String ( revenue) )
116+ XCTAssertEqual ( payload ? [ " item_name " ] as? String , itemName)
117+ XCTAssertEqual ( payload ? [ " item_id " ] as? String , customerID)
118+ XCTAssertEqual ( payload ? [ " search_term " ] as? String , searchTerm)
119+ }
120+
121+ func testTrackConversionBuilder_WithSectionNameRevenueAndType( ) {
122+ let tracker = CIOTrackConversionData ( searchTerm: searchTerm, itemName: itemName, customerID: customerID, sectionName: sectionName, revenue: revenue, conversionType: conversionType)
123+ builder. build ( trackData: tracker)
124+ let request = builder. getRequest ( )
125+ let url = request. url!. absoluteString
126+ let payload = try ? JSONSerialization . jsonObject ( with: request. httpBody!, options: [ ] ) as? [ String : Any ]
127+ XCTAssertEqual ( request. httpMethod, " POST " )
128+ XCTAssertTrue ( url. hasPrefix ( " https://ac.cnstrc.com/v2/behavioral_action/conversion? " ) )
103129 XCTAssertTrue ( url. contains ( " c=cioios- " ) , " URL should contain the version string. " )
130+ XCTAssertTrue ( url. contains ( " section= \( encodedSectionName) " ) , " URL should contain the section. " )
104131 XCTAssertTrue ( url. contains ( " key= \( testACKey) " ) , " URL should contain the api key. " )
132+ XCTAssertEqual ( payload ? [ " revenue " ] as? String , String ( revenue) )
133+ XCTAssertEqual ( payload ? [ " type " ] as? String , conversionType)
134+ XCTAssertEqual ( payload ? [ " section " ] as? String , sectionName)
135+ XCTAssertEqual ( payload ? [ " item_name " ] as? String , itemName)
136+ XCTAssertEqual ( payload ? [ " item_id " ] as? String , customerID)
137+ XCTAssertEqual ( payload ? [ " search_term " ] as? String , searchTerm)
105138 }
106139}
0 commit comments