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

Commit d7ef7d8

Browse files
authored
Merge pull request #39 from wordpress-mobile/feature/quick-start-award
Feature/quick start award
2 parents 623ad04 + b1afb46 commit d7ef7d8

File tree

7 files changed

+74
-3
lines changed

7 files changed

+74
-3
lines changed

Podfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ PODS:
2727
- OHHTTPStubs/Swift (6.1.0):
2828
- OHHTTPStubs/Default
2929
- UIDeviceIdentifier (0.5.0)
30-
- WordPressKit (1.4.1-beta.2):
30+
- WordPressKit (1.4.2-beta.1):
3131
- Alamofire (~> 4.7.3)
3232
- CocoaLumberjack (= 3.4.2)
3333
- NSObject-SafeExpectations (= 0.0.3)
@@ -70,7 +70,7 @@ SPEC CHECKSUMS:
7070
OCMock: ebe9ee1dca7fbed0ff9193ac0b3e2d8862ea56f6
7171
OHHTTPStubs: 1e21c7d2c084b8153fc53d48400d8919d2d432d0
7272
UIDeviceIdentifier: a959a6d4f51036b4180dd31fb26483a820f1cc46
73-
WordPressKit: e71c993dbd909006b7032cb8bed783ecf2907d18
73+
WordPressKit: f520d09ee011f11ee8017aee640025cb017b5612
7474
WordPressShared: fc613aa29351c73677c421daacb36eacf53f100d
7575
wpxmlrpc: bfc572f62ce7ee897f6f38b098d2ba08732ecef4
7676

WordPressKit.podspec

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
Pod::Spec.new do |s|
22
s.name = "WordPressKit"
3-
s.version = "1.4.1"
3+
s.version = "1.4.2-beta.1"
4+
45
s.summary = "WordPressKit offers a clean and simple WordPress.com and WordPress.org API."
56

67
s.description = <<-DESC

WordPressKit.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,8 @@
361361
93F50A441F227CFB00B5BEBA /* UsersServiceRemoteXMLRPCTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93F50A431F227CFB00B5BEBA /* UsersServiceRemoteXMLRPCTests.swift */; };
362362
93F50A471F227F3600B5BEBA /* xmlrpc-response-getprofile.xml in Resources */ = {isa = PBXBuildFile; fileRef = 93F50A451F227F3600B5BEBA /* xmlrpc-response-getprofile.xml */; };
363363
93F50A481F227F3600B5BEBA /* xmlrpc-response-valid-but-unexpected-dictionary.xml in Resources */ = {isa = PBXBuildFile; fileRef = 93F50A461F227F3600B5BEBA /* xmlrpc-response-valid-but-unexpected-dictionary.xml */; };
364+
9AEAA774215E774A00876E62 /* site-quick-start-success.json in Resources */ = {isa = PBXBuildFile; fileRef = 9AEAA772215E71C000876E62 /* site-quick-start-success.json */; };
365+
9AEAA775215E774A00876E62 /* site-quick-start-failure.json in Resources */ = {isa = PBXBuildFile; fileRef = 9AEAA773215E723200876E62 /* site-quick-start-failure.json */; };
364366
9F3E0B9B208732B3009CB5BA /* RemoteReaderSiteInfoSubscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3E0B9A208732B2009CB5BA /* RemoteReaderSiteInfoSubscription.swift */; };
365367
9F3E0B9E208733C3009CB5BA /* ReaderServiceDeliveryFrequency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3E0B9C208733C2009CB5BA /* ReaderServiceDeliveryFrequency.swift */; };
366368
9F3E0BA22087345F009CB5BA /* ServiceRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3E0BA02087345E009CB5BA /* ServiceRequest.swift */; };
@@ -786,6 +788,8 @@
786788
93F50A431F227CFB00B5BEBA /* UsersServiceRemoteXMLRPCTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UsersServiceRemoteXMLRPCTests.swift; sourceTree = "<group>"; };
787789
93F50A451F227F3600B5BEBA /* xmlrpc-response-getprofile.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "xmlrpc-response-getprofile.xml"; sourceTree = "<group>"; };
788790
93F50A461F227F3600B5BEBA /* xmlrpc-response-valid-but-unexpected-dictionary.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "xmlrpc-response-valid-but-unexpected-dictionary.xml"; sourceTree = "<group>"; };
791+
9AEAA772215E71C000876E62 /* site-quick-start-success.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "site-quick-start-success.json"; sourceTree = "<group>"; };
792+
9AEAA773215E723200876E62 /* site-quick-start-failure.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "site-quick-start-failure.json"; sourceTree = "<group>"; };
789793
9F3E0B9A208732B2009CB5BA /* RemoteReaderSiteInfoSubscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemoteReaderSiteInfoSubscription.swift; sourceTree = "<group>"; };
790794
9F3E0B9C208733C2009CB5BA /* ReaderServiceDeliveryFrequency.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReaderServiceDeliveryFrequency.swift; sourceTree = "<group>"; };
791795
9F3E0BA02087345E009CB5BA /* ServiceRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceRequest.swift; sourceTree = "<group>"; };
@@ -1452,6 +1456,8 @@
14521456
74D67F2C1F15C3740010C5ED /* site-viewers-delete-bad-json.json */,
14531457
74D67F2D1F15C3740010C5ED /* site-viewers-delete-failure.json */,
14541458
74D67F2E1F15C3740010C5ED /* site-viewers-delete-success.json */,
1459+
9AEAA772215E71C000876E62 /* site-quick-start-success.json */,
1460+
9AEAA773215E723200876E62 /* site-quick-start-failure.json */,
14551461
E1787DAF200E564B004CB3AF /* timezones.json */,
14561462
FFE247A920C891E5002DF3A2 /* WordPressComAuthenticateWithIDToken2FANeededSuccess.json */,
14571463
FFE247AB20C891E5002DF3A2 /* WordPressComAuthenticateWithIDTokenBearerTokenSuccess.json */,
@@ -1868,6 +1874,7 @@
18681874
93AC8ECE1ED32FD000900F5A /* stats-v1.1-latest-post-views.json in Resources */,
18691875
74A44DD81F13C7AC006CD8F4 /* remote-notification.json in Resources */,
18701876
740B23E31F17FB4200067A2A /* xmlrpc-metaweblog-editpost-change-type-failure.xml in Resources */,
1877+
9AEAA775215E774A00876E62 /* site-quick-start-failure.json in Resources */,
18711878
74D67F311F15C3740010C5ED /* site-followers-delete-failure.json in Resources */,
18721879
74B335E81F06F7200053A184 /* WordPressComRestApiFailUnauthorized.json in Resources */,
18731880
FFE247C220C9D749002DF3A2 /* reader-site-search-no-blog-or-feed-id.json in Resources */,
@@ -1900,6 +1907,7 @@
19001907
17BF9A7320C7E18200BF57D2 /* reader-site-search-failure.json in Resources */,
19011908
FFE247B120C891E6002DF3A2 /* WordPressComSocial2FACodeSuccess.json in Resources */,
19021909
93AC8ECF1ED32FD000900F5A /* stats-v1.1-latest-post.json in Resources */,
1910+
9AEAA774215E774A00876E62 /* site-quick-start-success.json in Resources */,
19031911
93BD275D1EE73442002BB00B /* me-auth-failure.json in Resources */,
19041912
74D67F361F15C3740010C5ED /* site-users-delete-site-owner-failure.json in Resources */,
19051913
74C473CB1EF33696009918F2 /* site-active-purchases-auth-failure.json in Resources */,

WordPressKit/SiteManagementServiceRemote.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,27 @@ open class SiteManagementServiceRemote: ServiceRemoteWordPressComREST {
100100
failure?(error)
101101
})
102102
}
103+
104+
/// Trigger a masterbar notification celebrating completion of mobile quick start.
105+
///
106+
/// - Parameters:
107+
/// - siteID: The WordPress.com ID of the site.
108+
/// - success: Optional success block
109+
/// - failure: Optional failure block with NSError
110+
///
111+
@objc open func markQuickStartChecklistAsComplete(_ siteID: NSNumber, success: (() -> Void)?, failure: ((NSError) -> Void)?) {
112+
let endpoint = "sites/\(siteID)/mobile-quick-start"
113+
let path = self.path(forEndpoint: endpoint, withVersion: ._1_1)
114+
115+
wordPressComRestApi.POST(path,
116+
parameters: nil,
117+
success: { response, httpResponse in
118+
success?()
119+
},
120+
failure: { error, httpResponse in
121+
failure?(error)
122+
})
123+
}
103124

104125
/// Keys found in API results
105126
///
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"error":"unknown_error",
3+
"message":"Unknown error"
4+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"success": true
3+
}

WordPressKitTests/SiteManagementServiceRemoteTests.swift

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,15 @@ class SiteManagementServiceRemoteTests: RemoteTestCase, RESTTestable {
2626
let getActivePurchasesAuthFailureMockFilename = "site-active-purchases-auth-failure.json"
2727
let getActivePurchasesBadJsonFailureMockFilename = "site-active-purchases-bad-json-failure.json"
2828

29+
let markQuickStartAsCompletedSuccessMockFilename = "site-quick-start-success.json"
30+
let markQuickStartAsCompletedFailureMockFilename = "site-quick-start-failure.json"
31+
2932
// MARK: - Properties
3033

3134
var siteDeleteEndpoint: String { return "sites/\(siteID)/delete" }
3235
var siteExportStartEndpoint: String { return "sites/\(siteID)/exports/start" }
3336
var sitePurchasesEndpoint: String { return "sites/\(siteID)/purchases" }
37+
var siteMarkQuickStartAsCompletedEndPoint: String { return "sites/\(siteID)/mobile-quick-start" }
3438

3539
var remote: SiteManagementServiceRemote!
3640

@@ -421,6 +425,36 @@ class SiteManagementServiceRemoteTests: RemoteTestCase, RESTTestable {
421425

422426
waitForExpectations(timeout: timeout, handler: nil)
423427
}
428+
429+
// MARK: - Mark Site Quick Start As Completed Tests
430+
431+
func testMarkQuickStartAsCompletedSuccess() {
432+
let expect = expectation(description: "Mark Site Quick Start as Completed success test")
433+
434+
stubRemoteResponse(siteMarkQuickStartAsCompletedEndPoint, filename: markQuickStartAsCompletedSuccessMockFilename, contentType: .ApplicationJSON)
435+
remote.markQuickStartChecklistAsComplete(NSNumber(value: Int32(siteID)), success: {
436+
expect.fulfill()
437+
}, failure: { error in
438+
XCTFail("This callback shouldn't get called")
439+
expect.fulfill()
440+
})
441+
442+
waitForExpectations(timeout: timeout, handler: nil)
443+
}
444+
445+
func testMarkQuickStartAsCompletedFailure() {
446+
let expect = expectation(description: "Mark Site Quick Start as Completed failure test")
447+
448+
stubRemoteResponse(siteMarkQuickStartAsCompletedEndPoint, filename: markQuickStartAsCompletedFailureMockFilename, contentType: .ApplicationJSON, status: 403)
449+
remote.markQuickStartChecklistAsComplete(NSNumber(value: Int32(siteID)), success: {
450+
XCTFail("This callback shouldn't get called")
451+
expect.fulfill()
452+
}, failure: { error in
453+
expect.fulfill()
454+
})
455+
456+
waitForExpectations(timeout: timeout, handler: nil)
457+
}
424458

425459
// MARK: - Misc Tests
426460

0 commit comments

Comments
 (0)