Skip to content

Commit 2704ee9

Browse files
authored
Test ParseEncoder (#133)
* Test ParseEncoder * Disable some tests for linux * Disable another test for linux * Add back test that wouldn't compile * Don't execute random failure tests on Linux. Remove decoder tests * Update ParseEncoder documentation with version number from Swift * rename test files
1 parent e7dc57d commit 2704ee9

File tree

6 files changed

+1551
-14
lines changed

6 files changed

+1551
-14
lines changed

.codecov.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
coverage:
22
ignore:
33
- Tests/ParseSwiftTests/.*
4-
- Sources/ParseSwift/Coding/ParseEncoder.swift
54
status:
65
patch:
76
default:

.swiftlint.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ disabled_rules:
55
- type_body_length
66
- inclusive_language
77
- comment_spacing
8+
excluded: # paths to ignore during linting. Takes precedence over `included`.
9+
- Tests/ParseSwiftTests/ParseEncoderTests

ParseSwift.xcodeproj/project.pbxproj

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@
9595
7033ECB825584A83009770F3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7033ECB625584A83009770F3 /* Main.storyboard */; };
9696
7033ECBA25584A85009770F3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7033ECB925584A85009770F3 /* Assets.xcassets */; };
9797
7033ECBD25584A85009770F3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7033ECBB25584A85009770F3 /* LaunchScreen.storyboard */; };
98+
7037DAB226384DE1005D7E62 /* TestParseEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7037DAB126384DE1005D7E62 /* TestParseEncoder.swift */; };
99+
7037DAB326384DE1005D7E62 /* TestParseEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7037DAB126384DE1005D7E62 /* TestParseEncoder.swift */; };
100+
7037DAB426384DE1005D7E62 /* TestParseEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7037DAB126384DE1005D7E62 /* TestParseEncoder.swift */; };
98101
70386A0625D9718C0048EC1B /* Data+hexString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70386A0525D9718C0048EC1B /* Data+hexString.swift */; };
99102
70386A0725D9718C0048EC1B /* Data+hexString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70386A0525D9718C0048EC1B /* Data+hexString.swift */; };
100103
70386A0825D9718C0048EC1B /* Data+hexString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70386A0525D9718C0048EC1B /* Data+hexString.swift */; };
@@ -223,7 +226,7 @@
223226
709B984E2556ECAA00507778 /* ParseGeoPointTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70BC0B32251903D1001556DB /* ParseGeoPointTests.swift */; };
224227
709B984F2556ECAA00507778 /* AnyCodableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FFF552C2217E729007C3B4E /* AnyCodableTests.swift */; };
225228
709B98502556ECAA00507778 /* KeychainStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AA8076E1F794C1C008CD551 /* KeychainStoreTests.swift */; };
226-
709B98512556ECAA00507778 /* ParseEncoderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F971F4F524DE381A006CB79B /* ParseEncoderTests.swift */; };
229+
709B98512556ECAA00507778 /* ParseEncoderExtraTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F971F4F524DE381A006CB79B /* ParseEncoderExtraTests.swift */; };
227230
709B98522556ECAA00507778 /* ParseUserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70C7DC1D24D20E530050419B /* ParseUserTests.swift */; };
228231
709B98532556ECAA00507778 /* ParsePointerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70CE1D882545BF730018D572 /* ParsePointerTests.swift */; };
229232
709B98542556ECAA00507778 /* ParseInstallationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70110D5B2506ED0E0091CC1D /* ParseInstallationTests.swift */; };
@@ -304,7 +307,7 @@
304307
70F2E255254F247000B2EA5C /* ParseSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4AFDA7121F26D9A5002AE4FC /* ParseSwift.framework */; };
305308
70F2E2B3254F283000B2EA5C /* ParseUserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70C7DC1D24D20E530050419B /* ParseUserTests.swift */; };
306309
70F2E2B4254F283000B2EA5C /* ParseQueryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70C7DC1F24D20F180050419B /* ParseQueryTests.swift */; };
307-
70F2E2B5254F283000B2EA5C /* ParseEncoderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F971F4F524DE381A006CB79B /* ParseEncoderTests.swift */; };
310+
70F2E2B5254F283000B2EA5C /* ParseEncoderExtraTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F971F4F524DE381A006CB79B /* ParseEncoderExtraTests.swift */; };
308311
70F2E2B6254F283000B2EA5C /* ParseACLTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9194657724F16E330070296B /* ParseACLTests.swift */; };
309312
70F2E2B7254F283000B2EA5C /* ParsePointerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70CE1D882545BF730018D572 /* ParsePointerTests.swift */; };
310313
70F2E2B8254F283000B2EA5C /* AnyEncodableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FFF552B2217E729007C3B4E /* AnyEncodableTests.swift */; };
@@ -357,7 +360,7 @@
357360
91678710259BC5D600BB5B4E /* ParseCloudTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 916786EF259BC59600BB5B4E /* ParseCloudTests.swift */; };
358361
9167871A259BC5D600BB5B4E /* ParseCloudTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 916786EF259BC59600BB5B4E /* ParseCloudTests.swift */; };
359362
9194657824F16E330070296B /* ParseACLTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9194657724F16E330070296B /* ParseACLTests.swift */; };
360-
F971F4F624DE381A006CB79B /* ParseEncoderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F971F4F524DE381A006CB79B /* ParseEncoderTests.swift */; };
363+
F971F4F624DE381A006CB79B /* ParseEncoderExtraTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F971F4F524DE381A006CB79B /* ParseEncoderExtraTests.swift */; };
361364
F97B45CE24D9C6F200F4A88B /* ParseCoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B45B424D9C6F200F4A88B /* ParseCoding.swift */; };
362365
F97B45CF24D9C6F200F4A88B /* ParseCoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B45B424D9C6F200F4A88B /* ParseCoding.swift */; };
363366
F97B45D024D9C6F200F4A88B /* ParseCoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B45B424D9C6F200F4A88B /* ParseCoding.swift */; };
@@ -579,6 +582,7 @@
579582
7033ECB925584A85009770F3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
580583
7033ECBC25584A85009770F3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
581584
7033ECBE25584A85009770F3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
585+
7037DAB126384DE1005D7E62 /* TestParseEncoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestParseEncoder.swift; sourceTree = "<group>"; };
582586
70386A0525D9718C0048EC1B /* Data+hexString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Data+hexString.swift"; sourceTree = "<group>"; };
583587
70386A3725D998D90048EC1B /* ParseLDAP.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseLDAP.swift; sourceTree = "<group>"; };
584588
70386A4525D99C8B0048EC1B /* ParseLDAPTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseLDAPTests.swift; sourceTree = "<group>"; };
@@ -666,7 +670,7 @@
666670
916786E1259B7DDA00BB5B4E /* ParseCloud.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseCloud.swift; sourceTree = "<group>"; };
667671
916786EF259BC59600BB5B4E /* ParseCloudTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseCloudTests.swift; sourceTree = "<group>"; };
668672
9194657724F16E330070296B /* ParseACLTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseACLTests.swift; sourceTree = "<group>"; };
669-
F971F4F524DE381A006CB79B /* ParseEncoderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseEncoderTests.swift; sourceTree = "<group>"; };
673+
F971F4F524DE381A006CB79B /* ParseEncoderExtraTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseEncoderExtraTests.swift; sourceTree = "<group>"; };
670674
F97B45B424D9C6F200F4A88B /* ParseCoding.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ParseCoding.swift; sourceTree = "<group>"; };
671675
F97B45B524D9C6F200F4A88B /* AnyDecodable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnyDecodable.swift; sourceTree = "<group>"; };
672676
F97B45B624D9C6F200F4A88B /* ParseEncoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ParseEncoder.swift; sourceTree = "<group>"; };
@@ -829,7 +833,6 @@
829833
916786EF259BC59600BB5B4E /* ParseCloudTests.swift */,
830834
7044C21F25C5E0160011F6E7 /* ParseConfigCombineTests.swift */,
831835
70D1BE0625BB2BF400A42E7C /* ParseConfigTests.swift */,
832-
F971F4F524DE381A006CB79B /* ParseEncoderTests.swift */,
833836
89899DB426045DC4002E2043 /* ParseFacebookCombineTests.swift */,
834837
89899CF32603CE9D002E2043 /* ParseFacebookTests.swift */,
835838
7044C1F825C5CFAB0011F6E7 /* ParseFileCombineTests.swift */,
@@ -860,6 +863,7 @@
860863
70C7DC1D24D20E530050419B /* ParseUserTests.swift */,
861864
7FFF552A2217E729007C3B4E /* AnyCodableTests */,
862865
911DB12A24C3F7260027F3C7 /* NetworkMocking */,
866+
7037DAC726384E46005D7E62 /* ParseEncoderTests */,
863867
);
864868
path = ParseSwiftTests;
865869
sourceTree = "<group>";
@@ -982,6 +986,15 @@
982986
path = TestHostTV;
983987
sourceTree = "<group>";
984988
};
989+
7037DAC726384E46005D7E62 /* ParseEncoderTests */ = {
990+
isa = PBXGroup;
991+
children = (
992+
F971F4F524DE381A006CB79B /* ParseEncoderExtraTests.swift */,
993+
7037DAB126384DE1005D7E62 /* TestParseEncoder.swift */,
994+
);
995+
path = ParseEncoderTests;
996+
sourceTree = "<group>";
997+
};
985998
70510AAA259EE23700FEA700 /* LiveQuery */ = {
986999
isa = PBXGroup;
9871000
children = (
@@ -1691,6 +1704,7 @@
16911704
705A99F9259807F900B3547F /* ParseFileManagerTests.swift in Sources */,
16921705
7044C20625C5D6780011F6E7 /* ParseQueryCombineTests.swift in Sources */,
16931706
70C5508525B4A68700B5DBC2 /* ParseOperationTests.swift in Sources */,
1707+
7037DAB226384DE1005D7E62 /* TestParseEncoder.swift in Sources */,
16941708
7004C24D25B69207005E0AD9 /* ParseRoleTests.swift in Sources */,
16951709
91678706259BC5D400BB5B4E /* ParseCloudTests.swift in Sources */,
16961710
70386A5C25D9A4020048EC1B /* ParseLDAPCombineTests.swift in Sources */,
@@ -1706,7 +1720,7 @@
17061720
7044C1F925C5CFAB0011F6E7 /* ParseFileCombineTests.swift in Sources */,
17071721
70C5502225B3D8F700B5DBC2 /* ParseAppleTests.swift in Sources */,
17081722
89899DB526045DC4002E2043 /* ParseFacebookCombineTests.swift in Sources */,
1709-
F971F4F624DE381A006CB79B /* ParseEncoderTests.swift in Sources */,
1723+
F971F4F624DE381A006CB79B /* ParseEncoderExtraTests.swift in Sources */,
17101724
70C7DC2124D20F190050419B /* ParseQueryTests.swift in Sources */,
17111725
7044C22D25C5E4E90011F6E7 /* ParseAnonymousCombineTests.swift in Sources */,
17121726
9194657824F16E330070296B /* ParseACLTests.swift in Sources */,
@@ -1822,7 +1836,7 @@
18221836
isa = PBXSourcesBuildPhase;
18231837
buildActionMask = 2147483647;
18241838
files = (
1825-
709B98512556ECAA00507778 /* ParseEncoderTests.swift in Sources */,
1839+
709B98512556ECAA00507778 /* ParseEncoderExtraTests.swift in Sources */,
18261840
70E09E1E262F0634002DD451 /* ParsePointerCombineTests.swift in Sources */,
18271841
89899D642603CF3F002E2043 /* ParseTwitterTests.swift in Sources */,
18281842
709B98532556ECAA00507778 /* ParsePointerTests.swift in Sources */,
@@ -1844,6 +1858,7 @@
18441858
705A99FB259807F900B3547F /* ParseFileManagerTests.swift in Sources */,
18451859
7044C20825C5D6780011F6E7 /* ParseQueryCombineTests.swift in Sources */,
18461860
70C5508725B4A68700B5DBC2 /* ParseOperationTests.swift in Sources */,
1861+
7037DAB426384DE1005D7E62 /* TestParseEncoder.swift in Sources */,
18471862
7004C26125B6920B005E0AD9 /* ParseRoleTests.swift in Sources */,
18481863
9167871A259BC5D600BB5B4E /* ParseCloudTests.swift in Sources */,
18491864
70386A5E25D9A4020048EC1B /* ParseLDAPCombineTests.swift in Sources */,
@@ -1884,7 +1899,7 @@
18841899
70F2E2B7254F283000B2EA5C /* ParsePointerTests.swift in Sources */,
18851900
89899D812603CF67002E2043 /* ParseFacebookTests.swift in Sources */,
18861901
70386A4725D99C8B0048EC1B /* ParseLDAPTests.swift in Sources */,
1887-
70F2E2B5254F283000B2EA5C /* ParseEncoderTests.swift in Sources */,
1902+
70F2E2B5254F283000B2EA5C /* ParseEncoderExtraTests.swift in Sources */,
18881903
70732C5B2606CCAD000CAB81 /* ParseObjectCustomObjectIdTests.swift in Sources */,
18891904
70F2E2C2254F283000B2EA5C /* APICommandTests.swift in Sources */,
18901905
7044C24425C5EA360011F6E7 /* ParseAppleCombineTests.swift in Sources */,
@@ -1900,6 +1915,7 @@
19001915
705A99FA259807F900B3547F /* ParseFileManagerTests.swift in Sources */,
19011916
7044C20725C5D6780011F6E7 /* ParseQueryCombineTests.swift in Sources */,
19021917
70C5508625B4A68700B5DBC2 /* ParseOperationTests.swift in Sources */,
1918+
7037DAB326384DE1005D7E62 /* TestParseEncoder.swift in Sources */,
19031919
7004C25725B6920A005E0AD9 /* ParseRoleTests.swift in Sources */,
19041920
91678710259BC5D600BB5B4E /* ParseCloudTests.swift in Sources */,
19051921
70386A5D25D9A4020048EC1B /* ParseLDAPCombineTests.swift in Sources */,

Sources/ParseSwift/Coding/ParseEncoder.swift

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,6 @@ private protocol _JSONStringDictionaryEncodableMarker { }
3434
#endif
3535
extension Dictionary: _JSONStringDictionaryEncodableMarker where Key == String, Value: Encodable { }
3636

37-
/// `JSONEncoder` facilitates the encoding of `Encodable` values into JSON.
38-
/// `ParseEncoder` facilitates the encoding of `ObjectType` values into JSON.
39-
/// All Credit to Apple, this is a simple encoder with capability of skipping keys at runtime.
40-
4137
// This rule doesn't allow types with underscores in their names.
4238
// swiftlint:disable type_name
4339
// swiftlint:disable colon
@@ -49,7 +45,13 @@ extension Dictionary: _JSONStringDictionaryEncodableMarker where Key == String,
4945
// swiftlint:disable cyclomatic_complexity
5046

5147
// MARK: ParseEncoder
52-
/// An object that encodes Parse instances of a data type as JSON objects.
48+
/** An object that encodes Parse instances of a data type as JSON objects.
49+
- note: `JSONEncoder` facilitates the encoding of `Encodable` values into JSON.
50+
`ParseEncoder` facilitates the encoding of `ParseType` values into JSON.
51+
All Credit to Apple, this is a custom encoder with capability of skipping keys at runtime.
52+
ParseEncoder matches the features of the [Swift 5.4 JSONEncoder ](https://github.com/apple/swift/blob/main/stdlib/public/Darwin/Foundation/JSONEncoder.swift).
53+
Update commits as needed for improvement.
54+
*/
5355
public struct ParseEncoder {
5456
let dateEncodingStrategy: JSONEncoder.DateEncodingStrategy?
5557

File renamed without changes.

0 commit comments

Comments
 (0)