Skip to content

Commit ea295a1

Browse files
committed
Add WordPressApiValidator tests
1 parent ec040c2 commit ea295a1

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

Networking/Networking.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,7 @@
698698
DEC51B02276AFB35009F3DF4 /* SystemStatus+DropinMustUsePlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEC51B01276AFB34009F3DF4 /* SystemStatus+DropinMustUsePlugin.swift */; };
699699
E12552C526385B05001CEE70 /* ShippingLabelAddressValidationSuccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = E12552C426385B05001CEE70 /* ShippingLabelAddressValidationSuccess.swift */; };
700700
E137619929151C7400FD098F /* error-wp-rest-forbidden.json in Resources */ = {isa = PBXBuildFile; fileRef = E137619829151C7400FD098F /* error-wp-rest-forbidden.json */; };
701+
E137619B2915222100FD098F /* WordPressApiValidatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E137619A2915222100FD098F /* WordPressApiValidatorTests.swift */; };
701702
E13BAD5328F8625600217769 /* InAppPurchasesRemoteTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13BAD5228F8625600217769 /* InAppPurchasesRemoteTests.swift */; };
702703
E16C59B528F8640B007D55BB /* InAppPurchaseOrderResultMapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E16C59B428F8640B007D55BB /* InAppPurchaseOrderResultMapper.swift */; };
703704
E16C59B728F92782007D55BB /* iap-sample-receipt.json in Resources */ = {isa = PBXBuildFile; fileRef = E16C59B628F92782007D55BB /* iap-sample-receipt.json */; };
@@ -1441,6 +1442,7 @@
14411442
DEC51B01276AFB34009F3DF4 /* SystemStatus+DropinMustUsePlugin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SystemStatus+DropinMustUsePlugin.swift"; sourceTree = "<group>"; };
14421443
E12552C426385B05001CEE70 /* ShippingLabelAddressValidationSuccess.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShippingLabelAddressValidationSuccess.swift; sourceTree = "<group>"; };
14431444
E137619829151C7400FD098F /* error-wp-rest-forbidden.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "error-wp-rest-forbidden.json"; sourceTree = "<group>"; };
1445+
E137619A2915222100FD098F /* WordPressApiValidatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordPressApiValidatorTests.swift; sourceTree = "<group>"; };
14441446
E13BAD5228F8625600217769 /* InAppPurchasesRemoteTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InAppPurchasesRemoteTests.swift; sourceTree = "<group>"; };
14451447
E16C59B428F8640B007D55BB /* InAppPurchaseOrderResultMapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InAppPurchaseOrderResultMapper.swift; sourceTree = "<group>"; };
14461448
E16C59B628F92782007D55BB /* iap-sample-receipt.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "iap-sample-receipt.json"; sourceTree = "<group>"; };
@@ -2336,6 +2338,7 @@
23362338
isa = PBXGroup;
23372339
children = (
23382340
B57B1E6921C925280046E764 /* DotcomValidatorTests.swift */,
2341+
E137619A2915222100FD098F /* WordPressApiValidatorTests.swift */,
23392342
);
23402343
path = Validators;
23412344
sourceTree = "<group>";
@@ -3367,6 +3370,7 @@
33673370
74C8F06E20EEC1E800B6EDC9 /* OrderNotesMapperTests.swift in Sources */,
33683371
45ED4F10239E8A54004F1BE3 /* TaxClassListMapperTest.swift in Sources */,
33693372
FE28F6EA26842E49004465C7 /* UserMapperTests.swift in Sources */,
3373+
E137619B2915222100FD098F /* WordPressApiValidatorTests.swift in Sources */,
33703374
020C907F24C7D359001E2BEB /* ProductVariationMapperTests.swift in Sources */,
33713375
74ABA1D5213F26B300FFAD30 /* TopEarnerStatsMapperTests.swift in Sources */,
33723376
74AB5B5121AF426D00859C12 /* SiteAPIRemoteTests.swift in Sources */,

Networking/Networking/Model/WordPressApiError.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Foundation
22

33
/// WordPress API Request Error
44
///
5-
public enum WordPressApiError: Error, Decodable {
5+
public enum WordPressApiError: Error, Decodable, Equatable {
66

77
/// Unknown: Represents an unmapped remote error.
88
///
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import XCTest
2+
@testable import Networking
3+
4+
5+
/// WordPressApiValidator Unit Tests
6+
///
7+
class WordPressApiValidatorTests: XCTestCase {
8+
9+
/// Verifies that the DotcomValidator successfully extracts the Dotcom Error contained within a `Data` instance.
10+
///
11+
func testForbiddenErrorIsProperlyExtractedFromData() {
12+
guard let payloadAsData = Loader.contentsOf("error-wp-rest-forbidden", extension: "json")
13+
else {
14+
return XCTFail()
15+
}
16+
17+
XCTAssertThrowsError(try WordPressApiValidator().validate(data: payloadAsData)) { error in
18+
guard let wpApiError = error as? WordPressApiError else {
19+
return XCTFail()
20+
}
21+
XCTAssertEqual(wpApiError, .unknown(code: "rest_forbidden", message: "Sorry, you are not allowed to do that."))
22+
}
23+
}
24+
}

0 commit comments

Comments
 (0)