Skip to content

Commit 578f987

Browse files
thomaszurkan-optimizelyjaeopt
authored andcommitted
(fix): check revision as well in batch event (#258)
* check revision as well
1 parent 9d37d36 commit 578f987

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

Sources/Extensions/ArrayEventForDispatch+Extension.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ extension Array where Element == EventForDispatch {
2525
var visitors: [Visitor] = [Visitor]()
2626
var url: URL?
2727
var projectId: String?
28+
var revision: String?
2829

2930
let checkUrl = { (event: EventForDispatch) -> Bool in
3031
if url == nil {
@@ -42,11 +43,19 @@ extension Array where Element == EventForDispatch {
4243
return projectId == batchEvent.projectID
4344
}
4445

46+
let checkRevision = { (batchEvent: BatchEvent) -> Bool in
47+
if revision == nil {
48+
revision = batchEvent.revision
49+
return true
50+
}
51+
return revision == batchEvent.revision
52+
}
53+
4554
var firstBatchEvent: BatchEvent?
4655

4756
for event in self {
4857
if let batchEvent = try? JSONDecoder().decode(BatchEvent.self, from: event.body) {
49-
if !checkUrl(event) || !checkProjectId(batchEvent) {
58+
if !checkUrl(event) || !checkProjectId(batchEvent) || !checkRevision(batchEvent) {
5059
return nil
5160
}
5261
visitors.append(contentsOf: batchEvent.visitors)

Tests/OptimizelyTests-Common/EventDispatcherTests_Batch.swift

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ extension EventDispatcherTests_Batch {
109109
}
110110

111111
func testBatchingEventsWhenProjectIdsNotEqual() {
112-
let be1 = makeTestBatchEvent(projectId: nil, visitor: visitorA)
112+
let be1 = makeTestBatchEvent(visitor: visitorA)
113113
let be2 = makeTestBatchEvent(projectId: "99999", visitor: visitorA)
114114

115115
let events: [EventForDispatch] = [
@@ -120,7 +120,20 @@ extension EventDispatcherTests_Batch {
120120
let batch = events.batch()
121121
XCTAssertNil(batch)
122122
}
123-
123+
124+
func testBatchingEventsWhenRevisionNotEqual() {
125+
let be1 = makeTestBatchEvent(visitor: visitorA)
126+
let be2 = makeTestBatchEvent(revision: "99999", visitor: visitorA)
127+
128+
let events: [EventForDispatch] = [
129+
makeEventForDispatch(url: kUrlA, event: be1),
130+
makeEventForDispatch(url: kUrlB, event: be2)
131+
]
132+
133+
let batch = events.batch()
134+
XCTAssertNil(batch)
135+
}
136+
124137
}
125138

126139
// MARK: - FlushEvents
@@ -531,11 +544,12 @@ extension EventDispatcherTests_Batch {
531544
return EventForDispatch(url: URL(string: url), body: data)
532545
}
533546

534-
func makeTestBatchEvent(projectId: String?=nil, visitor: Visitor?=nil) -> BatchEvent {
547+
func makeTestBatchEvent(projectId: String?=nil, revision: String?=nil, visitor: Visitor?=nil) -> BatchEvent {
535548
let testProjectId = projectId ?? kProjectId
536549
let testVisitor = visitor ?? visitorA
550+
let testRevision = revision ?? kRevision
537551

538-
return BatchEvent(revision: kRevision,
552+
return BatchEvent(revision: testRevision,
539553
accountID: kAccountId,
540554
clientVersion: kClientVersion,
541555
visitors: [testVisitor],

0 commit comments

Comments
 (0)