@@ -3,19 +3,140 @@ import XCTest
33
44final class JetpackConnectionRemoteTests : XCTestCase {
55
6+ private let siteURL = " http://test.com "
7+
68 /// Dummy Network Wrapper
79 ///
8- let network = MockNetwork ( )
10+ private let network = MockNetwork ( )
911
1012 /// Repeat always!
1113 ///
1214 override func setUp( ) {
1315 network. removeAllSimulatedResponses ( )
1416 }
1517
18+ func test_retrieveJetpackPluginDetails_correctly_returns_parsed_plugin( ) throws {
19+ // Given
20+ let remote = JetpackConnectionRemote ( siteURL: siteURL, network: network)
21+ let urlSuffix = " /wp/v2/plugins/jetpack/jetpack "
22+ network. simulateResponse ( requestUrlSuffix: urlSuffix, filename: " site-plugin-without-envelope " )
23+
24+ // When
25+ let result : Result < SitePlugin , Error > = waitFor { promise in
26+ remote. retrieveJetpackPluginDetails { result in
27+ promise ( result)
28+ }
29+ }
30+
31+ // Then
32+ XCTAssertTrue ( result. isSuccess)
33+ let plugin = try XCTUnwrap ( result. get ( ) )
34+ assertEqual ( plugin. plugin, " jetpack/jetpack " )
35+ assertEqual ( plugin. status, . active)
36+ assertEqual ( plugin. name, " Jetpack " )
37+ }
38+
39+ func test_retrieveJetpackPluginDetails_properly_relays_errors( ) {
40+ // Given
41+ let remote = JetpackConnectionRemote ( siteURL: siteURL, network: network)
42+ let urlSuffix = " /wp/v2/plugins/jetpack/jetpack "
43+ let error = NetworkError . unacceptableStatusCode ( statusCode: 500 )
44+ network. simulateError ( requestUrlSuffix: urlSuffix, error: error)
45+
46+ // When
47+ let result : Result < SitePlugin , Error > = waitFor { promise in
48+ remote. retrieveJetpackPluginDetails { result in
49+ promise ( result)
50+ }
51+ }
52+
53+ // Then
54+ XCTAssertTrue ( result. isFailure)
55+ XCTAssertEqual ( result. failure as? NetworkError , error)
56+ }
57+
58+ func test_installJetpackPlugin_correctly_returns_parsed_plugin( ) throws {
59+ // Given
60+ let remote = JetpackConnectionRemote ( siteURL: siteURL, network: network)
61+ let urlSuffix = " /wp/v2/plugins "
62+ network. simulateResponse ( requestUrlSuffix: urlSuffix, filename: " site-plugin-without-envelope " )
63+
64+ // When
65+ let result : Result < SitePlugin , Error > = waitFor { promise in
66+ remote. installJetpackPlugin { result in
67+ promise ( result)
68+ }
69+ }
70+
71+ // Then
72+ XCTAssertTrue ( result. isSuccess)
73+ let plugin = try XCTUnwrap ( result. get ( ) )
74+ assertEqual ( plugin. plugin, " jetpack/jetpack " )
75+ assertEqual ( plugin. status, . active)
76+ assertEqual ( plugin. name, " Jetpack " )
77+ }
78+
79+ func test_installJetpackPlugin_properly_relays_errors( ) {
80+ // Given
81+ let remote = JetpackConnectionRemote ( siteURL: siteURL, network: network)
82+ let urlSuffix = " /wp/v2/plugins "
83+ let error = NetworkError . unacceptableStatusCode ( statusCode: 500 )
84+ network. simulateError ( requestUrlSuffix: urlSuffix, error: error)
85+
86+ // When
87+ let result : Result < SitePlugin , Error > = waitFor { promise in
88+ remote. installJetpackPlugin { result in
89+ promise ( result)
90+ }
91+ }
92+
93+ // Then
94+ XCTAssertTrue ( result. isFailure)
95+ XCTAssertEqual ( result. failure as? NetworkError , error)
96+ }
97+
98+ func test_activateJetpackPlugin_correctly_returns_parsed_plugin( ) throws {
99+ // Given
100+ let remote = JetpackConnectionRemote ( siteURL: siteURL, network: network)
101+ let urlSuffix = " /wp/v2/plugins/jetpack/jetpack "
102+ network. simulateResponse ( requestUrlSuffix: urlSuffix, filename: " site-plugin-without-envelope " )
103+
104+ // When
105+ let result : Result < SitePlugin , Error > = waitFor { promise in
106+ remote. activateJetpackPlugin { result in
107+ promise ( result)
108+ }
109+ }
110+
111+ // Then
112+ XCTAssertTrue ( result. isSuccess)
113+ let plugin = try XCTUnwrap ( result. get ( ) )
114+ assertEqual ( plugin. plugin, " jetpack/jetpack " )
115+ assertEqual ( plugin. status, . active)
116+ assertEqual ( plugin. name, " Jetpack " )
117+ }
118+
119+ func test_activateJetpackPlugin_properly_relays_errors( ) {
120+ // Given
121+ let remote = JetpackConnectionRemote ( siteURL: siteURL, network: network)
122+ let urlSuffix = " /wp/v2/plugins/jetpack/jetpack "
123+ let error = NetworkError . unacceptableStatusCode ( statusCode: 500 )
124+ network. simulateError ( requestUrlSuffix: urlSuffix, error: error)
125+
126+ // When
127+ let result : Result < SitePlugin , Error > = waitFor { promise in
128+ remote. activateJetpackPlugin { result in
129+ promise ( result)
130+ }
131+ }
132+
133+ // Then
134+ XCTAssertTrue ( result. isFailure)
135+ XCTAssertEqual ( result. failure as? NetworkError , error)
136+ }
137+
16138 func test_fetchJetpackConnectionURL_correctly_returns_parsed_url( ) throws {
17139 // Given
18- let siteURL = " http://test.com "
19140 let remote = JetpackConnectionRemote ( siteURL: siteURL, network: network)
20141 let urlSuffix = " /jetpack/v4/connection/url "
21142 network. simulateResponse ( requestUrlSuffix: urlSuffix, filename: " jetpack-connection-url " )
@@ -36,7 +157,6 @@ final class JetpackConnectionRemoteTests: XCTestCase {
36157
37158 func test_fetchJetpackConnectionURL_properly_relays_errors( ) {
38159 // Given
39- let siteURL = " http://test.com "
40160 let remote = JetpackConnectionRemote ( siteURL: siteURL, network: network)
41161 let urlSuffix = " /jetpack/v4/connection/url "
42162 let error = NetworkError . unacceptableStatusCode ( statusCode: 500 )
@@ -56,7 +176,6 @@ final class JetpackConnectionRemoteTests: XCTestCase {
56176
57177 func test_fetchJetpackUser_correctly_returns_parsed_user( ) throws {
58178 // Given
59- let siteURL = " http://test.com "
60179 let remote = JetpackConnectionRemote ( siteURL: siteURL, network: network)
61180 let urlSuffix = " /jetpack/v4/connection/data "
62181 network. simulateResponse ( requestUrlSuffix: urlSuffix, filename: " jetpack-connected-user " )
@@ -77,7 +196,6 @@ final class JetpackConnectionRemoteTests: XCTestCase {
77196
78197 func test_fetchJetpackUser_properly_relays_errors( ) {
79198 // Given
80- let siteURL = " http://test.com "
81199 let remote = JetpackConnectionRemote ( siteURL: siteURL, network: network)
82200 let urlSuffix = " /jetpack/v4/connection/data "
83201 let error = NetworkError . unacceptableStatusCode ( statusCode: 500 )
0 commit comments