Skip to content

Commit 47f87d9

Browse files
authored
fix: the total number of item attributes is limited to 10 (#44)
1 parent 4bb1f7b commit 47f87d9

File tree

2 files changed

+35
-16
lines changed

2 files changed

+35
-16
lines changed

Sources/Clickstream/Dependency/Clickstream/Event/EventChecker.swift

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ class EventChecker {
166166
static func checkItem(currentNumber: Int, item: ClickstreamAttribute) ->
167167
(eventError: EventError, resultItem: ClickstreamAttribute)
168168
{
169+
initItemKeySet()
169170
var resultItem: ClickstreamAttribute = [:]
170171
if currentNumber >= Event.Limit.MAX_NUM_OF_ITEMS {
171172
let itemJsonString = (item as JsonObject).toJsonString()
@@ -253,22 +254,24 @@ class EventChecker {
253254
}
254255

255256
static func initItemKeySet() {
256-
itemKeySet = Set<String>([
257-
ClickstreamAnalytics.Item.ITEM_ID,
258-
ClickstreamAnalytics.Item.ITEM_NAME,
259-
ClickstreamAnalytics.Item.LOCATION_ID,
260-
ClickstreamAnalytics.Item.ITEM_BRAND,
261-
ClickstreamAnalytics.Item.CURRENCY,
262-
ClickstreamAnalytics.Item.PRICE,
263-
ClickstreamAnalytics.Item.QUANTITY,
264-
ClickstreamAnalytics.Item.CREATIVE_NAME,
265-
ClickstreamAnalytics.Item.CREATIVE_SLOT,
266-
ClickstreamAnalytics.Item.ITEM_CATEGORY,
267-
ClickstreamAnalytics.Item.ITEM_CATEGORY2,
268-
ClickstreamAnalytics.Item.ITEM_CATEGORY3,
269-
ClickstreamAnalytics.Item.ITEM_CATEGORY4,
270-
ClickstreamAnalytics.Item.ITEM_CATEGORY5
271-
])
257+
if itemKeySet.isEmpty {
258+
itemKeySet = Set<String>([
259+
ClickstreamAnalytics.Item.ITEM_ID,
260+
ClickstreamAnalytics.Item.ITEM_NAME,
261+
ClickstreamAnalytics.Item.LOCATION_ID,
262+
ClickstreamAnalytics.Item.ITEM_BRAND,
263+
ClickstreamAnalytics.Item.CURRENCY,
264+
ClickstreamAnalytics.Item.PRICE,
265+
ClickstreamAnalytics.Item.QUANTITY,
266+
ClickstreamAnalytics.Item.CREATIVE_NAME,
267+
ClickstreamAnalytics.Item.CREATIVE_SLOT,
268+
ClickstreamAnalytics.Item.ITEM_CATEGORY,
269+
ClickstreamAnalytics.Item.ITEM_CATEGORY2,
270+
ClickstreamAnalytics.Item.ITEM_CATEGORY3,
271+
ClickstreamAnalytics.Item.ITEM_CATEGORY4,
272+
ClickstreamAnalytics.Item.ITEM_CATEGORY5
273+
])
274+
}
272275
}
273276
}
274277

Tests/ClickstreamTests/Clickstream/ClickstreamEventTest.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,22 @@ class ClickstreamEventTest: XCTestCase {
113113
XCTAssertEqual(0, clickstreamEvent.items.count)
114114
}
115115

116+
func testAddItemPrestAndCustomAttributeNotExceedTheLimit() {
117+
var item: ClickstreamAttribute = [
118+
ClickstreamAnalytics.Item.ITEM_ID: 123,
119+
ClickstreamAnalytics.Item.ITEM_NAME: "testName1",
120+
ClickstreamAnalytics.Item.ITEM_BRAND: "Google",
121+
ClickstreamAnalytics.Item.CURRENCY: "CNY",
122+
ClickstreamAnalytics.Item.LOCATION_ID: "1"
123+
]
124+
for i in 0 ..< 10 {
125+
item["custom_attr_\(i)"] = "value_\(i)"
126+
}
127+
clickstreamEvent.addItem(item)
128+
XCTAssertTrue(clickstreamEvent.attribute(forKey: Event.ReservedAttribute.ERROR_CODE) == nil)
129+
XCTAssertEqual(1, clickstreamEvent.items.count)
130+
}
131+
116132
func testAddItemErrorForExceedMaxLengthOfAttributeName() {
117133
let longAttributeKey = String(repeating: "a", count: 51)
118134
let item: ClickstreamAttribute = [

0 commit comments

Comments
 (0)