Skip to content

Commit 0a5376b

Browse files
feat: adding is_error parameter to screen view events (#87)
* feat: adding is_error parameter to screen view events * fix: remove trailing comma
1 parent e60ef8c commit 0a5376b

5 files changed

Lines changed: 64 additions & 37 deletions

File tree

Sources/GDSAnalytics/Screens/ErrorScreenView.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ public struct ErrorScreenView<Screen: ScreenType>: ScreenViewProtocol, LoggableE
1515
ScreenParameter.reason.rawValue: reason,
1616
ScreenParameter.endpoint.rawValue: endpoint,
1717
ScreenParameter.hash.rawValue: hash,
18-
ScreenParameter.status.rawValue: statusCode
18+
ScreenParameter.status.rawValue: statusCode,
19+
ScreenParameter.isError.rawValue: "true"
1920
]
2021
.compactMapValues(\.?.formattedAsParameter)
2122
}

Sources/GDSAnalytics/Screens/ScreenParameter.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ public enum ScreenParameter: String {
44
case status
55
case hash
66
case id = "screen_id"
7+
case isError = "is_error"
78
}

Sources/GDSAnalytics/Screens/ScreenView.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ public struct ScreenView<Screen: ScreenType>: ScreenViewProtocol {
1515

1616
public var parameters: [String: String] {
1717
[
18-
ScreenParameter.id.rawValue: id
18+
ScreenParameter.id.rawValue: id,
19+
ScreenParameter.isError.rawValue: "false"
1920
].compactMapValues(\.?.formattedAsParameter)
2021
}
2122

Tests/GDSAnalyticsTests/Screens/ErrorScreenViewTests.swift

Lines changed: 45 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,18 @@ final class ErrorScreenViewTests: XCTestCase {
1212

1313
func testEmptyParametersAreRemoved() {
1414
let uuid = UUID().uuidString.lowercased()
15-
15+
1616
let view = ErrorScreenView(id: uuid,
1717
screen: MockScreen.error,
1818
titleKey: "Something went wrong")
1919

20-
XCTAssertEqual(view.parameters, [
21-
"screen_id": uuid
22-
])
20+
XCTAssertEqual(
21+
view.parameters,
22+
[
23+
"screen_id": uuid,
24+
"is_error": "true"
25+
]
26+
)
2327
}
2428

2529
struct MockError: LoggableError {
@@ -31,38 +35,50 @@ final class ErrorScreenViewTests: XCTestCase {
3135

3236
func testParametersForError() {
3337
let uuid = UUID().uuidString.lowercased()
34-
let view = ErrorScreenView(id: uuid,
35-
screen: MockScreen.error,
36-
titleKey: "Something went wrong",
37-
error: MockError())
38+
let view = ErrorScreenView(
39+
id: uuid,
40+
screen: MockScreen.error,
41+
titleKey: "Something went wrong",
42+
error: MockError()
43+
)
3844

3945
XCTAssertEqual(view.title, "something went wrong")
40-
XCTAssertEqual(view.parameters, [
41-
"screen_id": uuid,
42-
"hash": "83766358f64858b51afb745bbdde91bb",
43-
"reason": "server",
44-
"endpoint": "fetchbiometrictoken",
45-
"status": "429"])
46+
XCTAssertEqual(
47+
view.parameters,
48+
[
49+
"screen_id": uuid,
50+
"hash": "83766358f64858b51afb745bbdde91bb",
51+
"reason": "server",
52+
"endpoint": "fetchbiometrictoken",
53+
"status": "429",
54+
"is_error": "true"
55+
]
56+
)
4657
}
4758

4859
func testParametersForValues() {
4960
let uuid = UUID().uuidString.lowercased()
50-
51-
let view = ErrorScreenView(id: uuid,
52-
screen: MockScreen.error,
53-
titleKey: "Something went wrong",
54-
reason: "network",
55-
endpoint: "appInfo",
56-
statusCode: "401",
57-
hash: "83766358f64858b51afb745bbdde91bb"
61+
62+
let view = ErrorScreenView(
63+
id: uuid,
64+
screen: MockScreen.error,
65+
titleKey: "Something went wrong",
66+
reason: "network",
67+
endpoint: "appInfo",
68+
statusCode: "401",
69+
hash: "83766358f64858b51afb745bbdde91bb"
5870
)
5971

60-
XCTAssertEqual(view.parameters, [
61-
"screen_id": uuid,
62-
"reason": "network",
63-
"endpoint": "appinfo",
64-
"status": "401",
65-
"hash": "83766358f64858b51afb745bbdde91bb"
66-
])
72+
XCTAssertEqual(
73+
view.parameters,
74+
[
75+
"screen_id": uuid,
76+
"reason": "network",
77+
"endpoint": "appinfo",
78+
"status": "401",
79+
"hash": "83766358f64858b51afb745bbdde91bb",
80+
"is_error": "true"
81+
]
82+
)
6783
}
6884
}

Tests/GDSAnalyticsTests/Screens/ScreenViewTests.swift

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,26 @@ final class ScreenViewTests: XCTestCase {
1717
screen: MockScreen.welcome,
1818
titleKey: "welcome to this app")
1919

20-
XCTAssertEqual(view.parameters, [
21-
"screen_id": uuid
22-
])
20+
XCTAssertEqual(
21+
view.parameters, [
22+
"screen_id": uuid,
23+
"is_error": "false"
24+
]
25+
)
2326
}
2427

2528

2629
func testParameterTruncation() {
27-
let view = ScreenView(screen: MockScreen.welcome,
28-
titleKey: "Welcome to this app with a really really really really really really really really really really long name")
30+
let view = ScreenView(
31+
screen: MockScreen.welcome,
32+
titleKey: "Welcome to this app with a really really really really really really really really really really long name"
33+
)
2934

3035
XCTAssertEqual(view.title, "welcome to this app with a really really really really really really really really really really lon")
3136

32-
XCTAssertEqual(view.parameters, [:])
37+
XCTAssertEqual(
38+
view.parameters,
39+
["is_error": "false"]
40+
)
3341
}
3442
}

0 commit comments

Comments
 (0)