Skip to content

Commit babe25c

Browse files
committed
Update parsing for blogID and update tests
1 parent 8d6855b commit babe25c

File tree

7 files changed

+51
-25
lines changed

7 files changed

+51
-25
lines changed

Modules/Sources/Fakes/Networking.generated.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,7 @@ extension Networking.JetpackConnectionData {
639639
currentUser: .fake(),
640640
isRegistered: .fake(),
641641
connectionOwner: .fake(),
642-
blogId: .fake()
642+
blogID: .fake()
643643
)
644644
}
645645
}
@@ -648,12 +648,12 @@ extension Networking.JetpackUser {
648648
///
649649
public static func fake() -> Networking.JetpackUser {
650650
.init(
651-
blogId: .fake(),
652651
isConnected: .fake(),
653652
isPrimary: .fake(),
654653
username: .fake(),
655654
wpcomUser: .fake(),
656-
gravatar: .fake()
655+
gravatar: .fake(),
656+
blogID: .fake()
657657
)
658658
}
659659
}

Modules/Sources/Networking/Mapper/JetpackConnectionDataMapper.swift

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,30 +30,29 @@ public struct JetpackConnectionData: Decodable, GeneratedFakeable, GeneratedCopi
3030
public let connectionOwner: String?
3131

3232
/// WP blog ID, available only if site has once connected to Jetpack.
33-
public let blogId: Int64?
33+
public let blogID: Int64?
3434

3535
public init(currentUser: JetpackUser,
3636
isRegistered: Bool?,
3737
connectionOwner: String?,
38-
blogId: Int64?) {
38+
blogID: Int64?) {
3939
self.currentUser = currentUser
4040
self.isRegistered = isRegistered
4141
self.connectionOwner = connectionOwner
42-
self.blogId = blogId
42+
self.blogID = blogID
4343
}
4444

4545
public init(from decoder: Decoder) throws {
4646
let container = try decoder.container(keyedBy: CodingKeys.self)
4747
currentUser = try container.decode(JetpackUser.self, forKey: .currentUser)
4848
isRegistered = try container.decodeIfPresent(Bool.self, forKey: .isRegistered)
49-
connectionOwner = try? container.decode(String.self, forKey: .connectionOwner)
50-
blogId = try? container.decode(Int64.self, forKey: .blogID)
49+
connectionOwner = try? container.decodeIfPresent(String.self, forKey: .connectionOwner)
50+
blogID = currentUser.blogID // moved to data for easier access
5151
}
5252

5353
private enum CodingKeys: String, CodingKey {
5454
case currentUser
5555
case isRegistered
5656
case connectionOwner
57-
case blogID
5857
}
5958
}

Modules/Sources/Networking/Model/Copiable/Models+Copiable.generated.swift

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -999,18 +999,18 @@ extension Networking.JetpackConnectionData {
999999
currentUser: CopiableProp<JetpackUser> = .copy,
10001000
isRegistered: NullableCopiableProp<Bool> = .copy,
10011001
connectionOwner: NullableCopiableProp<String> = .copy,
1002-
blogId: NullableCopiableProp<Int64> = .copy
1002+
blogID: NullableCopiableProp<Int64> = .copy
10031003
) -> Networking.JetpackConnectionData {
10041004
let currentUser = currentUser ?? self.currentUser
10051005
let isRegistered = isRegistered ?? self.isRegistered
10061006
let connectionOwner = connectionOwner ?? self.connectionOwner
1007-
let blogId = blogId ?? self.blogId
1007+
let blogID = blogID ?? self.blogID
10081008

10091009
return Networking.JetpackConnectionData(
10101010
currentUser: currentUser,
10111011
isRegistered: isRegistered,
10121012
connectionOwner: connectionOwner,
1013-
blogId: blogId
1013+
blogID: blogID
10141014
)
10151015
}
10161016
}
@@ -1021,20 +1021,23 @@ extension Networking.JetpackUser {
10211021
isPrimary: CopiableProp<Bool> = .copy,
10221022
username: CopiableProp<String> = .copy,
10231023
wpcomUser: NullableCopiableProp<DotcomUser> = .copy,
1024-
gravatar: NullableCopiableProp<String> = .copy
1024+
gravatar: NullableCopiableProp<String> = .copy,
1025+
blogID: NullableCopiableProp<Int64> = .copy
10251026
) -> Networking.JetpackUser {
10261027
let isConnected = isConnected ?? self.isConnected
10271028
let isPrimary = isPrimary ?? self.isPrimary
10281029
let username = username ?? self.username
10291030
let wpcomUser = wpcomUser ?? self.wpcomUser
10301031
let gravatar = gravatar ?? self.gravatar
1032+
let blogID = blogID ?? self.blogID
10311033

10321034
return Networking.JetpackUser(
10331035
isConnected: isConnected,
10341036
isPrimary: isPrimary,
10351037
username: username,
10361038
wpcomUser: wpcomUser,
1037-
gravatar: gravatar
1039+
gravatar: gravatar,
1040+
blogID: blogID
10381041
)
10391042
}
10401043
}

Modules/Sources/Networking/Model/JetpackUser.swift

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,22 @@ public struct JetpackUser: Decodable, GeneratedFakeable, GeneratedCopiable {
1919
/// Gravatar link of the user
2020
public let gravatar: String?
2121

22+
/// WP blog ID, available only if site has once connected to Jetpack.
23+
public let blogID: Int64?
24+
2225
/// Member-wise initializer
23-
public init(isConnected: Bool, isPrimary: Bool, username: String, wpcomUser: DotcomUser?, gravatar: String?) {
26+
public init(isConnected: Bool,
27+
isPrimary: Bool,
28+
username: String,
29+
wpcomUser: DotcomUser?,
30+
gravatar: String?,
31+
blogID: Int64?) {
2432
self.isConnected = isConnected
2533
self.isPrimary = isPrimary
2634
self.username = username
2735
self.wpcomUser = wpcomUser
2836
self.gravatar = gravatar
37+
self.blogID = blogID
2938
}
3039

3140
public init(from decoder: Decoder) throws {
@@ -35,6 +44,7 @@ public struct JetpackUser: Decodable, GeneratedFakeable, GeneratedCopiable {
3544
username = try container.decode(String.self, forKey: .username)
3645
wpcomUser = try? container.decode(DotcomUser.self, forKey: .wpcomUser)
3746
gravatar = try? container.decode(String.self, forKey: .gravatar)
47+
blogID = try? container.decodeIfPresent(Int64.self, forKey: .blogId)
3848
}
3949
}
4050

@@ -48,5 +58,6 @@ private extension JetpackUser {
4858
case username
4959
case wpcomUser
5060
case gravatar
61+
case blogId
5162
}
5263
}

Modules/Tests/NetworkingTests/Mapper/JetpackUserMapperTests.swift renamed to Modules/Tests/NetworkingTests/Mapper/JetpackConnectionDataMapperTests.swift

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@ import XCTest
44

55
/// JetpackUserMapper Unit Tests
66
///
7-
final class JetpackUserMapperTests: XCTestCase {
7+
final class JetpackConnectionDataMapperTests: XCTestCase {
88

99
func test_all_fields_are_parsed_properly_when_user_is_connected() throws {
1010
// Given
11-
let user = try mapUserFromMockResponse()
11+
let data = try mapUserFromMockResponse()
12+
let user = data.currentUser
1213
let wpcomUser = try XCTUnwrap(user.wpcomUser)
1314

1415
// Then
16+
XCTAssertEqual(data.isRegistered, true)
17+
XCTAssertEqual(data.connectionOwner, "testuser")
18+
XCTAssertEqual(data.blogID, 1244634)
19+
1520
XCTAssertEqual(user.username, "admin")
1621
XCTAssertEqual(user.gravatar, "<img alt='' src='http://2.gravatar.com/avatar/5e1a8fhjd'/>")
1722
XCTAssertTrue(user.isPrimary)
@@ -26,9 +31,14 @@ final class JetpackUserMapperTests: XCTestCase {
2631

2732
func test_all_fields_are_parsed_properly_when_user_is_not_connected() throws {
2833
// Given
29-
let user = try mapNotConnectedUserFromMockResponse()
34+
let data = try mapNotConnectedUserFromMockResponse()
35+
let user = data.currentUser
3036

3137
// Then
38+
XCTAssertNil(data.isRegistered)
39+
XCTAssertNil(data.connectionOwner)
40+
XCTAssertNil(data.blogID)
41+
3242
XCTAssertFalse(user.isPrimary)
3343
XCTAssertFalse(user.isConnected)
3444
XCTAssertEqual(user.username, "test")
@@ -37,21 +47,21 @@ final class JetpackUserMapperTests: XCTestCase {
3747
}
3848
}
3949

40-
private extension JetpackUserMapperTests {
41-
func mapUserFromMockResponse() throws -> JetpackUser {
50+
private extension JetpackConnectionDataMapperTests {
51+
func mapUserFromMockResponse() throws -> JetpackConnectionData {
4252
guard let response = Loader.contentsOf("jetpack-connected-user") else {
4353
throw FileNotFoundError()
4454
}
4555

46-
return try JetpackConnectionDataMapper().map(response: response).currentUser
56+
return try JetpackConnectionDataMapper().map(response: response)
4757
}
4858

49-
func mapNotConnectedUserFromMockResponse() throws -> JetpackUser {
59+
func mapNotConnectedUserFromMockResponse() throws -> JetpackConnectionData {
5060
guard let response = Loader.contentsOf("jetpack-user-not-connected") else {
5161
throw FileNotFoundError()
5262
}
5363

54-
return try JetpackConnectionDataMapper().map(response: response).currentUser
64+
return try JetpackConnectionDataMapper().map(response: response)
5565
}
5666

5767
struct FileNotFoundError: Error {}

Modules/Tests/NetworkingTests/Responses/jetpack-connected-user.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"jetpack_connect": "",
1414
"avatar": "http://2.gravatar.com/avatar/5e1a8fhjd"
1515
},
16+
"blogId": 1244634,
1617
"gravatar": "<img alt='' src='http://2.gravatar.com/avatar/5e1a8fhjd'/>",
1718
"permissions": {
1819
"admin_page": true,
@@ -27,5 +28,7 @@
2728
"view_stats": true,
2829
"manage_plugins": true
2930
}
30-
}
31+
},
32+
"connectionOwner": "testuser",
33+
"isRegistered": true
3134
}

WooCommerce/Classes/Authentication/Jetpack Setup/Native Jetpack Setup/JetpackSetupViewModel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ private extension JetpackSetupViewModel {
321321
guard let self else { return }
322322
switch result {
323323
case .success(let connectionData):
324-
guard let connectedEmail = connectionData.user.wpcomUser?.email else {
324+
guard let connectedEmail = connectionData.currentUser.wpcomUser?.email else {
325325
DDLogWarn("⚠️ Cannot find connected WPcom user")
326326
let missingWpcomUserError = NSError(domain: Constants.errorDomain,
327327
code: Constants.errorCodeNoWPComUser,

0 commit comments

Comments
 (0)