Skip to content

Commit 23fb166

Browse files
committed
add more tests
1 parent 1dd9abe commit 23fb166

19 files changed

+452
-123
lines changed

ParseSwift.xcodeproj/project.pbxproj

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,15 +105,15 @@
105105
70212D142854C82B00386163 /* ParsePushFirebaseNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D122854C82B00386163 /* ParsePushFirebaseNotification.swift */; };
106106
70212D152854C82B00386163 /* ParsePushFirebaseNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D122854C82B00386163 /* ParsePushFirebaseNotification.swift */; };
107107
70212D162854C82B00386163 /* ParsePushFirebaseNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D122854C82B00386163 /* ParsePushFirebaseNotification.swift */; };
108-
70212D2B2855266400386163 /* ParsePushPayloadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D262855260F00386163 /* ParsePushPayloadTests.swift */; };
108+
70212D2B2855266400386163 /* ParsePushPayloadAppleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D262855260F00386163 /* ParsePushPayloadAppleTests.swift */; };
109109
70212D2C2855266400386163 /* ParsePushTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D172855256F00386163 /* ParsePushTests.swift */; };
110110
70212D2D2855266400386163 /* ParsePushAsyncTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D1C2855259100386163 /* ParsePushAsyncTests.swift */; };
111111
70212D2E2855266400386163 /* ParsePushCombineTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D21285525A600386163 /* ParsePushCombineTests.swift */; };
112-
70212D2F2855266500386163 /* ParsePushPayloadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D262855260F00386163 /* ParsePushPayloadTests.swift */; };
112+
70212D2F2855266500386163 /* ParsePushPayloadAppleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D262855260F00386163 /* ParsePushPayloadAppleTests.swift */; };
113113
70212D302855266500386163 /* ParsePushTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D172855256F00386163 /* ParsePushTests.swift */; };
114114
70212D312855266500386163 /* ParsePushAsyncTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D1C2855259100386163 /* ParsePushAsyncTests.swift */; };
115115
70212D322855266500386163 /* ParsePushCombineTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D21285525A600386163 /* ParsePushCombineTests.swift */; };
116-
70212D332855266600386163 /* ParsePushPayloadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D262855260F00386163 /* ParsePushPayloadTests.swift */; };
116+
70212D332855266600386163 /* ParsePushPayloadAppleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D262855260F00386163 /* ParsePushPayloadAppleTests.swift */; };
117117
70212D342855266600386163 /* ParsePushTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D172855256F00386163 /* ParsePushTests.swift */; };
118118
70212D352855266600386163 /* ParsePushAsyncTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D1C2855259100386163 /* ParsePushAsyncTests.swift */; };
119119
70212D362855266600386163 /* ParsePushCombineTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70212D21285525A600386163 /* ParsePushCombineTests.swift */; };
@@ -136,6 +136,12 @@
136136
7037DAB226384DE1005D7E62 /* TestParseEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7037DAB126384DE1005D7E62 /* TestParseEncoder.swift */; };
137137
7037DAB326384DE1005D7E62 /* TestParseEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7037DAB126384DE1005D7E62 /* TestParseEncoder.swift */; };
138138
7037DAB426384DE1005D7E62 /* TestParseEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7037DAB126384DE1005D7E62 /* TestParseEncoder.swift */; };
139+
70385E6428563FD10084D306 /* ParsePushPayloadFirebaseTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70385E6328563FD10084D306 /* ParsePushPayloadFirebaseTests.swift */; };
140+
70385E6528563FD10084D306 /* ParsePushPayloadFirebaseTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70385E6328563FD10084D306 /* ParsePushPayloadFirebaseTests.swift */; };
141+
70385E6628563FD10084D306 /* ParsePushPayloadFirebaseTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70385E6328563FD10084D306 /* ParsePushPayloadFirebaseTests.swift */; };
142+
70385E68285640A30084D306 /* ParsePushPayloadAnyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70385E67285640A30084D306 /* ParsePushPayloadAnyTests.swift */; };
143+
70385E69285640A30084D306 /* ParsePushPayloadAnyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70385E67285640A30084D306 /* ParsePushPayloadAnyTests.swift */; };
144+
70385E6A285640A30084D306 /* ParsePushPayloadAnyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70385E67285640A30084D306 /* ParsePushPayloadAnyTests.swift */; };
139145
70386A0625D9718C0048EC1B /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70386A0525D9718C0048EC1B /* Data.swift */; };
140146
70386A0725D9718C0048EC1B /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70386A0525D9718C0048EC1B /* Data.swift */; };
141147
70386A0825D9718C0048EC1B /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70386A0525D9718C0048EC1B /* Data.swift */; };
@@ -1009,7 +1015,7 @@
10091015
70212D172855256F00386163 /* ParsePushTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParsePushTests.swift; sourceTree = "<group>"; };
10101016
70212D1C2855259100386163 /* ParsePushAsyncTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParsePushAsyncTests.swift; sourceTree = "<group>"; };
10111017
70212D21285525A600386163 /* ParsePushCombineTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParsePushCombineTests.swift; sourceTree = "<group>"; };
1012-
70212D262855260F00386163 /* ParsePushPayloadTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParsePushPayloadTests.swift; sourceTree = "<group>"; };
1018+
70212D262855260F00386163 /* ParsePushPayloadAppleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParsePushPayloadAppleTests.swift; sourceTree = "<group>"; };
10131019
7023800E2747FCCD00EFC443 /* ExtensionsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionsTests.swift; sourceTree = "<group>"; };
10141020
7028373326BD8883007688C9 /* ParseObject+async.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ParseObject+async.swift"; sourceTree = "<group>"; };
10151021
7028373826BD8C89007688C9 /* ParseUser+async.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ParseUser+async.swift"; sourceTree = "<group>"; };
@@ -1021,6 +1027,8 @@
10211027
7033ECBC25584A85009770F3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
10221028
7033ECBE25584A85009770F3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
10231029
7037DAB126384DE1005D7E62 /* TestParseEncoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestParseEncoder.swift; sourceTree = "<group>"; };
1030+
70385E6328563FD10084D306 /* ParsePushPayloadFirebaseTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParsePushPayloadFirebaseTests.swift; sourceTree = "<group>"; };
1031+
70385E67285640A30084D306 /* ParsePushPayloadAnyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParsePushPayloadAnyTests.swift; sourceTree = "<group>"; };
10241032
70386A0525D9718C0048EC1B /* Data.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Data.swift; sourceTree = "<group>"; };
10251033
70386A3725D998D90048EC1B /* ParseLDAP.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseLDAP.swift; sourceTree = "<group>"; };
10261034
70386A4525D99C8B0048EC1B /* ParseLDAPTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseLDAPTests.swift; sourceTree = "<group>"; };
@@ -1432,7 +1440,9 @@
14321440
91285B2026991EE80051B544 /* ParsePolygonTests.swift */,
14331441
70212D1C2855259100386163 /* ParsePushAsyncTests.swift */,
14341442
70212D21285525A600386163 /* ParsePushCombineTests.swift */,
1435-
70212D262855260F00386163 /* ParsePushPayloadTests.swift */,
1443+
70385E67285640A30084D306 /* ParsePushPayloadAnyTests.swift */,
1444+
70212D262855260F00386163 /* ParsePushPayloadAppleTests.swift */,
1445+
70385E6328563FD10084D306 /* ParsePushPayloadFirebaseTests.swift */,
14361446
70212D172855256F00386163 /* ParsePushTests.swift */,
14371447
917BA4252703DB4600F8D747 /* ParseQueryAsyncTests.swift */,
14381448
7044C20525C5D6780011F6E7 /* ParseQueryCombineTests.swift */,
@@ -2561,6 +2571,7 @@
25612571
91285B182698E66D0051B544 /* ParseBytesTests.swift in Sources */,
25622572
917BA4522703F55700F8D747 /* ParseTwitterAsyncTests.swift in Sources */,
25632573
911DB12E24C4837E0027F3C7 /* APICommandTests.swift in Sources */,
2574+
70385E6428563FD10084D306 /* ParsePushPayloadFirebaseTests.swift in Sources */,
25642575
70732C5A2606CCAD000CAB81 /* ParseObjectCustomObjectIdTests.swift in Sources */,
25652576
911DB12C24C3F7720027F3C7 /* MockURLResponse.swift in Sources */,
25662577
7044C24325C5EA360011F6E7 /* ParseAppleCombineTests.swift in Sources */,
@@ -2573,7 +2584,7 @@
25732584
70212D2E2855266400386163 /* ParsePushCombineTests.swift in Sources */,
25742585
70F03A622780EADD00E5AFB4 /* ParseLinkedInCombineTests.swift in Sources */,
25752586
89899D9F26045998002E2043 /* ParseTwitterCombineTests.swift in Sources */,
2576-
70212D2B2855266400386163 /* ParsePushPayloadTests.swift in Sources */,
2587+
70212D2B2855266400386163 /* ParsePushPayloadAppleTests.swift in Sources */,
25772588
917BA43A2703E6D800F8D747 /* ParseHealthAsyncTests.swift in Sources */,
25782589
917BA4462703EEA700F8D747 /* ParseAnonymousAsyncTests.swift in Sources */,
25792590
70F79A672639DE9700731C46 /* ParseHealthCombineTests.swift in Sources */,
@@ -2628,6 +2639,7 @@
26282639
F971F4F624DE381A006CB79B /* ParseEncoderExtraTests.swift in Sources */,
26292640
70C7DC2124D20F190050419B /* ParseQueryTests.swift in Sources */,
26302641
917BA4562703F75E00F8D747 /* ParseLDAPAsyncTests.swift in Sources */,
2642+
70385E68285640A30084D306 /* ParsePushPayloadAnyTests.swift in Sources */,
26312643
70F79A732639DEA000731C46 /* ParseHealthTests.swift in Sources */,
26322644
7044C22D25C5E4E90011F6E7 /* ParseAnonymousCombineTests.swift in Sources */,
26332645
9194657824F16E330070296B /* ParseACLTests.swift in Sources */,
@@ -2833,6 +2845,7 @@
28332845
91285B1A2698E66D0051B544 /* ParseBytesTests.swift in Sources */,
28342846
917BA4542703F55700F8D747 /* ParseTwitterAsyncTests.swift in Sources */,
28352847
709B984C2556ECAA00507778 /* APICommandTests.swift in Sources */,
2848+
70385E6628563FD10084D306 /* ParsePushPayloadFirebaseTests.swift in Sources */,
28362849
70732C5C2606CCAD000CAB81 /* ParseObjectCustomObjectIdTests.swift in Sources */,
28372850
709B984D2556ECAA00507778 /* AnyDecodableTests.swift in Sources */,
28382851
7044C24525C5EA360011F6E7 /* ParseAppleCombineTests.swift in Sources */,
@@ -2845,7 +2858,7 @@
28452858
70212D362855266600386163 /* ParsePushCombineTests.swift in Sources */,
28462859
70F03A642780EADD00E5AFB4 /* ParseLinkedInCombineTests.swift in Sources */,
28472860
89899DA126045998002E2043 /* ParseTwitterCombineTests.swift in Sources */,
2848-
70212D332855266600386163 /* ParsePushPayloadTests.swift in Sources */,
2861+
70212D332855266600386163 /* ParsePushPayloadAppleTests.swift in Sources */,
28492862
917BA43C2703E6D800F8D747 /* ParseHealthAsyncTests.swift in Sources */,
28502863
917BA4482703EEA700F8D747 /* ParseAnonymousAsyncTests.swift in Sources */,
28512864
70F79A692639DE9700731C46 /* ParseHealthCombineTests.swift in Sources */,
@@ -2900,6 +2913,7 @@
29002913
709B98502556ECAA00507778 /* KeychainStoreTests.swift in Sources */,
29012914
709B98562556ECAA00507778 /* ParseObjectTests.swift in Sources */,
29022915
917BA4582703F75E00F8D747 /* ParseLDAPAsyncTests.swift in Sources */,
2916+
70385E6A285640A30084D306 /* ParsePushPayloadAnyTests.swift in Sources */,
29032917
70F79A872639DEA200731C46 /* ParseHealthTests.swift in Sources */,
29042918
7044C22F25C5E4E90011F6E7 /* ParseAnonymousCombineTests.swift in Sources */,
29052919
709B985A2556ECAA00507778 /* ParseObjectBatchTests.swift in Sources */,
@@ -2935,6 +2949,7 @@
29352949
91285B192698E66D0051B544 /* ParseBytesTests.swift in Sources */,
29362950
917BA4532703F55700F8D747 /* ParseTwitterAsyncTests.swift in Sources */,
29372951
70F2E2B5254F283000B2EA5C /* ParseEncoderExtraTests.swift in Sources */,
2952+
70385E6528563FD10084D306 /* ParsePushPayloadFirebaseTests.swift in Sources */,
29382953
70732C5B2606CCAD000CAB81 /* ParseObjectCustomObjectIdTests.swift in Sources */,
29392954
70F2E2C2254F283000B2EA5C /* APICommandTests.swift in Sources */,
29402955
7044C24425C5EA360011F6E7 /* ParseAppleCombineTests.swift in Sources */,
@@ -2947,7 +2962,7 @@
29472962
70212D322855266500386163 /* ParsePushCombineTests.swift in Sources */,
29482963
70F03A632780EADD00E5AFB4 /* ParseLinkedInCombineTests.swift in Sources */,
29492964
89899DA026045998002E2043 /* ParseTwitterCombineTests.swift in Sources */,
2950-
70212D2F2855266500386163 /* ParsePushPayloadTests.swift in Sources */,
2965+
70212D2F2855266500386163 /* ParsePushPayloadAppleTests.swift in Sources */,
29512966
917BA43B2703E6D800F8D747 /* ParseHealthAsyncTests.swift in Sources */,
29522967
917BA4472703EEA700F8D747 /* ParseAnonymousAsyncTests.swift in Sources */,
29532968
70F79A682639DE9700731C46 /* ParseHealthCombineTests.swift in Sources */,
@@ -3002,6 +3017,7 @@
30023017
70F2E2BB254F283000B2EA5C /* ParseGeoPointTests.swift in Sources */,
30033018
70F2E2B8254F283000B2EA5C /* AnyEncodableTests.swift in Sources */,
30043019
917BA4572703F75E00F8D747 /* ParseLDAPAsyncTests.swift in Sources */,
3020+
70385E69285640A30084D306 /* ParsePushPayloadAnyTests.swift in Sources */,
30053021
70F79A7D2639DEA100731C46 /* ParseHealthTests.swift in Sources */,
30063022
7044C22E25C5E4E90011F6E7 /* ParseAnonymousCombineTests.swift in Sources */,
30073023
70F2E2B4254F283000B2EA5C /* ParseQueryTests.swift in Sources */,

Sources/ParseSwift/Coding/AnyCodable.swift

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,22 @@ extension AnyCodable: Equatable {
6464
case (let lhs as [AnyCodable], let rhs as [AnyCodable]):
6565
return lhs == rhs
6666
default:
67-
return false
67+
return lhs.isEqual(rhs)
68+
}
69+
}
70+
}
71+
72+
extension AnyCodable: Hashable {
73+
public func hash(into hasher: inout Hasher) {
74+
do {
75+
let encodedData = try ParseCoding.jsonEncoder().encode(self)
76+
guard let encodedString = String(data: encodedData, encoding: .utf8) else {
77+
hasher.combine(0)
78+
return
79+
}
80+
hasher.combine(encodedString)
81+
} catch {
82+
hasher.combine(0)
6883
}
6984
}
7085
}

Sources/ParseSwift/Coding/AnyDecodable.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ extension AnyDecodable: Equatable {
112112
return lhs == rhs
113113
case let (lhs as [AnyDecodable], rhs as [AnyDecodable]):
114114
return lhs == rhs
115+
case let (lhs as AnyEncodable, rhs as AnyEncodable):
116+
return lhs == rhs
115117
default:
116118
return false
117119
}

Sources/ParseSwift/Coding/AnyEncodable.swift

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,22 @@ extension AnyEncodable: Equatable {
182182
case (let lhs as [AnyEncodable], let rhs as [AnyEncodable]):
183183
return lhs == rhs
184184
default:
185-
return false
185+
return lhs.isEqual(rhs)
186+
}
187+
}
188+
}
189+
190+
extension AnyEncodable: Hashable {
191+
public func hash(into hasher: inout Hasher) {
192+
do {
193+
let encodedData = try ParseCoding.jsonEncoder().encode(self)
194+
guard let encodedString = String(data: encodedData, encoding: .utf8) else {
195+
hasher.combine(0)
196+
return
197+
}
198+
hasher.combine(encodedString)
199+
} catch {
200+
hasher.combine(0)
186201
}
187202
}
188203
}

Sources/ParseSwift/Extensions/Encodable.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
import Foundation
1010

1111
internal extension Encodable {
12-
func isEqual(_ other: Encodable) -> Bool {
12+
func isEqual(_ other: Encodable?) -> Bool {
1313
guard let lhsData = try? ParseCoding.parseEncoder().encode(self),
1414
let lhsString = String(data: lhsData, encoding: .utf8),
15+
let other = other,
1516
let rhsData = try? ParseCoding.parseEncoder().encode(other),
1617
let rhsString = String(data: rhsData, encoding: .utf8) else {
1718
return false

Sources/ParseSwift/Objects/ParseRole.swift

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,9 @@ public extension ParseRole {
9797
self.ACL = acl
9898
}
9999

100-
static func == (lhs: Self, rhs: Self) -> Bool {
101-
lhs.debugDescription == rhs.debugDescription
102-
}
103-
104100
func hash(into hasher: inout Hasher) {
105-
hasher.combine(self.debugDescription)
101+
let name = self.name ?? self.objectId
102+
hasher.combine(name)
106103
}
107104
}
108105

Sources/ParseSwift/Protocols/ParsePushPayloadable.swift

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,10 @@ import Foundation
1414
*/
1515
public protocol ParsePushPayloadable: Codable, Equatable, CustomDebugStringConvertible, CustomStringConvertible {
1616

17-
/// Initialize an empty payload.
17+
/// Creates an empty payload.
1818
init()
1919
}
2020

21-
public extension ParsePushPayloadable {
22-
init() {
23-
self.init()
24-
}
25-
}
26-
2721
// MARK: CustomDebugStringConvertible
2822
extension ParsePushPayloadable {
2923
public var debugDescription: String {

Sources/ParseSwift/Types/ParseAnalytics.swift

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,6 @@ public struct ParseAnalytics: ParseType, Hashable {
7878
}
7979
}
8080

81-
public static func == (lhs: Self, rhs: Self) -> Bool {
82-
lhs.debugDescription == rhs.debugDescription
83-
}
84-
85-
public func hash(into hasher: inout Hasher) {
86-
hasher.combine(self.debugDescription)
87-
}
88-
8981
// MARK: Helpers
9082
func convertToAnyCodable(_ dimensions: [String: Codable]?) -> [String: AnyCodable]? {
9183
guard let dimensions = dimensions else {

Sources/ParseSwift/Types/ParsePushPayload/Apple/ParsePushAppleAlert.swift

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,6 @@ import Foundation
1515
for more information.
1616
*/
1717
public struct ParsePushAppleAlert: Codable, Equatable {
18-
19-
/**
20-
Multiple notifications with same collapse identifier are displayed to the user as a single
21-
notification. The value should not exceed 64 bytes.
22-
*/
23-
public var collapseId: String?
2418
/**
2519
The content of the alert message.
2620
*/

Sources/ParseSwift/Types/ParsePushPayload/Apple/ParsePushAppleSound.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// ParsePushPayloadAppleSound.swift
2+
// ParsePushAppleSound.swift
33
// ParseSwift
44
//
55
// Created by Corey Baker on 6/5/22.

0 commit comments

Comments
 (0)