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

Commit ca4b342

Browse files
committed
Extract DateFormatter RFC-3339 to file and rename to wordPressCom
1 parent f3bc0a0 commit ca4b342

File tree

5 files changed

+35
-20
lines changed

5 files changed

+35
-20
lines changed

WordPressKit.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@
7373
3FB8642C2888089F003A86BE /* BuildkiteTestCollector in Frameworks */ = {isa = PBXBuildFile; productRef = 3FB8642B2888089F003A86BE /* BuildkiteTestCollector */; };
7474
3FFCC0412BA995290051D229 /* NSDate+RFC3339Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FFCC0402BA995290051D229 /* NSDate+RFC3339Tests.swift */; };
7575
3FFCC0472BAA6EF40051D229 /* NSDate+RFC3339.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FFCC0462BAA6EF40051D229 /* NSDate+RFC3339.swift */; };
76+
3FFCC0492BAB98130051D229 /* DateFormatter+WordPressCom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FFCC0482BAB98130051D229 /* DateFormatter+WordPressCom.swift */; };
77+
3FFCC04B2BABA5220051D229 /* DateFormatter+WordPressComTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FFCC04A2BABA5220051D229 /* DateFormatter+WordPressComTests.swift */; };
7678
40247DFA2120D8E100AE1C3C /* AutomatedTransferService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40247DF92120D8E100AE1C3C /* AutomatedTransferService.swift */; };
7779
40247DFC2120E69600AE1C3C /* AutomatedTransferStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40247DFB2120E69600AE1C3C /* AutomatedTransferStatus.swift */; };
7880
404057C5221B30400060250C /* StatsSearchTermTimeIntervalData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 404057C4221B30400060250C /* StatsSearchTermTimeIntervalData.swift */; };
@@ -800,6 +802,8 @@
800802
3FB8642D288813E9003A86BE /* UnitTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = UnitTests.xctestplan; sourceTree = "<group>"; };
801803
3FFCC0402BA995290051D229 /* NSDate+RFC3339Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSDate+RFC3339Tests.swift"; sourceTree = "<group>"; };
802804
3FFCC0462BAA6EF40051D229 /* NSDate+RFC3339.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSDate+RFC3339.swift"; sourceTree = "<group>"; };
805+
3FFCC0482BAB98130051D229 /* DateFormatter+WordPressCom.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DateFormatter+WordPressCom.swift"; sourceTree = "<group>"; };
806+
3FFCC04A2BABA5220051D229 /* DateFormatter+WordPressComTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DateFormatter+WordPressComTests.swift"; sourceTree = "<group>"; };
803807
40247DF92120D8E100AE1C3C /* AutomatedTransferService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutomatedTransferService.swift; sourceTree = "<group>"; };
804808
40247DFB2120E69600AE1C3C /* AutomatedTransferStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutomatedTransferStatus.swift; sourceTree = "<group>"; };
805809
404057C4221B30400060250C /* StatsSearchTermTimeIntervalData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatsSearchTermTimeIntervalData.swift; sourceTree = "<group>"; };
@@ -1905,6 +1909,7 @@
19051909
74B335DB1F06F4180053A184 /* WordPressOrgXMLRPCApiTests.swift */,
19061910
740B23D51F17F7C100067A2A /* XMLRPCTestable.swift */,
19071911
3FFCC0402BA995290051D229 /* NSDate+RFC3339Tests.swift */,
1912+
3FFCC04A2BABA5220051D229 /* DateFormatter+WordPressComTests.swift */,
19081913
);
19091914
name = Tests;
19101915
sourceTree = "<group>";
@@ -2520,6 +2525,7 @@
25202525
4A05E7992B2FDC3200C25E3B /* WordPressOrgRestApi.swift */,
25212526
93BD27741EE73944002BB00B /* HTTPAuthenticationAlertController.swift */,
25222527
3FFCC0462BAA6EF40051D229 /* NSDate+RFC3339.swift */,
2528+
3FFCC0482BAB98130051D229 /* DateFormatter+WordPressCom.swift */,
25232529
93BD27771EE73944002BB00B /* WordPressComOAuthClient.swift */,
25242530
93BD27781EE73944002BB00B /* WordPressComRestApi.swift */,
25252531
93BD27791EE73944002BB00B /* WordPressOrgXMLRPCApi.swift */,
@@ -3516,6 +3522,7 @@
35163522
74C473AC1EF2F75E009918F2 /* SiteManagementServiceRemote.swift in Sources */,
35173523
74585B971F0D54B400E7E667 /* RemoteDomain.swift in Sources */,
35183524
0C1C08432B9CD8D200E52F8C /* PostServiceRemoteREST+Extended.swift in Sources */,
3525+
3FFCC0492BAB98130051D229 /* DateFormatter+WordPressCom.swift in Sources */,
35193526
74A44DD01F13C64B006CD8F4 /* RemoteNotification.swift in Sources */,
35203527
8B52B901257AC5A200221663 /* Date+endOfDay.swift in Sources */,
35213528
E1D6B558200E473A00325669 /* TimeZoneServiceRemote.swift in Sources */,
@@ -3643,6 +3650,7 @@
36433650
4A05E79C2B2FDC6100C25E3B /* WordPressOrgAPITests.swift in Sources */,
36443651
3297E1DE2564653A00287D21 /* JetpackScanServiceRemoteTests.swift in Sources */,
36453652
01438D352B6A2B2C0097D60A /* stats-visits-month-unit-week.json in Sources */,
3653+
3FFCC04B2BABA5220051D229 /* DateFormatter+WordPressComTests.swift in Sources */,
36463654
9F3E0BAC20873785009CB5BA /* ServiceRequestTest.swift in Sources */,
36473655
4624223E2548C26D002B8A12 /* SiteDesignServiceRemoteTests.swift in Sources */,
36483656
4A1DEF44293051BC00322608 /* LoggingTests.swift in Sources */,
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
extension DateFormatter {
2+
3+
/// A `DateFormatter` configured to manage dates compatible with the WordPress.com API.
4+
///
5+
/// - SeeAlso: [https://developer.wordpress.com/docs/api/](https://developer.wordpress.com/docs/api/)
6+
static let wordPressCom: DateFormatter = {
7+
let formatter = DateFormatter()
8+
formatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZ"
9+
formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) as TimeZone
10+
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") as Locale
11+
return formatter
12+
}()
13+
}

WordPressKit/NSDate+RFC3339.swift

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

33
extension NSDate {
44

5-
static let rfc3339Formatter = DateFormatter.rfc3339Formatter
5+
static let rfc3339Formatter = DateFormatter.wordPressCom
66

77
/// Parses a date string
88
///
@@ -24,14 +24,3 @@ extension NSDate {
2424
NSDate.rfc3339Formatter.string(from: self as Date)
2525
}
2626
}
27-
28-
extension DateFormatter {
29-
30-
static let rfc3339Formatter: DateFormatter = {
31-
let formatter = DateFormatter()
32-
formatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZ"
33-
formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) as TimeZone
34-
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") as Locale
35-
return formatter
36-
}()
37-
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
@testable import WordPressKit
2+
import XCTest
3+
4+
class DateFormatterWordPressComTests: XCTestCase {
5+
6+
func testDateFormatterConfiguration() throws {
7+
let rfc3339Formatter = try XCTUnwrap(DateFormatter.wordPressCom)
8+
9+
XCTAssertEqual(rfc3339Formatter.timeZone, TimeZone(secondsFromGMT: 0))
10+
XCTAssertEqual(rfc3339Formatter.locale, Locale(identifier: "en_US_POSIX"))
11+
XCTAssertEqual(rfc3339Formatter.dateFormat, "yyyy'-'MM'-'dd'T'HH':'mm':'ssZ")
12+
}
13+
}

WordPressKitTests/NSDate+RFC3339Tests.swift

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,6 @@ import XCTest
99
// - https://datatracker.ietf.org/doc/html/rfc3339
1010
class NSDateRFC3339Tests: XCTestCase {
1111

12-
func testDateFormatterConfiguration() throws {
13-
let rfc3339Formatter = try XCTUnwrap(NSDate.rfc3339Formatter)
14-
15-
XCTAssertEqual(rfc3339Formatter.timeZone, TimeZone(secondsFromGMT: 0))
16-
XCTAssertEqual(rfc3339Formatter.locale, Locale(identifier: "en_US_POSIX"))
17-
XCTAssertEqual(rfc3339Formatter.dateFormat, "yyyy'-'MM'-'dd'T'HH':'mm':'ssZ")
18-
}
19-
2012
func testValidRFC3339DateFromString() {
2113
XCTAssertEqual(
2214
NSDate.with(wordPressComJSONString: "2023-03-19T15:00:00Z"),

0 commit comments

Comments
 (0)