Skip to content
This repository was archived by the owner on Sep 15, 2025. It is now read-only.

Commit 9174ac4

Browse files
committed
Update tests
1 parent 214ca21 commit 9174ac4

File tree

7 files changed

+57
-14
lines changed

7 files changed

+57
-14
lines changed

Package.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ let package = Package(
1111
targets: [
1212
.binaryTarget(
1313
name: "WordPressKit",
14-
url: "https://github.com/user-attachments/files/19949703/WordPressKit.zip",
15-
checksum: "68359fda96ca0c7f9d98130c19b6246c2aa2dfdd3ede736be5330270f5e7abdd"
14+
url: "https://github.com/user-attachments/files/19949939/WordPressKit.zip",
15+
checksum: "ba06ff0716595023dd6c98b6a5bc74d4abb35bfb668e24026ffd041460f59137"
1616
),
1717
]
1818
)

Sources/WordPressKit/Services/PeopleServiceRemote.swift

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -220,16 +220,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
220220
public var total: Int
221221
public var pages: Int
222222
public var page: Int
223-
public var perPage: Int
224223
public var subscribers: [RemoteSubscriber]
225-
226-
private enum CodingKeys: String, CodingKey {
227-
case total = "total"
228-
case pages = "pages"
229-
case page = "page"
230-
case perPage = "per_page"
231-
case subscribers = "subscribers"
232-
}
233224
}
234225

235226
public func getSubscribers(
@@ -255,10 +246,14 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
255246
if !parameters.filters.isEmpty {
256247
query["filters"] = parameters.filters.map { $0.description }
257248
}
249+
250+
let decoder = JSONDecoder()
251+
decoder.dateDecodingStrategy = JSONDecoder.DateDecodingStrategy.supportMultipleDateFormats
252+
258253
return try await wordPressComRestApi.perform(
259254
.get,
260255
URLString: url,
261-
jsonDecoder: JSONDecoder.apiDecoder,
256+
jsonDecoder: decoder,
262257
type: SubscribersResponse.self
263258
).get().body
264259
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"total": 1,
3+
"pages": 1,
4+
"page": 1,
5+
"per_page": 100,
6+
"subscribers": [
7+
{
8+
"user_id": 1,
9+
"subscription_id": 2,
10+
"email_address": "[email protected]",
11+
"date_subscribed": "2025-02-28T19:36:36+00:00",
12+
"is_email_subscriber": false,
13+
"subscription_status": "Not subscribed",
14+
"avatar": "https://0.gravatar.com/avatar/example.jpg",
15+
"display_name": "Test",
16+
"url": "http://example.wordpress.com"
17+
}
18+
],
19+
"is_owner_subscribed": true
20+
}

Tests/WordPressKitTests/Tests/JSONLoader.swift

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import Foundation
1212
*/
1313
@objc open func loadFile(_ name: String, type: String) -> JSONDictionary? {
1414

15-
let path = Bundle(for: Swift.type(of: self)).path(forResource: name, ofType: type)
15+
let path = JSONLoader.bundle.path(forResource: name, ofType: type)
1616

1717
if let unwrappedPath = path {
1818
return loadFile(unwrappedPath)
@@ -47,4 +47,15 @@ import Foundation
4747
return nil
4848
}
4949
}
50+
51+
public static func data(named name: String, ext: String = "json") throws -> Data {
52+
guard let url = Bundle(for: JSONLoader.self).url(forResource: name, withExtension: ext) else {
53+
throw URLError(.badURL)
54+
}
55+
return try Data(contentsOf: url)
56+
}
57+
58+
private static var bundle: Bundle {
59+
Bundle(for: JSONLoader.self)
60+
}
5061
}

Tests/WordPressKitTests/Tests/MockWordPressComRestApi.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class MockWordPressComRestApi: WordPressComRestApi {
4949
override func perform<T: Decodable>(
5050
_ method: HTTPRequestBuilder.Method,
5151
URLString: String,
52-
parameters: [String: AnyObject]? = nil,
52+
parameters: [String: Any]? = nil,
5353
fulfilling progress: Progress? = nil,
5454
jsonDecoder: JSONDecoder? = nil,
5555
type: T.Type = T.self

Tests/WordPressKitTests/Tests/PeopleServiceRemoteTests.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,4 +795,17 @@ class PeopleServiceRemoteTests: RemoteTestCase, RESTTestable {
795795
waitForExpectations(timeout: timeout, handler: nil)
796796
}
797797

798+
func testDecodeSubscribersResponse() throws {
799+
let data = try JSONLoader.data(named: "site-subscribers-response")
800+
801+
let decoder = JSONDecoder()
802+
decoder.dateDecodingStrategy = JSONDecoder.DateDecodingStrategy.supportMultipleDateFormats
803+
804+
let response = try decoder.decode(PeopleServiceRemote.SubscribersResponse.self, from: data)
805+
806+
XCTAssertEqual(response.total, 1)
807+
808+
let subscriber = try XCTUnwrap(response.subscribers.first)
809+
XCTAssertEqual(subscriber.userID, 1)
810+
}
798811
}

WordPressKit.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
0C363D452C41B468004E241D /* OHHTTPStubs in Frameworks */ = {isa = PBXBuildFile; productRef = 0C363D442C41B468004E241D /* OHHTTPStubs */; };
2525
0C363D472C41B468004E241D /* OHHTTPStubsSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 0C363D462C41B468004E241D /* OHHTTPStubsSwift */; };
2626
0C674E302BF3A91300F3B3D4 /* JetpackAIServiceRemote.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C674E2F2BF3A91300F3B3D4 /* JetpackAIServiceRemote.swift */; };
27+
0C8069A72DC03E85008DFC2F /* site-subscribers-response.json in Resources */ = {isa = PBXBuildFile; fileRef = 0C8069A62DC03E85008DFC2F /* site-subscribers-response.json */; };
2728
0C938A062C416789009BA7B2 /* Secret.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C938A052C416789009BA7B2 /* Secret.swift */; };
2829
0C938A092C4167BC009BA7B2 /* NSString+XMLExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C938A072C4167BB009BA7B2 /* NSString+XMLExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; };
2930
0C938A0A2C4167BC009BA7B2 /* NSString+XMLExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C938A082C4167BB009BA7B2 /* NSString+XMLExtensions.m */; };
@@ -801,6 +802,7 @@
801802
0C3A2A412A2E7BA500FD91D6 /* CHANGELOG.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = "<group>"; };
802803
0C6183C62C420A3700289E73 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = "<group>"; };
803804
0C674E2F2BF3A91300F3B3D4 /* JetpackAIServiceRemote.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JetpackAIServiceRemote.swift; sourceTree = "<group>"; };
805+
0C8069A62DC03E85008DFC2F /* site-subscribers-response.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "site-subscribers-response.json"; sourceTree = "<group>"; };
804806
0C938A052C416789009BA7B2 /* Secret.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Secret.swift; sourceTree = "<group>"; };
805807
0C938A072C4167BB009BA7B2 /* NSString+XMLExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+XMLExtensions.h"; sourceTree = "<group>"; };
806808
0C938A082C4167BB009BA7B2 /* NSString+XMLExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+XMLExtensions.m"; sourceTree = "<group>"; };
@@ -2544,6 +2546,7 @@
25442546
9AEAA772215E71C000876E62 /* site-quick-start-success.json */,
25452547
74D67F0C1F15C2D70010C5ED /* site-roles-auth-failure.json */,
25462548
74D67F0D1F15C2D70010C5ED /* site-roles-bad-json-failure.json */,
2549+
0C8069A62DC03E85008DFC2F /* site-subscribers-response.json */,
25472550
74D67F0E1F15C2D70010C5ED /* site-roles-success.json */,
25482551
D8DB404121EF22B500B8238E /* site-segments-multiple.json */,
25492552
D813437721F6D7DC0060D99A /* site-segments-single.json */,
@@ -3033,6 +3036,7 @@
30333036
C738CAF528622953001BE107 /* qrlogin-validate-expired-401.json in Resources */,
30343037
937250EC267A15060086075F /* stats-referrer-mark-as-spam.json in Resources */,
30353038
F3FF8A23279C954100E5C90F /* site-email-followers-get-success.json in Resources */,
3039+
0C8069A72DC03E85008DFC2F /* site-subscribers-response.json in Resources */,
30363040
465F889A263B09BF00F4C950 /* wp-block-editor-v1-settings-success-ThemeJSON.json in Resources */,
30373041
BA9A7F7F24C6895600925E81 /* plugin-directory-jetpack-beta.json in Resources */,
30383042
E6B0461425E5B6F500DF6F4F /* sites-invites-links-generate.json in Resources */,

0 commit comments

Comments
 (0)