@@ -6,6 +6,10 @@ import XCTest
66///
77class ReportOrderMapperTests : XCTestCase {
88
9+ /// Sample SiteID
10+ ///
11+ let siteID = 1234
12+
913 /// Verifies that the broken response causes the mapper to return an unknown status
1014 ///
1115 func testBrokenResponseReturnsUnknownStatus( ) {
@@ -16,17 +20,71 @@ class ReportOrderMapperTests: XCTestCase {
1620 /// Verifies that a valid report totals response is properly parsed (YAY!).
1721 ///
1822 func testSampleResponseLoaded( ) {
19- let reportTotals = try ? mapSuccessfulResponse ( )
23+ guard let results = try ? mapSuccessfulResponse ( ) else {
24+ XCTFail ( " Sample order report totals didn't load. " )
25+ return
26+ }
27+
28+ var reportTotals = [ OrderStatusKey: Int] ( )
29+ results. forEach ( { ( orderStatus) in
30+ let status = OrderStatusKey ( rawValue: orderStatus. slug)
31+ reportTotals [ status] = orderStatus. total
32+ } )
33+ let orderStatuses = results
34+
2035 XCTAssertNotNil ( reportTotals)
21- XCTAssertEqual ( reportTotals? . count, 8 )
22- XCTAssertEqual ( reportTotals ? [ . pending] , 123 )
23- XCTAssertEqual ( reportTotals ? [ . processing] , 4 )
24- XCTAssertEqual ( reportTotals ? [ . onHold] , 5 )
25- XCTAssertEqual ( reportTotals ? [ . completed] , 6 )
26- XCTAssertEqual ( reportTotals ? [ . cancelled] , 7 )
27- XCTAssertEqual ( reportTotals ? [ . refunded] , 8 )
28- XCTAssertEqual ( reportTotals ? [ . failed] , 9 )
29- XCTAssertEqual ( reportTotals ? [ OrderStatusKey ( rawValue: " cia-investigation " ) ] , 10 )
36+ XCTAssertEqual ( reportTotals. count, 9 )
37+ XCTAssertEqual ( reportTotals [ . pending] , 123 )
38+ XCTAssertEqual ( reportTotals [ . processing] , 4 )
39+ XCTAssertEqual ( reportTotals [ . onHold] , 5 )
40+ XCTAssertEqual ( reportTotals [ . completed] , 6 )
41+ XCTAssertEqual ( reportTotals [ . cancelled] , 7 )
42+ XCTAssertEqual ( reportTotals [ . refunded] , 8 )
43+ XCTAssertEqual ( reportTotals [ . failed] , 9 )
44+ XCTAssertEqual ( reportTotals [ OrderStatusKey ( rawValue: " cia-investigation " ) ] , 10 )
45+ XCTAssertEqual ( reportTotals [ OrderStatusKey ( rawValue: " pre-ordered " ) ] , 1 )
46+
47+ XCTAssertNotNil ( orderStatuses)
48+ XCTAssertEqual ( orderStatuses. count, 9 )
49+
50+ let ciaOrderStatus = OrderStatus ( name: " CIA Investigation " , siteID: 1234 , slug: " cia-investigation " , total: 10 )
51+ let preorderedOrderStatus = OrderStatus ( name: " Pre ordered " , siteID: 1234 , slug: " pre-ordered " , total: 1 )
52+
53+ XCTAssertEqual ( orderStatuses [ 0 ] . slug, " pending " )
54+ XCTAssertEqual ( orderStatuses [ 0 ] . name, " Pending payment " )
55+ XCTAssertEqual ( orderStatuses [ 0 ] . status, . pending)
56+
57+ XCTAssertEqual ( orderStatuses [ 1 ] . slug, " processing " )
58+ XCTAssertEqual ( orderStatuses [ 1 ] . name, " Processing " )
59+ XCTAssertEqual ( orderStatuses [ 1 ] . status, . processing)
60+
61+ XCTAssertEqual ( orderStatuses [ 2 ] . slug, " on-hold " )
62+ XCTAssertEqual ( orderStatuses [ 2 ] . name, " On hold " )
63+ XCTAssertEqual ( orderStatuses [ 2 ] . status, . onHold)
64+
65+ XCTAssertEqual ( orderStatuses [ 3 ] . slug, " completed " )
66+ XCTAssertEqual ( orderStatuses [ 3 ] . name, " Completed " )
67+ XCTAssertEqual ( orderStatuses [ 3 ] . status, . completed)
68+
69+ XCTAssertEqual ( orderStatuses [ 4 ] . slug, " cancelled " )
70+ XCTAssertEqual ( orderStatuses [ 4 ] . name, " Cancelled " )
71+ XCTAssertEqual ( orderStatuses [ 4 ] . status, . cancelled)
72+
73+ XCTAssertEqual ( orderStatuses [ 5 ] . slug, " refunded " )
74+ XCTAssertEqual ( orderStatuses [ 5 ] . name, " Refunded " )
75+ XCTAssertEqual ( orderStatuses [ 5 ] . status, . refunded)
76+
77+ XCTAssertEqual ( orderStatuses [ 6 ] . slug, " failed " )
78+ XCTAssertEqual ( orderStatuses [ 6 ] . name, " Failed " )
79+ XCTAssertEqual ( orderStatuses [ 6 ] . status, . failed)
80+
81+ XCTAssertEqual ( orderStatuses [ 7 ] . slug, " cia-investigation " )
82+ XCTAssertEqual ( orderStatuses [ 7 ] . name, " CIA Investigation " )
83+ XCTAssertEqual ( orderStatuses [ 7 ] . status, ciaOrderStatus. status)
84+
85+ XCTAssertEqual ( orderStatuses [ 8 ] . slug, " pre-ordered " )
86+ XCTAssertEqual ( orderStatuses [ 8 ] . name, " Pre ordered " )
87+ XCTAssertEqual ( orderStatuses [ 8 ] . status, preorderedOrderStatus. status)
3088 }
3189}
3290
@@ -37,21 +95,21 @@ private extension ReportOrderMapperTests {
3795
3896 /// Returns the ReportOrderMapper output upon receiving `filename` (Data Encoded)
3997 ///
40- func mapOrderStatusResult( from filename: String ) throws -> [ OrderStatusKey : Int ] {
98+ func mapOrderStatusResult( from filename: String ) throws -> [ OrderStatus ] {
4199 let response = Loader . contentsOf ( filename) !
42- let mapper = ReportOrderTotalsMapper ( )
100+ let mapper = ReportOrderTotalsMapper ( siteID : 1234 )
43101 return try mapper. map ( response: response)
44102 }
45103
46104 /// Returns the ReportOrderMapper output upon receiving data from the endpoint
47105 ///
48- func mapSuccessfulResponse( ) throws -> [ OrderStatusKey : Int ] {
106+ func mapSuccessfulResponse( ) throws -> [ OrderStatus ] {
49107 return try mapOrderStatusResult ( from: " report-orders " )
50108 }
51109
52110 /// Returns the ReportOrderMapper output upon receiving a broken response.
53111 ///
54- func mapLoadBrokenResponse( ) throws -> [ OrderStatusKey : Int ] {
112+ func mapLoadBrokenResponse( ) throws -> [ OrderStatus ] {
55113 return try mapOrderStatusResult ( from: " generic_error " )
56114 }
57115}
0 commit comments