Skip to content

Commit e039d1d

Browse files
committed
Added unit tests for SiteSettingsRemote
1 parent c00cc2e commit e039d1d

File tree

4 files changed

+61
-1
lines changed

4 files changed

+61
-1
lines changed

Networking/Networking.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
74CF5E8421402C04000CED0A /* TopEarnerStatsRemoteTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74CF5E8321402C04000CED0A /* TopEarnerStatsRemoteTests.swift */; };
6262
74D3BD142114FE6900A6E85E /* MIContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74D3BD132114FE6900A6E85E /* MIContainer.swift */; };
6363
74D522B62113607F00042831 /* StatGranularity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74D522B52113607F00042831 /* StatGranularity.swift */; };
64+
74D5BECE217E0F98007B0348 /* SiteSettingsRemoteTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74D5BECD217E0F98007B0348 /* SiteSettingsRemoteTests.swift */; };
6465
74E30951216E8DCE00ABCE4C /* site-visits-alt.json in Resources */ = {isa = PBXBuildFile; fileRef = 74E30950216E8DCE00ABCE4C /* site-visits-alt.json */; };
6566
B505F6CD20BEE37E00BB1B69 /* AccountMapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = B505F6CC20BEE37E00BB1B69 /* AccountMapper.swift */; };
6667
B505F6CF20BEE38B00BB1B69 /* Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = B505F6CE20BEE38B00BB1B69 /* Account.swift */; };
@@ -179,6 +180,7 @@
179180
74CF5E8321402C04000CED0A /* TopEarnerStatsRemoteTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TopEarnerStatsRemoteTests.swift; sourceTree = "<group>"; };
180181
74D3BD132114FE6900A6E85E /* MIContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MIContainer.swift; sourceTree = "<group>"; };
181182
74D522B52113607F00042831 /* StatGranularity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatGranularity.swift; sourceTree = "<group>"; };
183+
74D5BECD217E0F98007B0348 /* SiteSettingsRemoteTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SiteSettingsRemoteTests.swift; sourceTree = "<group>"; };
182184
74E30950216E8DCE00ABCE4C /* site-visits-alt.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "site-visits-alt.json"; sourceTree = "<group>"; };
183185
753D6504FF01F09F6A33B73E /* Pods-Networking.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Networking.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-Networking/Pods-Networking.debug.xcconfig"; sourceTree = "<group>"; };
184186
B505F6CC20BEE37E00BB1B69 /* AccountMapper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountMapper.swift; sourceTree = "<group>"; };
@@ -316,6 +318,7 @@
316318
B505F6D620BEE58800BB1B69 /* AccountRemoteTests.swift */,
317319
B518662920A09C6F00037A38 /* OrdersRemoteTests.swift */,
318320
74AE244C2113704C00CA8C54 /* OrderStatsRemoteTests.swift */,
321+
74D5BECD217E0F98007B0348 /* SiteSettingsRemoteTests.swift */,
319322
74002D6B2118B88200A63C19 /* SiteVisitStatsRemoteTests.swift */,
320323
74CF5E8321402C04000CED0A /* TopEarnerStatsRemoteTests.swift */,
321324
);
@@ -813,6 +816,7 @@
813816
buildActionMask = 2147483647;
814817
files = (
815818
74CF5E8421402C04000CED0A /* TopEarnerStatsRemoteTests.swift in Sources */,
819+
74D5BECE217E0F98007B0348 /* SiteSettingsRemoteTests.swift in Sources */,
816820
74A7B4BC217A807400E85A8B /* SiteSettingsMapperTests.swift in Sources */,
817821
74AE244D2113704C00CA8C54 /* OrderStatsRemoteTests.swift in Sources */,
818822
B505F6D320BEE3A500BB1B69 /* AccountMapperTests.swift in Sources */,

Networking/Networking/Model/SiteSetting.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ public struct SiteSetting: Decodable {
3838
var value = ""
3939
if let stringValue = try? container.decode(String.self, forKey: .value) {
4040
value = stringValue
41+
} else {
42+
DDLogWarn("⚠️ Could not successfully decode SiteSetting value for \(settingID)")
4143
}
4244

4345
self.init(siteID: siteID, settingID: settingID, label: label, description: settingDescription, value: value) // initialize the struct

Networking/Networking/Remote/SiteSettingsRemote.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import Alamofire
66
///
77
public class SiteSettingsRemote: Remote {
88

9-
/// Retrieves all of the gneral `SiteSetting`s for a given site.
9+
/// Retrieves all of the general `SiteSetting`s for a given site.
1010
///
1111
/// - Parameters:
1212
/// - siteID: Site for which we'll fetch the general settings.
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import XCTest
2+
@testable import Networking
3+
4+
5+
/// SiteSettingsRemote Unit Tests
6+
///
7+
class SiteSettingsRemoteTests: XCTestCase {
8+
9+
/// Dummy Network Wrapper
10+
///
11+
let network = MockupNetwork()
12+
13+
/// Dummy Site ID
14+
///
15+
let sampleSiteID = 1234
16+
17+
/// Repeat always!
18+
///
19+
override func setUp() {
20+
network.removeAllSimulatedResponses()
21+
}
22+
23+
/// Verifies that loadGeneralSettings properly parses the sample response.
24+
///
25+
func testLoadGeneralSettingsProperlyReturnsParsedSettings() {
26+
let remote = SiteSettingsRemote(network: network)
27+
let expectation = self.expectation(description: "Load site settings")
28+
29+
network.simulateResponse(requestUrlSuffix: "settings/general", filename: "settings-general")
30+
remote.loadGeneralSettings(for: sampleSiteID) { (siteSettings, error) in
31+
XCTAssertNil(error)
32+
XCTAssertNotNil(siteSettings)
33+
XCTAssertEqual(siteSettings?.count, 20)
34+
expectation.fulfill()
35+
}
36+
37+
wait(for: [expectation], timeout: Constants.expectationTimeout)
38+
}
39+
40+
/// Verifies that loadGeneralSettings properly relays Networking Layer errors.
41+
///
42+
func testLoadGeneralSettingsProperlyRelaysNetwokingErrors() {
43+
let remote = SiteSettingsRemote(network: network)
44+
let expectation = self.expectation(description: "Load site settings contains errors")
45+
46+
remote.loadGeneralSettings(for: sampleSiteID) { (siteSettings, error) in
47+
XCTAssertNil(siteSettings)
48+
XCTAssertNotNil(error)
49+
expectation.fulfill()
50+
}
51+
52+
wait(for: [expectation], timeout: Constants.expectationTimeout)
53+
}
54+
}

0 commit comments

Comments
 (0)