Skip to content

Commit e48f42c

Browse files
committed
Adding more tests
1 parent fcb4d29 commit e48f42c

3 files changed

Lines changed: 64 additions & 15 deletions

File tree

IFTTT SDK/ConnectButtonController+Public.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ final class LocationEventReporter {
169169
)
170170
}
171171

172+
func reset() {
173+
eventStore.reset()
174+
}
175+
172176
private func process(_ events: [RegionEvent], state: LocationEventStore.EventState, error: EventUploadError?) {
173177
let date = Date()
174178
var locationEvents: [LocationEvent]
@@ -209,7 +213,7 @@ public enum LocationEventKind: String {
209213
case exit = "exit"
210214
}
211215

212-
public enum LocationEvent {
216+
public enum LocationEvent: Equatable {
213217
case reported(event: RegionEvent)
214218
case uploadAttempted(event: RegionEvent, delay: TimeInterval) // The delay between reporting the event and an attempted upload. This is in seconds.
215219
case uploadSuccessful(event: RegionEvent, delay: TimeInterval) // The delay between attempting the event upload and successfully completing the upload. This is in seconds.

SDKHostAppTests/LocationEventReporterTests.swift

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,27 @@ import XCTest
1010

1111
@testable import IFTTTConnectSDK
1212

13-
class LocationEventReporterTests {
13+
class LocationEventReporterTests: XCTestCase {
1414
private let locationEventReporter = LocationEventReporter(eventStore: .init())
15+
16+
override func tearDown() {
17+
super.tearDown()
18+
locationEventReporter.closure = nil
19+
locationEventReporter.reset()
20+
}
21+
22+
23+
func testRecordRegionEvent() {
24+
let recordRegionEventExpectation = expectation(description: "Expect a region event inside closure.")
25+
let regionEvent = RegionEvent(kind: .entry, triggerSubscriptionId: "1234")
26+
27+
locationEventReporter.closure = { events in
28+
events.forEach {
29+
XCTAssertEqual($0, .reported(event: regionEvent))
30+
}
31+
recordRegionEventExpectation.fulfill()
32+
}
33+
locationEventReporter.recordRegionEvent(regionEvent)
34+
wait(for: [recordRegionEventExpectation], timeout: 1.0, enforceOrder: true)
35+
}
1536
}

SDKHostAppTests/LocationEventStoreTests.swift

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -76,25 +76,49 @@ class LocationEventStoreTests: XCTestCase {
7676

7777
[event1, event2].forEach {
7878
let record = eventStore[$0.recordId.uuidString]
79-
XCTAssertNotNil(record)
80-
XCTAssertEqual(record?.date, date)
81-
XCTAssertEqual(record?.state, .recorded)
79+
runAsserts(record: record, uploadDate: date, correctState: .recorded)
8280
}
8381
}
8482

85-
func testTrackEventUploadEvent() {
86-
let date = Date()
83+
private func runAsserts(
84+
record: LocationEventStore.RecordedEvent?,
85+
uploadDate: Date,
86+
correctState: LocationEventStore.EventState
87+
) {
88+
XCTAssertNotNil(record)
89+
XCTAssertEqual(record?.date, uploadDate)
90+
XCTAssertEqual(record?.state, correctState)
91+
}
92+
93+
func testTrackEventUploadStartEvent() {
8794
let event1 = RegionEvent(kind: .entry, triggerSubscriptionId: "1234")
8895
let event2 = RegionEvent(kind: .exit, triggerSubscriptionId: "1234")
96+
let event1UploadStartDate = Date()
97+
let event2UploadStartDate = Date(timeIntervalSinceNow: 2.0)
8998

90-
eventStore.trackRecordedEvent(event1, at: date)
91-
eventStore.trackRecordedEvent(event2, at: date)
99+
eventStore.trackEventUploadStart(event1, at: event1UploadStartDate)
100+
eventStore.trackEventUploadStart(event2, at: event2UploadStartDate)
92101

93-
[event1, event2].forEach {
94-
let record = eventStore[$0.recordId.uuidString]
95-
XCTAssertNotNil(record)
96-
XCTAssertEqual(record?.date, date)
97-
XCTAssertEqual(record?.state, .recorded)
98-
}
102+
let event1Record = eventStore[event1.recordId.uuidString]
103+
let event2Record = eventStore[event2.recordId.uuidString]
104+
105+
runAsserts(record: event1Record, uploadDate: event1UploadStartDate, correctState: .uploadStart)
106+
runAsserts(record: event2Record, uploadDate: event2UploadStartDate, correctState: .uploadStart)
107+
}
108+
109+
func testTrackEventUploadNetworkErrorEvent() {
110+
let event1 = RegionEvent(kind: .entry, triggerSubscriptionId: "1234")
111+
let event2 = RegionEvent(kind: .exit, triggerSubscriptionId: "1234")
112+
let event1ErrorDate = Date()
113+
let event2ErrorDate = Date(timeIntervalSinceNow: 2.0)
114+
115+
eventStore.trackEventFailedUpload(event1, error: .networkError, at: event1ErrorDate)
116+
eventStore.trackEventFailedUpload(event2, error: .networkError, at: event2ErrorDate)
117+
118+
let event1Record = eventStore[event1.recordId.uuidString]
119+
let event2Record = eventStore[event2.recordId.uuidString]
120+
121+
runAsserts(record: event1Record, uploadDate: event1ErrorDate, correctState: .uploadError)
122+
runAsserts(record: event2Record, uploadDate: event2ErrorDate, correctState: .uploadError)
99123
}
100124
}

0 commit comments

Comments
 (0)