diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f467c642..7487cd8c 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -2,9 +2,9 @@ name: "Contentstack CI"
on:
push:
- branches: [ master, development ]
+ branches: [ master, next ]
pull_request:
- branches: [ master ]
+ branches: [ master, next ]
jobs:
macOS:
diff --git a/.github/workflows/sca-scan.yml b/.github/workflows/sca-scan.yml
index cb54aada..12806764 100644
--- a/.github/workflows/sca-scan.yml
+++ b/.github/workflows/sca-scan.yml
@@ -11,4 +11,4 @@ jobs:
- name: Run Snyk to check for vulnerabilities
run: snyk test --all-projects --fail-on=all
env:
- SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
\ No newline at end of file
+ SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
diff --git a/.gitignore b/.gitignore
index 9ddddf50..0144b643 100644
--- a/.gitignore
+++ b/.gitignore
@@ -73,4 +73,7 @@ fastlane/screenshots/**/*.png
fastlane/test_output
TestCase
-docs
\ No newline at end of file
+docs
+
+fastlane/
+Gemfile
\ No newline at end of file
diff --git a/.swiftpm/xcode/package.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/.swiftpm/xcode/package.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 00000000..54782e32
--- /dev/null
+++ b/.swiftpm/xcode/package.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded
+
+
+
diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/ContentstackTests.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/ContentstackTests.xcscheme
new file mode 100644
index 00000000..cef11219
--- /dev/null
+++ b/.swiftpm/xcode/xcshareddata/xcschemes/ContentstackTests.xcscheme
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.talismanrc b/.talismanrc
index 87c34e16..bd1bc6ae 100644
--- a/.talismanrc
+++ b/.talismanrc
@@ -17,6 +17,11 @@ fileignoreconfig:
checksum: a1c17f932d0b00df127851f50456923546ee912ba9b4d60d1f244768d61b858d
- filename: Tests/DVRRecordings/SyncTest.json
checksum: e5148d9f58da7689f249969c25a0c36d6d9f26be062a2c6bd9aaf389118f0039
+- filename: Contentstack.xcodeproj/xcshareddata/xcschemes/Contentstack iOS.xcscheme
+ checksum: 10ca4b0b986ae6166f69d7f985ca5b06238ac70dac3dd378fbf3dbdfd966afff
+- filename: Contentstack.xcodeproj/xcshareddata/xcschemes/Contentstack iOS Tests.xcscheme
+ checksum: c439f6d268ae2ea0af023daeffdff2af5928d0610f90fa14c9e6e6ce7e4b3fad
+version: ""
diff --git a/Contentstack.xcodeproj/project.pbxproj b/Contentstack.xcodeproj/project.pbxproj
index 928a3dca..508cb1a1 100644
--- a/Contentstack.xcodeproj/project.pbxproj
+++ b/Contentstack.xcodeproj/project.pbxproj
@@ -25,8 +25,6 @@
0F096B14243610470094F042 /* ImageTransformTestAdditional.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F096B13243610470094F042 /* ImageTransformTestAdditional.swift */; };
0F096B15243610470094F042 /* ImageTransformTestAdditional.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F096B13243610470094F042 /* ImageTransformTestAdditional.swift */; };
0F096B16243610470094F042 /* ImageTransformTestAdditional.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F096B13243610470094F042 /* ImageTransformTestAdditional.swift */; };
- 0F1DCC73243D991100EED404 /* DVR.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F1DCC72243D991100EED404 /* DVR.framework */; };
- 0F1DCC75243D991100EED404 /* OHHTTPStubs.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F1DCC74243D991100EED404 /* OHHTTPStubs.framework */; };
0F1DCC7A243D9BD400EED404 /* SyncTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 0F1DCC77243D9BBF00EED404 /* SyncTest.json */; };
0F1DCC7B243D9BD400EED404 /* SyncTest.json in Resources */ = {isa = PBXBuildFile; fileRef = 0F1DCC77243D9BBF00EED404 /* SyncTest.json */; };
0F1DCC80243DCF2500EED404 /* EntryModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F1DCC7F243DCF2500EED404 /* EntryModel.swift */; };
@@ -41,9 +39,6 @@
0F1DCC8B243DD20E00EED404 /* ContentTypeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F1DCC89243DD20E00EED404 /* ContentTypeModel.swift */; };
0F1DCC8C243DD20E00EED404 /* ContentTypeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F1DCC89243DD20E00EED404 /* ContentTypeModel.swift */; };
0F1DCC8D243DD20E00EED404 /* ContentTypeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F1DCC89243DD20E00EED404 /* ContentTypeModel.swift */; };
- 0F1DCC8F243DDB7300EED404 /* ContentTypeQueryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F1DCC8E243DDB7300EED404 /* ContentTypeQueryAPITest.swift */; };
- 0F1DCC90243DDB7300EED404 /* ContentTypeQueryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F1DCC8E243DDB7300EED404 /* ContentTypeQueryAPITest.swift */; };
- 0F1DCC91243DDB7300EED404 /* ContentTypeQueryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F1DCC8E243DDB7300EED404 /* ContentTypeQueryAPITest.swift */; };
0F244F9E244062B4003C3F26 /* ContentType.json in Resources */ = {isa = PBXBuildFile; fileRef = 0F244F9C244062B4003C3F26 /* ContentType.json */; };
0F244F9F244062B4003C3F26 /* ContentType.json in Resources */ = {isa = PBXBuildFile; fileRef = 0F244F9C244062B4003C3F26 /* ContentType.json */; };
0F244FA224406A2D003C3F26 /* SyncStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F244FA124406A2D003C3F26 /* SyncStack.swift */; };
@@ -96,12 +91,6 @@
0F4C0A87243C6990006604B7 /* config.json in Resources */ = {isa = PBXBuildFile; fileRef = 0F4C0A86243C6990006604B7 /* config.json */; };
0F4C0A88243C6990006604B7 /* config.json in Resources */ = {isa = PBXBuildFile; fileRef = 0F4C0A86243C6990006604B7 /* config.json */; };
0F4C0A89243C6990006604B7 /* config.json in Resources */ = {isa = PBXBuildFile; fileRef = 0F4C0A86243C6990006604B7 /* config.json */; };
- 0F4C0A8B243C6D8A006604B7 /* ContentstackTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F4C0A8A243C6D8A006604B7 /* ContentstackTest.swift */; };
- 0F4C0A8C243C6D8A006604B7 /* ContentstackTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F4C0A8A243C6D8A006604B7 /* ContentstackTest.swift */; };
- 0F4C0A8D243C6D8A006604B7 /* ContentstackTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F4C0A8A243C6D8A006604B7 /* ContentstackTest.swift */; };
- 0F4C0A8F243C7D88006604B7 /* SyncAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F4C0A8E243C7D88006604B7 /* SyncAPITest.swift */; };
- 0F4C0A90243C7D88006604B7 /* SyncAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F4C0A8E243C7D88006604B7 /* SyncAPITest.swift */; };
- 0F4C0A91243C7D88006604B7 /* SyncAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F4C0A8E243C7D88006604B7 /* SyncAPITest.swift */; };
0F4FBCA02420B0E4007B8CAE /* DateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F4FBC9F2420B0E4007B8CAE /* DateTest.swift */; };
0F4FBCA12420B0E4007B8CAE /* DateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F4FBC9F2420B0E4007B8CAE /* DateTest.swift */; };
0F4FBCA22420B0E4007B8CAE /* DateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F4FBC9F2420B0E4007B8CAE /* DateTest.swift */; };
@@ -127,9 +116,6 @@
0F50EA0E244EC3DD00E5D705 /* Session.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F50EA0D244EC3DD00E5D705 /* Session.swift */; };
0F50EA0F244EC3DD00E5D705 /* Session.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F50EA0D244EC3DD00E5D705 /* Session.swift */; };
0F50EA10244EC3DD00E5D705 /* Session.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F50EA0D244EC3DD00E5D705 /* Session.swift */; };
- 0F50EA12244EC44800E5D705 /* QueryOnAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F50EA11244EC44800E5D705 /* QueryOnAPITest.swift */; };
- 0F50EA13244EC44800E5D705 /* QueryOnAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F50EA11244EC44800E5D705 /* QueryOnAPITest.swift */; };
- 0F50EA14244EC44800E5D705 /* QueryOnAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F50EA11244EC44800E5D705 /* QueryOnAPITest.swift */; };
0F50EA17244ED7F500E5D705 /* QueryOn.json in Resources */ = {isa = PBXBuildFile; fileRef = 0F50EA15244ED7F500E5D705 /* QueryOn.json */; };
0F50EA18244ED7F500E5D705 /* QueryOn.json in Resources */ = {isa = PBXBuildFile; fileRef = 0F50EA15244ED7F500E5D705 /* QueryOn.json */; };
0F50EA1D244ED88C00E5D705 /* StackCacheAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F50EA1C244ED88C00E5D705 /* StackCacheAPITest.swift */; };
@@ -144,12 +130,6 @@
0F60CA332428D02600ED67E6 /* QueryEntryType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F60CA322428D02600ED67E6 /* QueryEntryType.swift */; };
0F60CA342428D02600ED67E6 /* QueryEntryType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F60CA322428D02600ED67E6 /* QueryEntryType.swift */; };
0F60CA352428D02600ED67E6 /* QueryEntryType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F60CA322428D02600ED67E6 /* QueryEntryType.swift */; };
- 0F6B6CE824508154007AB3C1 /* DVR.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F6B6CE724508154007AB3C1 /* DVR.framework */; };
- 0F6B6CEA24508154007AB3C1 /* OHHTTPStubs.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F6B6CE924508154007AB3C1 /* OHHTTPStubs.framework */; };
- 0F6B6CEC24508165007AB3C1 /* DVR.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F6B6CEB24508165007AB3C1 /* DVR.framework */; };
- 0F6B6CEE24508165007AB3C1 /* OHHTTPStubs.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F6B6CED24508165007AB3C1 /* OHHTTPStubs.framework */; };
- 0F6D3A86243F064900FCFEBC /* EntryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6D3A84243F064900FCFEBC /* EntryAPITest.swift */; };
- 0F6D3A87243F064900FCFEBC /* EntryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6D3A84243F064900FCFEBC /* EntryAPITest.swift */; };
0F7138C52424A70C00B314B0 /* AssetQueryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F7138C42424A70C00B314B0 /* AssetQueryTest.swift */; };
0F7138C62424A70C00B314B0 /* AssetQueryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F7138C42424A70C00B314B0 /* AssetQueryTest.swift */; };
0F7138C72424A70C00B314B0 /* AssetQueryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F7138C42424A70C00B314B0 /* AssetQueryTest.swift */; };
@@ -163,7 +143,6 @@
0F77CFB824373B8A00C57764 /* ImageTransformEquatableTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F77CFB724373B8A00C57764 /* ImageTransformEquatableTest.swift */; };
0F77CFB924373B8F00C57764 /* ImageTransformEquatableTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F77CFB724373B8A00C57764 /* ImageTransformEquatableTest.swift */; };
0F77CFBA24373B9000C57764 /* ImageTransformEquatableTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F77CFB724373B8A00C57764 /* ImageTransformEquatableTest.swift */; };
- 0F796C502449EA6000EA04D5 /* EntryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6D3A84243F064900FCFEBC /* EntryAPITest.swift */; };
0F796C532449EA8700EA04D5 /* Entry.json in Resources */ = {isa = PBXBuildFile; fileRef = 0F796C512449EA8700EA04D5 /* Entry.json */; };
0F796C542449EA8700EA04D5 /* Entry.json in Resources */ = {isa = PBXBuildFile; fileRef = 0F796C512449EA8700EA04D5 /* Entry.json */; };
0FB4CAC924332C5200A385B1 /* ImageOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB4CAC824332C5200A385B1 /* ImageOperation.swift */; };
@@ -185,10 +164,6 @@
0FD39D4A24237A0400E34826 /* ContentTypeQueryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FD39D4924237A0400E34826 /* ContentTypeQueryTest.swift */; };
0FD39D4B24237A0400E34826 /* ContentTypeQueryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FD39D4924237A0400E34826 /* ContentTypeQueryTest.swift */; };
0FD39D4C24237A0400E34826 /* ContentTypeQueryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FD39D4924237A0400E34826 /* ContentTypeQueryTest.swift */; };
- 0FD6F8F22620194100636504 /* ContentstackUtils in Frameworks */ = {isa = PBXBuildFile; productRef = 0FD6F8F12620194100636504 /* ContentstackUtils */; };
- 0FD6F9102620194C00636504 /* ContentstackUtils in Frameworks */ = {isa = PBXBuildFile; productRef = 0FD6F90F2620194C00636504 /* ContentstackUtils */; };
- 0FD6F9122620195300636504 /* ContentstackUtils in Frameworks */ = {isa = PBXBuildFile; productRef = 0FD6F9112620195300636504 /* ContentstackUtils */; };
- 0FD6F9142620195800636504 /* ContentstackUtils in Frameworks */ = {isa = PBXBuildFile; productRef = 0FD6F9132620195800636504 /* ContentstackUtils */; };
0FFA5D4A241F4DED003B3AF5 /* ContentstackConfigTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FFA5D49241F4DED003B3AF5 /* ContentstackConfigTest.swift */; };
0FFA5D4E241F4FAC003B3AF5 /* Contentstack.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FFA5D4B241F4FAC003B3AF5 /* Contentstack.h */; settings = {ATTRIBUTES = (Public, ); }; };
0FFA5D4F241F4FAC003B3AF5 /* Contentstack.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FFA5D4B241F4FAC003B3AF5 /* Contentstack.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -256,21 +231,45 @@
0FFA5DBC241F9A6C003B3AF5 /* XCTestCase+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FFA5DBB241F9A6C003B3AF5 /* XCTestCase+Extension.swift */; };
0FFA5DBD241F9A6C003B3AF5 /* XCTestCase+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FFA5DBB241F9A6C003B3AF5 /* XCTestCase+Extension.swift */; };
0FFA5DBE241F9A6C003B3AF5 /* XCTestCase+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FFA5DBB241F9A6C003B3AF5 /* XCTestCase+Extension.swift */; };
- 0FFBB4432446F219000D2795 /* AssetQueryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FFBB4422446F219000D2795 /* AssetQueryAPITest.swift */; };
- 0FFBB4442446F219000D2795 /* AssetQueryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FFBB4422446F219000D2795 /* AssetQueryAPITest.swift */; };
- 0FFBB4452446F219000D2795 /* AssetQueryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FFBB4422446F219000D2795 /* AssetQueryAPITest.swift */; };
0FFBB4482446F9A4000D2795 /* Asset.json in Resources */ = {isa = PBXBuildFile; fileRef = 0FFBB4462446F9A4000D2795 /* Asset.json */; };
0FFBB4492446F9A4000D2795 /* Asset.json in Resources */ = {isa = PBXBuildFile; fileRef = 0FFBB4462446F9A4000D2795 /* Asset.json */; };
0FFBB44C24470C43000D2795 /* ContentStackLogTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FFBB44B24470C43000D2795 /* ContentStackLogTest.swift */; };
0FFBB44D24470C43000D2795 /* ContentStackLogTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FFBB44B24470C43000D2795 /* ContentStackLogTest.swift */; };
0FFBB44E24470C43000D2795 /* ContentStackLogTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FFBB44B24470C43000D2795 /* ContentStackLogTest.swift */; };
- 64F522062BF5C65300AE6E0F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 64F522052BF5C65300AE6E0F /* PrivacyInfo.xcprivacy */; };
- 64F522072BF5C65300AE6E0F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 64F522052BF5C65300AE6E0F /* PrivacyInfo.xcprivacy */; };
- 64F522082BF5C65300AE6E0F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 64F522052BF5C65300AE6E0F /* PrivacyInfo.xcprivacy */; };
- 64F522092BF5C65300AE6E0F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 64F522052BF5C65300AE6E0F /* PrivacyInfo.xcprivacy */; };
- 64F5220A2BF5C65300AE6E0F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 64F522052BF5C65300AE6E0F /* PrivacyInfo.xcprivacy */; };
- 64F5220B2BF5C65300AE6E0F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 64F522052BF5C65300AE6E0F /* PrivacyInfo.xcprivacy */; };
- 64F5220C2BF5C65300AE6E0F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 64F522052BF5C65300AE6E0F /* PrivacyInfo.xcprivacy */; };
+ 470253932C0C612A009BDF8B /* TaxonomyModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470253922C0C612A009BDF8B /* TaxonomyModel.swift */; };
+ 470253942C0C612A009BDF8B /* TaxonomyModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470253922C0C612A009BDF8B /* TaxonomyModel.swift */; };
+ 470253952C0C612A009BDF8B /* TaxonomyModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470253922C0C612A009BDF8B /* TaxonomyModel.swift */; };
+ 470253962C0C612A009BDF8B /* TaxonomyModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470253922C0C612A009BDF8B /* TaxonomyModel.swift */; };
+ 470657542B5E785C00BBFF88 /* ContentTypeQueryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470657532B5E785C00BBFF88 /* ContentTypeQueryAPITest.swift */; };
+ 470657552B5E785C00BBFF88 /* ContentTypeQueryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470657532B5E785C00BBFF88 /* ContentTypeQueryAPITest.swift */; };
+ 470657562B5E785C00BBFF88 /* ContentTypeQueryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470657532B5E785C00BBFF88 /* ContentTypeQueryAPITest.swift */; };
+ 470657582B5E788400BBFF88 /* EntryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470657572B5E788400BBFF88 /* EntryAPITest.swift */; };
+ 470657592B5E788400BBFF88 /* EntryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470657572B5E788400BBFF88 /* EntryAPITest.swift */; };
+ 4706575A2B5E788400BBFF88 /* EntryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470657572B5E788400BBFF88 /* EntryAPITest.swift */; };
+ 4706575C2B5E78B300BBFF88 /* AssetQueryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4706575B2B5E78B300BBFF88 /* AssetQueryAPITest.swift */; };
+ 4706575D2B5E78B300BBFF88 /* AssetQueryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4706575B2B5E78B300BBFF88 /* AssetQueryAPITest.swift */; };
+ 4706575E2B5E78B300BBFF88 /* AssetQueryAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4706575B2B5E78B300BBFF88 /* AssetQueryAPITest.swift */; };
+ 470657602B5E797300BBFF88 /* ContentstackTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4706575F2B5E797300BBFF88 /* ContentstackTest.swift */; };
+ 470657612B5E797300BBFF88 /* ContentstackTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4706575F2B5E797300BBFF88 /* ContentstackTest.swift */; };
+ 470657622B5E797300BBFF88 /* ContentstackTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4706575F2B5E797300BBFF88 /* ContentstackTest.swift */; };
+ 47161ACA2B5D747D00AD615B /* DVR in Frameworks */ = {isa = PBXBuildFile; productRef = 47161AC92B5D747D00AD615B /* DVR */; };
+ 47AAE0902B60420E0098655A /* SyncAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AAE08F2B60420E0098655A /* SyncAPITest.swift */; };
+ 47AAE0912B60420E0098655A /* SyncAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AAE08F2B60420E0098655A /* SyncAPITest.swift */; };
+ 47AAE0922B60420E0098655A /* SyncAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AAE08F2B60420E0098655A /* SyncAPITest.swift */; };
+ 47B4DC622C232A8200370CFC /* TaxonomyTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47B4DC612C232A8200370CFC /* TaxonomyTest.swift */; };
+ 47B4DC632C232A8200370CFC /* TaxonomyTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47B4DC612C232A8200370CFC /* TaxonomyTest.swift */; };
+ 47B4DC642C232A8200370CFC /* TaxonomyTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47B4DC612C232A8200370CFC /* TaxonomyTest.swift */; };
+ 47C6EFC22C0B5B9400F0D5CF /* Taxonomy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C6EFC12C0B5B9400F0D5CF /* Taxonomy.swift */; };
+ 47C6EFC32C0B5B9400F0D5CF /* Taxonomy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C6EFC12C0B5B9400F0D5CF /* Taxonomy.swift */; };
+ 47C6EFC42C0B5B9400F0D5CF /* Taxonomy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C6EFC12C0B5B9400F0D5CF /* Taxonomy.swift */; };
+ 47C6EFC52C0B5B9400F0D5CF /* Taxonomy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C6EFC12C0B5B9400F0D5CF /* Taxonomy.swift */; };
+ 642AD4332B86110100E2AFDF /* ContentstackUtils in Frameworks */ = {isa = PBXBuildFile; productRef = 642AD4322B86110100E2AFDF /* ContentstackUtils */; };
+ 642AD4352B86111700E2AFDF /* DVR in Frameworks */ = {isa = PBXBuildFile; productRef = 642AD4342B86111700E2AFDF /* DVR */; };
+ 642AD4372B86111A00E2AFDF /* ContentstackUtils in Frameworks */ = {isa = PBXBuildFile; productRef = 642AD4362B86111A00E2AFDF /* ContentstackUtils */; };
+ 642AD4392B86112100E2AFDF /* ContentstackUtils in Frameworks */ = {isa = PBXBuildFile; productRef = 642AD4382B86112100E2AFDF /* ContentstackUtils */; };
+ 642AD43B2B86112400E2AFDF /* DVR in Frameworks */ = {isa = PBXBuildFile; productRef = 642AD43A2B86112400E2AFDF /* DVR */; };
+ 642AD43D2B86112C00E2AFDF /* ContentstackUtils in Frameworks */ = {isa = PBXBuildFile; productRef = 642AD43C2B86112C00E2AFDF /* ContentstackUtils */; };
+ 642AD43F2B86112F00E2AFDF /* DVR in Frameworks */ = {isa = PBXBuildFile; productRef = 642AD43E2B86112F00E2AFDF /* DVR */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -311,7 +310,6 @@
0F1DCC7F243DCF2500EED404 /* EntryModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EntryModel.swift; sourceTree = ""; };
0F1DCC84243DD01900EED404 /* AssetModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssetModel.swift; sourceTree = ""; };
0F1DCC89243DD20E00EED404 /* ContentTypeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentTypeModel.swift; sourceTree = ""; };
- 0F1DCC8E243DDB7300EED404 /* ContentTypeQueryAPITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentTypeQueryAPITest.swift; sourceTree = ""; };
0F244F9C244062B4003C3F26 /* ContentType.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = ContentType.json; sourceTree = ""; };
0F244FA124406A2D003C3F26 /* SyncStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SyncStack.swift; sourceTree = ""; };
0F244FA624406A4A003C3F26 /* EntryQueriableTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "EntryQueriable\U0010\U0010Test.swift"; sourceTree = ""; };
@@ -333,8 +331,6 @@
0F4C0A7B243C4579006604B7 /* Error.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Error.swift; sourceTree = ""; };
0F4C0A80243C470F006604B7 /* ContentstackLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentstackLogger.swift; sourceTree = ""; };
0F4C0A86243C6990006604B7 /* config.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = config.json; sourceTree = ""; };
- 0F4C0A8A243C6D8A006604B7 /* ContentstackTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentstackTest.swift; sourceTree = ""; };
- 0F4C0A8E243C7D88006604B7 /* SyncAPITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncAPITest.swift; sourceTree = ""; };
0F4FBC9A2420A17F007B8CAE /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; };
0F4FBC9F2420B0E4007B8CAE /* DateTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateTest.swift; sourceTree = ""; };
0F4FBCA32420B5F4007B8CAE /* Utils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Utils.swift; sourceTree = ""; };
@@ -343,7 +339,6 @@
0F4FBCB22420D2F1007B8CAE /* QueryOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryOperation.swift; sourceTree = ""; };
0F4FBCB72420F344007B8CAE /* QueryParameter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryParameter.swift; sourceTree = ""; };
0F50EA0D244EC3DD00E5D705 /* Session.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Session.swift; sourceTree = ""; };
- 0F50EA11244EC44800E5D705 /* QueryOnAPITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryOnAPITest.swift; sourceTree = ""; };
0F50EA15244ED7F500E5D705 /* QueryOn.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = QueryOn.json; sourceTree = ""; };
0F50EA1C244ED88C00E5D705 /* StackCacheAPITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StackCacheAPITest.swift; sourceTree = ""; };
0F5794C1266A37120082815C /* Paragraph.Json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = Paragraph.Json; sourceTree = ""; };
@@ -356,7 +351,6 @@
0F6B6CE924508154007AB3C1 /* OHHTTPStubs.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = OHHTTPStubs.framework; sourceTree = BUILT_PRODUCTS_DIR; };
0F6B6CEB24508165007AB3C1 /* DVR.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DVR.framework; sourceTree = BUILT_PRODUCTS_DIR; };
0F6B6CED24508165007AB3C1 /* OHHTTPStubs.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = OHHTTPStubs.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 0F6D3A84243F064900FCFEBC /* EntryAPITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EntryAPITest.swift; sourceTree = ""; };
0F7138C42424A70C00B314B0 /* AssetQueryTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssetQueryTest.swift; sourceTree = ""; };
0F7138CC2424A94000B314B0 /* QueryTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QueryTest.swift; sourceTree = ""; };
0F7138D02424E98D00B314B0 /* ParameterEncoding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParameterEncoding.swift; sourceTree = ""; };
@@ -388,10 +382,19 @@
0FFA5DB3241F99F9003B3AF5 /* FatalError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FatalError.swift; sourceTree = ""; };
0FFA5DBB241F9A6C003B3AF5 /* XCTestCase+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "XCTestCase+Extension.swift"; sourceTree = ""; };
0FFB22B3261C98E50056AEE0 /* .env */ = {isa = PBXFileReference; lastKnownFileType = text; path = .env; sourceTree = ""; };
- 0FFBB4422446F219000D2795 /* AssetQueryAPITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssetQueryAPITest.swift; sourceTree = ""; };
0FFBB4462446F9A4000D2795 /* Asset.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Asset.json; sourceTree = ""; };
0FFBB44B24470C43000D2795 /* ContentStackLogTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentStackLogTest.swift; sourceTree = ""; };
- 64F522052BF5C65300AE6E0F /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; };
+ 470253922C0C612A009BDF8B /* TaxonomyModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TaxonomyModel.swift; sourceTree = ""; };
+ 470657532B5E785C00BBFF88 /* ContentTypeQueryAPITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentTypeQueryAPITest.swift; sourceTree = ""; };
+ 470657572B5E788400BBFF88 /* EntryAPITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EntryAPITest.swift; sourceTree = ""; };
+ 4706575B2B5E78B300BBFF88 /* AssetQueryAPITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssetQueryAPITest.swift; sourceTree = ""; };
+ 4706575F2B5E797300BBFF88 /* ContentstackTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentstackTest.swift; sourceTree = ""; };
+ 470657632B5E7F5400BBFF88 /* DVR.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DVR.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 47161AC42B5D744E00AD615B /* DVR.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DVR.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 47161ACB2B5D788E00AD615B /* DVR.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DVR.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 47AAE08F2B60420E0098655A /* SyncAPITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncAPITest.swift; sourceTree = ""; };
+ 47B4DC612C232A8200370CFC /* TaxonomyTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TaxonomyTest.swift; sourceTree = ""; };
+ 47C6EFC12C0B5B9400F0D5CF /* Taxonomy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Taxonomy.swift; sourceTree = ""; };
OBJ_17 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; };
OBJ_18 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; };
OBJ_6 /* Package.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; };
@@ -402,7 +405,8 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 0FD6F8F22620194100636504 /* ContentstackUtils in Frameworks */,
+ 47161ACA2B5D747D00AD615B /* DVR in Frameworks */,
+ 642AD4332B86110100E2AFDF /* ContentstackUtils in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -410,8 +414,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 0F1DCC73243D991100EED404 /* DVR.framework in Frameworks */,
- 0F1DCC75243D991100EED404 /* OHHTTPStubs.framework in Frameworks */,
0F4A75D4241BAC4300E3A024 /* Contentstack.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -420,7 +422,8 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 0FD6F9102620194C00636504 /* ContentstackUtils in Frameworks */,
+ 642AD4352B86111700E2AFDF /* DVR in Frameworks */,
+ 642AD4372B86111A00E2AFDF /* ContentstackUtils in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -428,8 +431,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 0F6B6CE824508154007AB3C1 /* DVR.framework in Frameworks */,
- 0F6B6CEA24508154007AB3C1 /* OHHTTPStubs.framework in Frameworks */,
0F4A75F4241BAE6C00E3A024 /* Contentstack.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -438,7 +439,8 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 0FD6F9122620195300636504 /* ContentstackUtils in Frameworks */,
+ 642AD4392B86112100E2AFDF /* ContentstackUtils in Frameworks */,
+ 642AD43B2B86112400E2AFDF /* DVR in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -446,8 +448,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 0F6B6CEC24508165007AB3C1 /* DVR.framework in Frameworks */,
- 0F6B6CEE24508165007AB3C1 /* OHHTTPStubs.framework in Frameworks */,
0F4A7610241BAFE000E3A024 /* Contentstack.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -456,7 +456,8 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 0FD6F9142620195800636504 /* ContentstackUtils in Frameworks */,
+ 642AD43D2B86112C00E2AFDF /* ContentstackUtils in Frameworks */,
+ 642AD43F2B86112F00E2AFDF /* DVR in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -484,6 +485,7 @@
0F1DCC7F243DCF2500EED404 /* EntryModel.swift */,
0F1DCC84243DD01900EED404 /* AssetModel.swift */,
0F1DCC89243DD20E00EED404 /* ContentTypeModel.swift */,
+ 470253922C0C612A009BDF8B /* TaxonomyModel.swift */,
);
name = Models;
sourceTree = "";
@@ -491,6 +493,9 @@
0F1DCC6D243D980900EED404 /* Frameworks */ = {
isa = PBXGroup;
children = (
+ 470657632B5E7F5400BBFF88 /* DVR.framework */,
+ 47161ACB2B5D788E00AD615B /* DVR.framework */,
+ 47161AC42B5D744E00AD615B /* DVR.framework */,
0F6B6CEB24508165007AB3C1 /* DVR.framework */,
0F6B6CED24508165007AB3C1 /* OHHTTPStubs.framework */,
0F6B6CE724508154007AB3C1 /* DVR.framework */,
@@ -634,13 +639,13 @@
0FFA5D9D241F8F9B003B3AF5 /* APITests */ = {
isa = PBXGroup;
children = (
- 0F4C0A8A243C6D8A006604B7 /* ContentstackTest.swift */,
- 0F4C0A8E243C7D88006604B7 /* SyncAPITest.swift */,
- 0F1DCC8E243DDB7300EED404 /* ContentTypeQueryAPITest.swift */,
- 0F6D3A84243F064900FCFEBC /* EntryAPITest.swift */,
- 0FFBB4422446F219000D2795 /* AssetQueryAPITest.swift */,
- 0F50EA11244EC44800E5D705 /* QueryOnAPITest.swift */,
0F50EA1C244ED88C00E5D705 /* StackCacheAPITest.swift */,
+ 470657532B5E785C00BBFF88 /* ContentTypeQueryAPITest.swift */,
+ 470657572B5E788400BBFF88 /* EntryAPITest.swift */,
+ 4706575B2B5E78B300BBFF88 /* AssetQueryAPITest.swift */,
+ 4706575F2B5E797300BBFF88 /* ContentstackTest.swift */,
+ 47AAE08F2B60420E0098655A /* SyncAPITest.swift */,
+ 47B4DC612C232A8200370CFC /* TaxonomyTest.swift */,
);
name = APITests;
sourceTree = "";
@@ -714,7 +719,7 @@
0FFA5D79241F7033003B3AF5 /* ContentType.swift */,
0F4A762B241BB0D200E3A024 /* Contentstack.swift */,
0FFA5D56241F5085003B3AF5 /* ContentstackConfig.swift */,
- 64F522052BF5C65300AE6E0F /* PrivacyInfo.xcprivacy */,
+ 47C6EFC12C0B5B9400F0D5CF /* Taxonomy.swift */,
);
path = Sources;
sourceTree = SOURCE_ROOT;
@@ -772,7 +777,8 @@
);
name = "Contentstack iOS";
packageProductDependencies = (
- 0FD6F8F12620194100636504 /* ContentstackUtils */,
+ 47161AC92B5D747D00AD615B /* DVR */,
+ 642AD4322B86110100E2AFDF /* ContentstackUtils */,
);
productName = "Contentstack iOS";
productReference = 0F4A75CB241BAC4300E3A024 /* Contentstack.framework */;
@@ -811,7 +817,8 @@
);
name = "Contentstack macOS";
packageProductDependencies = (
- 0FD6F90F2620194C00636504 /* ContentstackUtils */,
+ 642AD4342B86111700E2AFDF /* DVR */,
+ 642AD4362B86111A00E2AFDF /* ContentstackUtils */,
);
productName = "Contentstack macOS";
productReference = 0F4A75EB241BAE6C00E3A024 /* Contentstack.framework */;
@@ -850,7 +857,8 @@
);
name = "Contentstack tvOS";
packageProductDependencies = (
- 0FD6F9112620195300636504 /* ContentstackUtils */,
+ 642AD4382B86112100E2AFDF /* ContentstackUtils */,
+ 642AD43A2B86112400E2AFDF /* DVR */,
);
productName = "Contentstack tvOS";
productReference = 0F4A7607241BAFE000E3A024 /* Contentstack.framework */;
@@ -889,7 +897,8 @@
);
name = "Contentstack watchOS";
packageProductDependencies = (
- 0FD6F9132620195800636504 /* ContentstackUtils */,
+ 642AD43C2B86112C00E2AFDF /* ContentstackUtils */,
+ 642AD43E2B86112F00E2AFDF /* DVR */,
);
productName = "Contentstack watchOS";
productReference = 0F4A7623241BB0A300E3A024 /* Contentstack.framework */;
@@ -948,7 +957,8 @@
);
mainGroup = OBJ_5;
packageReferences = (
- 0FD6F8F02620194100636504 /* XCRemoteSwiftPackageReference "contentstack-utils-swift" */,
+ 47161AC82B5D747600AD615B /* XCRemoteSwiftPackageReference "DVR" */,
+ 642AD4312B8610F200E2AFDF /* XCRemoteSwiftPackageReference "contentstack-utils-swift" */,
);
productRefGroup = OBJ_14 /* Products */;
projectDirPath = "";
@@ -970,7 +980,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 64F522062BF5C65300AE6E0F /* PrivacyInfo.xcprivacy in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -984,7 +993,6 @@
0F359991257BE29B00B3DB89 /* Asset.json in Resources */,
0F359992257BE2A700B3DB89 /* ContentType.json in Resources */,
0F4C0A87243C6990006604B7 /* config.json in Resources */,
- 64F522072BF5C65300AE6E0F /* PrivacyInfo.xcprivacy in Resources */,
0F5794C2266A37120082815C /* Paragraph.Json in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -993,7 +1001,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 64F522082BF5C65300AE6E0F /* PrivacyInfo.xcprivacy in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1007,7 +1014,6 @@
0F50EA17244ED7F500E5D705 /* QueryOn.json in Resources */,
0F796C532449EA8700EA04D5 /* Entry.json in Resources */,
0F4C0A88243C6990006604B7 /* config.json in Resources */,
- 64F522092BF5C65300AE6E0F /* PrivacyInfo.xcprivacy in Resources */,
0F5794C3266A37120082815C /* Paragraph.Json in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -1016,7 +1022,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 64F5220A2BF5C65300AE6E0F /* PrivacyInfo.xcprivacy in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1030,7 +1035,6 @@
0F50EA18244ED7F500E5D705 /* QueryOn.json in Resources */,
0F796C542449EA8700EA04D5 /* Entry.json in Resources */,
0F4C0A89243C6990006604B7 /* config.json in Resources */,
- 64F5220B2BF5C65300AE6E0F /* PrivacyInfo.xcprivacy in Resources */,
0F5794C4266A37120082815C /* Paragraph.Json in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -1039,7 +1043,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 64F5220C2BF5C65300AE6E0F /* PrivacyInfo.xcprivacy in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1054,6 +1057,7 @@
0FFA5D98241F8EB2003B3AF5 /* Entry.swift in Sources */,
0F02466F243210E200F72181 /* ImageParameter.swift in Sources */,
0FFA5D63241F5575003B3AF5 /* CSDefinitions.swift in Sources */,
+ 47C6EFC22C0B5B9400F0D5CF /* Taxonomy.swift in Sources */,
0FFA5D7A241F7033003B3AF5 /* ContentType.swift in Sources */,
0F0246662431F37300F72181 /* ImageTransform.swift in Sources */,
0F4FBCA42420B5F4007B8CAE /* Utils.swift in Sources */,
@@ -1077,6 +1081,7 @@
0FFA5D7F241F7060003B3AF5 /* SystemFields.swift in Sources */,
0F244FA224406A2D003C3F26 /* SyncStack.swift in Sources */,
0FFA5D70241F6BFA003B3AF5 /* Decodable.swift in Sources */,
+ 470253932C0C612A009BDF8B /* TaxonomyModel.swift in Sources */,
0FD39D40242352F800E34826 /* QueryableRange.swift in Sources */,
0FFA5D67241F5575003B3AF5 /* CSURLCache.swift in Sources */,
0FC52DBA2452EDE000B33614 /* EntryQuaryable.swift in Sources */,
@@ -1090,35 +1095,35 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 0F50EA12244EC44800E5D705 /* QueryOnAPITest.swift in Sources */,
0F60CA332428D02600ED67E6 /* QueryEntryType.swift in Sources */,
+ 4706575C2B5E78B300BBFF88 /* AssetQueryAPITest.swift in Sources */,
0F60CA2F2428949C00ED67E6 /* EntryTest.swift in Sources */,
- 0F4C0A8B243C6D8A006604B7 /* ContentstackTest.swift in Sources */,
0F244FA724406A4A003C3F26 /* EntryQueriableTest.swift in Sources */,
- 0F1DCC8F243DDB7300EED404 /* ContentTypeQueryAPITest.swift in Sources */,
0F463113243B044F001CE1FA /* SyncTest.swift in Sources */,
0FFA5DBC241F9A6C003B3AF5 /* XCTestCase+Extension.swift in Sources */,
0F4FBCA02420B0E4007B8CAE /* DateTest.swift in Sources */,
0FFA5D4A241F4DED003B3AF5 /* ContentstackConfigTest.swift in Sources */,
+ 47B4DC622C232A8200370CFC /* TaxonomyTest.swift in Sources */,
0F50EA1D244ED88C00E5D705 /* StackCacheAPITest.swift in Sources */,
- 0FFBB4432446F219000D2795 /* AssetQueryAPITest.swift in Sources */,
+ 470657582B5E788400BBFF88 /* EntryAPITest.swift in Sources */,
0F096B14243610470094F042 /* ImageTransformTestAdditional.swift in Sources */,
0FD39D4A24237A0400E34826 /* ContentTypeQueryTest.swift in Sources */,
0FFBB44C24470C43000D2795 /* ContentStackLogTest.swift in Sources */,
0F77CFB824373B8A00C57764 /* ImageTransformEquatableTest.swift in Sources */,
0F02466B243201B500F72181 /* ImageTransformTest.swift in Sources */,
+ 47AAE0902B60420E0098655A /* SyncAPITest.swift in Sources */,
+ 470657542B5E785C00BBFF88 /* ContentTypeQueryAPITest.swift in Sources */,
+ 470657602B5E797300BBFF88 /* ContentstackTest.swift in Sources */,
0F4FBCA92420B615007B8CAE /* UtilsTest.swift in Sources */,
0F7138CD2424A94000B314B0 /* QueryTest.swift in Sources */,
0F50EA0E244EC3DD00E5D705 /* Session.swift in Sources */,
0FFA5D9F241F8FFE003B3AF5 /* ContentTypeTest.swift in Sources */,
0F4A7646241BB3CB00E3A024 /* ContentstackTests.swift in Sources */,
0F7138C52424A70C00B314B0 /* AssetQueryTest.swift in Sources */,
- 0F4C0A8F243C7D88006604B7 /* SyncAPITest.swift in Sources */,
0FFA5D8F241F8123003B3AF5 /* StackTest.swift in Sources */,
0FFA5DA3241F90BF003B3AF5 /* SutBuilder.swift in Sources */,
0F38D7E0242C7C9E00232D7F /* Product.swift in Sources */,
0F38D7E4242C831300232D7F /* AssetTest.swift in Sources */,
- 0F796C502449EA6000EA04D5 /* EntryAPITest.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1130,6 +1135,7 @@
0FFA5D99241F8EB2003B3AF5 /* Entry.swift in Sources */,
0F024670243210E200F72181 /* ImageParameter.swift in Sources */,
0FFA5D64241F5575003B3AF5 /* CSDefinitions.swift in Sources */,
+ 47C6EFC32C0B5B9400F0D5CF /* Taxonomy.swift in Sources */,
0FFA5D7B241F7033003B3AF5 /* ContentType.swift in Sources */,
0F0246672431F37300F72181 /* ImageTransform.swift in Sources */,
0F4FBCA52420B5F4007B8CAE /* Utils.swift in Sources */,
@@ -1153,6 +1159,7 @@
0FFA5D80241F7060003B3AF5 /* SystemFields.swift in Sources */,
0F244FA324406A2D003C3F26 /* SyncStack.swift in Sources */,
0FFA5D71241F6BFA003B3AF5 /* Decodable.swift in Sources */,
+ 470253942C0C612A009BDF8B /* TaxonomyModel.swift in Sources */,
0FD39D41242352F800E34826 /* QueryableRange.swift in Sources */,
0FFA5D68241F5575003B3AF5 /* CSURLCache.swift in Sources */,
0FC52DBB2452EDE000B33614 /* EntryQuaryable.swift in Sources */,
@@ -1166,31 +1173,31 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 0F50EA13244EC44800E5D705 /* QueryOnAPITest.swift in Sources */,
0F60CA342428D02600ED67E6 /* QueryEntryType.swift in Sources */,
+ 470657552B5E785C00BBFF88 /* ContentTypeQueryAPITest.swift in Sources */,
0F60CA302428949C00ED67E6 /* EntryTest.swift in Sources */,
- 0F4C0A8C243C6D8A006604B7 /* ContentstackTest.swift in Sources */,
0F244FA824406A4A003C3F26 /* EntryQueriableTest.swift in Sources */,
- 0F1DCC90243DDB7300EED404 /* ContentTypeQueryAPITest.swift in Sources */,
0F463114243B044F001CE1FA /* SyncTest.swift in Sources */,
+ 47AAE0912B60420E0098655A /* SyncAPITest.swift in Sources */,
0FFA5DBD241F9A6C003B3AF5 /* XCTestCase+Extension.swift in Sources */,
0F4FBCA12420B0E4007B8CAE /* DateTest.swift in Sources */,
+ 47B4DC632C232A8200370CFC /* TaxonomyTest.swift in Sources */,
0FFA5D90241F8126003B3AF5 /* ContentstackConfigTest.swift in Sources */,
0F50EA1E244ED88C00E5D705 /* StackCacheAPITest.swift in Sources */,
- 0FFBB4442446F219000D2795 /* AssetQueryAPITest.swift in Sources */,
0F096B15243610470094F042 /* ImageTransformTestAdditional.swift in Sources */,
0FD39D4B24237A0400E34826 /* ContentTypeQueryTest.swift in Sources */,
- 0F6D3A86243F064900FCFEBC /* EntryAPITest.swift in Sources */,
0FFBB44D24470C43000D2795 /* ContentStackLogTest.swift in Sources */,
+ 4706575D2B5E78B300BBFF88 /* AssetQueryAPITest.swift in Sources */,
0F77CFB924373B8F00C57764 /* ImageTransformEquatableTest.swift in Sources */,
0F02466C243201B500F72181 /* ImageTransformTest.swift in Sources */,
0F4FBCAA2420B615007B8CAE /* UtilsTest.swift in Sources */,
+ 470657592B5E788400BBFF88 /* EntryAPITest.swift in Sources */,
0F50EA0F244EC3DD00E5D705 /* Session.swift in Sources */,
0F7138CE2424A94000B314B0 /* QueryTest.swift in Sources */,
0FFA5DA0241F8FFE003B3AF5 /* ContentTypeTest.swift in Sources */,
0FFA5D8E241F8122003B3AF5 /* StackTest.swift in Sources */,
+ 470657612B5E797300BBFF88 /* ContentstackTest.swift in Sources */,
0F7138C62424A70C00B314B0 /* AssetQueryTest.swift in Sources */,
- 0F4C0A90243C7D88006604B7 /* SyncAPITest.swift in Sources */,
0F4A7647241BB3CC00E3A024 /* ContentstackTests.swift in Sources */,
0FFA5DA4241F90BF003B3AF5 /* SutBuilder.swift in Sources */,
0F38D7E1242C7C9E00232D7F /* Product.swift in Sources */,
@@ -1206,6 +1213,7 @@
0FFA5D9A241F8EB2003B3AF5 /* Entry.swift in Sources */,
0F024671243210E200F72181 /* ImageParameter.swift in Sources */,
0FFA5D65241F5575003B3AF5 /* CSDefinitions.swift in Sources */,
+ 47C6EFC42C0B5B9400F0D5CF /* Taxonomy.swift in Sources */,
0FFA5D7C241F7033003B3AF5 /* ContentType.swift in Sources */,
0F0246682431F37300F72181 /* ImageTransform.swift in Sources */,
0F4FBCA62420B5F4007B8CAE /* Utils.swift in Sources */,
@@ -1229,6 +1237,7 @@
0FFA5D81241F7060003B3AF5 /* SystemFields.swift in Sources */,
0F244FA424406A2D003C3F26 /* SyncStack.swift in Sources */,
0FFA5D72241F6BFA003B3AF5 /* Decodable.swift in Sources */,
+ 470253952C0C612A009BDF8B /* TaxonomyModel.swift in Sources */,
0FD39D42242352F800E34826 /* QueryableRange.swift in Sources */,
0FFA5D69241F5575003B3AF5 /* CSURLCache.swift in Sources */,
0FC52DBC2452EDE000B33614 /* EntryQuaryable.swift in Sources */,
@@ -1242,31 +1251,31 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 0F50EA14244EC44800E5D705 /* QueryOnAPITest.swift in Sources */,
0F60CA352428D02600ED67E6 /* QueryEntryType.swift in Sources */,
+ 470657562B5E785C00BBFF88 /* ContentTypeQueryAPITest.swift in Sources */,
0F60CA312428949C00ED67E6 /* EntryTest.swift in Sources */,
- 0F4C0A8D243C6D8A006604B7 /* ContentstackTest.swift in Sources */,
0F244FA924406A4A003C3F26 /* EntryQueriableTest.swift in Sources */,
- 0F1DCC91243DDB7300EED404 /* ContentTypeQueryAPITest.swift in Sources */,
0F463115243B044F001CE1FA /* SyncTest.swift in Sources */,
+ 47AAE0922B60420E0098655A /* SyncAPITest.swift in Sources */,
0FFA5DBE241F9A6C003B3AF5 /* XCTestCase+Extension.swift in Sources */,
0F4FBCA22420B0E4007B8CAE /* DateTest.swift in Sources */,
+ 47B4DC642C232A8200370CFC /* TaxonomyTest.swift in Sources */,
0FFA5D91241F8127003B3AF5 /* ContentstackConfigTest.swift in Sources */,
0F50EA1F244ED88C00E5D705 /* StackCacheAPITest.swift in Sources */,
- 0FFBB4452446F219000D2795 /* AssetQueryAPITest.swift in Sources */,
0F096B16243610470094F042 /* ImageTransformTestAdditional.swift in Sources */,
0FD39D4C24237A0400E34826 /* ContentTypeQueryTest.swift in Sources */,
- 0F6D3A87243F064900FCFEBC /* EntryAPITest.swift in Sources */,
0FFBB44E24470C43000D2795 /* ContentStackLogTest.swift in Sources */,
+ 4706575E2B5E78B300BBFF88 /* AssetQueryAPITest.swift in Sources */,
0F77CFBA24373B9000C57764 /* ImageTransformEquatableTest.swift in Sources */,
0F02466D243201B500F72181 /* ImageTransformTest.swift in Sources */,
0F4FBCAB2420B615007B8CAE /* UtilsTest.swift in Sources */,
+ 4706575A2B5E788400BBFF88 /* EntryAPITest.swift in Sources */,
0F50EA10244EC3DD00E5D705 /* Session.swift in Sources */,
0F7138CF2424A94000B314B0 /* QueryTest.swift in Sources */,
0FFA5DA1241F8FFE003B3AF5 /* ContentTypeTest.swift in Sources */,
0FFA5D8D241F8122003B3AF5 /* StackTest.swift in Sources */,
+ 470657622B5E797300BBFF88 /* ContentstackTest.swift in Sources */,
0F7138C72424A70C00B314B0 /* AssetQueryTest.swift in Sources */,
- 0F4C0A91243C7D88006604B7 /* SyncAPITest.swift in Sources */,
0F4A7648241BB3CE00E3A024 /* ContentstackTests.swift in Sources */,
0FFA5DA5241F90BF003B3AF5 /* SutBuilder.swift in Sources */,
0F38D7E2242C7C9E00232D7F /* Product.swift in Sources */,
@@ -1282,6 +1291,7 @@
0FFA5D9B241F8EB2003B3AF5 /* Entry.swift in Sources */,
0F024672243210E200F72181 /* ImageParameter.swift in Sources */,
0FFA5D66241F5575003B3AF5 /* CSDefinitions.swift in Sources */,
+ 47C6EFC52C0B5B9400F0D5CF /* Taxonomy.swift in Sources */,
0FFA5D7D241F7033003B3AF5 /* ContentType.swift in Sources */,
0F0246692431F37300F72181 /* ImageTransform.swift in Sources */,
0F4FBCA72420B5F4007B8CAE /* Utils.swift in Sources */,
@@ -1305,6 +1315,7 @@
0FFA5D82241F7060003B3AF5 /* SystemFields.swift in Sources */,
0F244FA524406A2D003C3F26 /* SyncStack.swift in Sources */,
0FFA5D73241F6BFA003B3AF5 /* Decodable.swift in Sources */,
+ 470253962C0C612A009BDF8B /* TaxonomyModel.swift in Sources */,
0FD39D43242352F800E34826 /* QueryableRange.swift in Sources */,
0FFA5D6A241F5575003B3AF5 /* CSURLCache.swift in Sources */,
0FC52DBD2452EDE000B33614 /* EntryQuaryable.swift in Sources */,
@@ -1367,9 +1378,11 @@
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = SMAKUMV86W;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
@@ -1390,7 +1403,7 @@
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_FILE = "Supporting Files/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -1447,15 +1460,18 @@
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = SMAKUMV86W;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -1466,7 +1482,7 @@
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_FILE = "Supporting Files/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -1494,8 +1510,8 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 0F4FBC9A2420A17F007B8CAE /* Config.xcconfig */;
buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ALWAYS_SEARCH_USER_PATHS = NO;
+ "ARCHS[sdk=*]" = "$(ARCHS_STANDARD)";
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
@@ -1524,8 +1540,10 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = SMAKUMV86W;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
+ "EXCLUDED_ARCHS[sdk=*]" = arm64;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
@@ -1562,7 +1580,6 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 0F4FBC9A2420A17F007B8CAE /* Config.xcconfig */;
buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
@@ -1593,8 +1610,11 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
+ DEVELOPMENT_TEAM = SMAKUMV86W;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ "EXCLUDED_ARCHS[sdk=*]" = arm64;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -1663,6 +1683,7 @@
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
+ "EXCLUDED_ARCHS[sdk=*]" = arm64;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
@@ -1684,7 +1705,7 @@
"@executable_path/../Frameworks",
"@loader_path/Frameworks",
);
- MACOSX_DEPLOYMENT_TARGET = 10.13;
+ MACOSX_DEPLOYMENT_TARGET = 10.15;
MARKETING_VERSION = 1.2.5;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
@@ -1744,6 +1765,7 @@
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
+ "EXCLUDED_ARCHS[sdk=*]" = arm64;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -1760,7 +1782,7 @@
"@executable_path/../Frameworks",
"@loader_path/Frameworks",
);
- MACOSX_DEPLOYMENT_TARGET = 10.13;
+ MACOSX_DEPLOYMENT_TARGET = 10.15;
MARKETING_VERSION = 1.2.5;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
@@ -1779,7 +1801,6 @@
0F4A7600241BAE6C00E3A024 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
@@ -1845,7 +1866,6 @@
0F4A7601241BAE6C00E3A024 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
@@ -1975,7 +1995,7 @@
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 3;
- TVOS_DEPLOYMENT_TARGET = 11.0;
+ TVOS_DEPLOYMENT_TARGET = 13.0;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
WATCHOS_DEPLOYMENT_TARGET = 2.0;
@@ -2048,7 +2068,7 @@
SUPPORTED_PLATFORMS = "appletvsimulator appletvos";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 3;
- TVOS_DEPLOYMENT_TARGET = 11.0;
+ TVOS_DEPLOYMENT_TARGET = 13.0;
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@@ -2059,7 +2079,6 @@
0F4A761C241BAFE000E3A024 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
@@ -2126,7 +2145,6 @@
0F4A761D241BAFE000E3A024 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
@@ -2263,7 +2281,7 @@
TVOS_DEPLOYMENT_TARGET = 9.0;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
- WATCHOS_DEPLOYMENT_TARGET = 4.0;
+ WATCHOS_DEPLOYMENT_TARGET = 6.0;
};
name = Debug;
};
@@ -2339,7 +2357,7 @@
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
- WATCHOS_DEPLOYMENT_TARGET = 4.0;
+ WATCHOS_DEPLOYMENT_TARGET = 6.0;
};
name = Release;
};
@@ -2347,20 +2365,22 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 0F4FBC9A2420A17F007B8CAE /* Config.xcconfig */;
buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD)";
CLANG_ENABLE_OBJC_ARC = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_NS_ASSERTIONS = YES;
+ "EXCLUDED_ARCHS[sdk=*]" = arm64;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
"SWIFT_PACKAGE=1",
"DEBUG=1",
);
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
- MACOSX_DEPLOYMENT_TARGET = 10.13;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ MACOSX_DEPLOYMENT_TARGET = 10.15;
ONLY_ACTIVE_ARCH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -DXcode";
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -2368,7 +2388,9 @@
SUPPORTED_PLATFORMS = "macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) SWIFT_PACKAGE DEBUG";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ TVOS_DEPLOYMENT_TARGET = 13.0;
USE_HEADERMAP = NO;
+ WATCHOS_DEPLOYMENT_TARGET = 6.0;
};
name = Debug;
};
@@ -2376,18 +2398,21 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 0F4FBC9A2420A17F007B8CAE /* Config.xcconfig */;
buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD)";
CLANG_ENABLE_OBJC_ARC = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DYLIB_INSTALL_NAME_BASE = "@rpath";
+ "EXCLUDED_ARCHS[sdk=*]" = arm64;
GCC_OPTIMIZATION_LEVEL = s;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
"SWIFT_PACKAGE=1",
);
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
- MACOSX_DEPLOYMENT_TARGET = 10.13;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ MACOSX_DEPLOYMENT_TARGET = 10.15;
+ ONLY_ACTIVE_ARCH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -DXcode";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
@@ -2395,7 +2420,9 @@
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) SWIFT_PACKAGE";
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
+ TVOS_DEPLOYMENT_TARGET = 13.0;
USE_HEADERMAP = NO;
+ WATCHOS_DEPLOYMENT_TARGET = 6.0;
};
name = Release;
};
@@ -2477,37 +2504,65 @@
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
- 0FD6F8F02620194100636504 /* XCRemoteSwiftPackageReference "contentstack-utils-swift" */ = {
+ 47161AC82B5D747600AD615B /* XCRemoteSwiftPackageReference "DVR" */ = {
isa = XCRemoteSwiftPackageReference;
- repositoryURL = "https://github.com/contentstack/contentstack-utils-swift.git";
+ repositoryURL = "https://github.com/venmo/DVR.git";
requirement = {
kind = upToNextMajorVersion;
- minimumVersion = 1.0.0;
+ minimumVersion = 1.3.1;
+ };
+ };
+ 642AD4312B8610F200E2AFDF /* XCRemoteSwiftPackageReference "contentstack-utils-swift" */ = {
+ isa = XCRemoteSwiftPackageReference;
+ repositoryURL = "https://github.com/contentstack/contentstack-utils-swift";
+ requirement = {
+ kind = upToNextMajorVersion;
+ minimumVersion = 1.3.0;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
- 0FD6F8F12620194100636504 /* ContentstackUtils */ = {
+ 47161AC92B5D747D00AD615B /* DVR */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 47161AC82B5D747600AD615B /* XCRemoteSwiftPackageReference "DVR" */;
+ productName = DVR;
+ };
+ 642AD4322B86110100E2AFDF /* ContentstackUtils */ = {
isa = XCSwiftPackageProductDependency;
- package = 0FD6F8F02620194100636504 /* XCRemoteSwiftPackageReference "contentstack-utils-swift" */;
+ package = 642AD4312B8610F200E2AFDF /* XCRemoteSwiftPackageReference "contentstack-utils-swift" */;
productName = ContentstackUtils;
};
- 0FD6F90F2620194C00636504 /* ContentstackUtils */ = {
+ 642AD4342B86111700E2AFDF /* DVR */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 47161AC82B5D747600AD615B /* XCRemoteSwiftPackageReference "DVR" */;
+ productName = DVR;
+ };
+ 642AD4362B86111A00E2AFDF /* ContentstackUtils */ = {
isa = XCSwiftPackageProductDependency;
- package = 0FD6F8F02620194100636504 /* XCRemoteSwiftPackageReference "contentstack-utils-swift" */;
+ package = 642AD4312B8610F200E2AFDF /* XCRemoteSwiftPackageReference "contentstack-utils-swift" */;
productName = ContentstackUtils;
};
- 0FD6F9112620195300636504 /* ContentstackUtils */ = {
+ 642AD4382B86112100E2AFDF /* ContentstackUtils */ = {
isa = XCSwiftPackageProductDependency;
- package = 0FD6F8F02620194100636504 /* XCRemoteSwiftPackageReference "contentstack-utils-swift" */;
+ package = 642AD4312B8610F200E2AFDF /* XCRemoteSwiftPackageReference "contentstack-utils-swift" */;
productName = ContentstackUtils;
};
- 0FD6F9132620195800636504 /* ContentstackUtils */ = {
+ 642AD43A2B86112400E2AFDF /* DVR */ = {
isa = XCSwiftPackageProductDependency;
- package = 0FD6F8F02620194100636504 /* XCRemoteSwiftPackageReference "contentstack-utils-swift" */;
+ package = 47161AC82B5D747600AD615B /* XCRemoteSwiftPackageReference "DVR" */;
+ productName = DVR;
+ };
+ 642AD43C2B86112C00E2AFDF /* ContentstackUtils */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 642AD4312B8610F200E2AFDF /* XCRemoteSwiftPackageReference "contentstack-utils-swift" */;
productName = ContentstackUtils;
};
+ 642AD43E2B86112F00E2AFDF /* DVR */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 47161AC82B5D747600AD615B /* XCRemoteSwiftPackageReference "DVR" */;
+ productName = DVR;
+ };
/* End XCSwiftPackageProductDependency section */
};
rootObject = OBJ_1 /* Project object */;
diff --git a/Contentstack.xcodeproj/xcshareddata/xcschemes/Contentstack iOS Tests.xcscheme b/Contentstack.xcodeproj/xcshareddata/xcschemes/Contentstack iOS Tests.xcscheme
new file mode 100644
index 00000000..ff8bf292
--- /dev/null
+++ b/Contentstack.xcodeproj/xcshareddata/xcschemes/Contentstack iOS Tests.xcscheme
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Contentstack.xcworkspace/xcshareddata/xcschemes/Contentstack iOS.xcscheme b/Contentstack.xcworkspace/xcshareddata/xcschemes/Contentstack iOS.xcscheme
index 7ba19d5e..82c0c141 100644
--- a/Contentstack.xcworkspace/xcshareddata/xcschemes/Contentstack iOS.xcscheme
+++ b/Contentstack.xcworkspace/xcshareddata/xcschemes/Contentstack iOS.xcscheme
@@ -24,8 +24,8 @@
diff --git a/Package.swift b/Package.swift
index 6d2a3ae6..5a30f241 100644
--- a/Package.swift
+++ b/Package.swift
@@ -7,10 +7,10 @@ import PackageDescription
let package = Package(
name: "ContentstackSwift",
- platforms: [.macOS(.v10_13),
- .iOS(.v11),
- .tvOS(.v11),
- .watchOS(.v4)],
+ platforms: [.macOS(.v10_15),
+ .iOS(.v13),
+ .tvOS(.v13),
+ .watchOS(.v6)],
products: [
// Products define the executables and libraries produced by a package, and make them visible to other packages.
diff --git a/Sources/ContentstackResponse.swift b/Sources/ContentstackResponse.swift
index 038c0bc6..cf36c459 100644
--- a/Sources/ContentstackResponse.swift
+++ b/Sources/ContentstackResponse.swift
@@ -81,6 +81,15 @@ where ItemType: EndpointAccessible & Decodable {
}
self.items = [entry]
}
+ case .taxnomies:
+ if let taxonomies = try container.decodeIfPresent([ItemType].self, forKey: .entries) {
+ let containerFields = try decoder.container(keyedBy: JSONCodingKeys.self)
+ let response = try containerFields.decode(Dictionary.self)
+ if let contentType = response["content_type"] as? ContentTypeModel {
+ fields = ["content_type": contentType]
+ }
+ self.items = taxonomies
+ }
default:
print("sync")
}
diff --git a/Sources/EndPoint.swift b/Sources/EndPoint.swift
index 55f91cec..14cc0045 100644
--- a/Sources/EndPoint.swift
+++ b/Sources/EndPoint.swift
@@ -20,6 +20,8 @@ public enum Endpoint: String {
case assets
/// The synchronization endpoint.
case sync = "stacks/sync"
+
+ case taxnomies = "taxonomies"
/// The path component string for the current endpoint.
public var pathComponent: String {
return rawValue
diff --git a/Sources/Query.swift b/Sources/Query.swift
index 799aa025..de6b9f87 100644
--- a/Sources/Query.swift
+++ b/Sources/Query.swift
@@ -12,7 +12,7 @@ public class Query: BaseQuery, EntryQueryable {
public typealias ResourceType = EntryModel
- internal var contentTypeUid: String
+ internal var contentTypeUid: String?
/// Stack instance for Entry to be fetched
public var stack: Stack
/// URI Parameters
@@ -23,11 +23,16 @@ public class Query: BaseQuery, EntryQueryable {
public var cachePolicy: CachePolicy
- internal required init(contentType: ContentType) {
- self.stack = contentType.stack
- self.contentTypeUid = contentType.uid!
- self.cachePolicy = contentType.cachePolicy
- self.parameters[QueryParameter.contentType] = contentTypeUid
+ internal required init(contentType: ContentType?, stack: Stack? = nil, cachePolicy: CachePolicy? = nil) {
+ if let contentType = contentType {
+ self.stack = contentType.stack
+ self.contentTypeUid = contentType.uid!
+ self.cachePolicy = contentType.cachePolicy
+ self.parameters[QueryParameter.contentType] = contentTypeUid
+ } else {
+ self.stack = stack!
+ self.cachePolicy = cachePolicy!
+ }
}
/// Use this method to do a search on `Entries` which enables
diff --git a/Sources/QueryOperation.swift b/Sources/QueryOperation.swift
index e1fd8cd1..cb9bf897 100644
--- a/Sources/QueryOperation.swift
+++ b/Sources/QueryOperation.swift
@@ -85,6 +85,10 @@ extension Query {
case exists(Bool)
/// Search on a field by Regex.
case matches(String)
+ case eqBelow(String)
+ case below(String)
+ case eqAbove(String)
+ case above(String)
internal var string: String {
switch self {
@@ -98,6 +102,10 @@ extension Query {
case .isGreaterThanOrEqual: return "$gte"
case .exists: return "$exists"
case .matches: return "$regex"
+ case .eqBelow: return "$eq_below"
+ case .below: return "$below"
+ case .eqAbove: return "$eq_above"
+ case .above: return "$above"
}
}
@@ -137,6 +145,10 @@ extension Query {
return value.stringValue
case .exists(let value): return value
case .matches(let value): return value
+ case .eqBelow(let value): return value
+ case .below(let value): return value
+ case .eqAbove(let value): return value
+ case .above(let value): return value
}
}
internal var query: Any {
diff --git a/Sources/QueryParameter.swift b/Sources/QueryParameter.swift
index df48e279..dcf9de2e 100644
--- a/Sources/QueryParameter.swift
+++ b/Sources/QueryParameter.swift
@@ -31,6 +31,8 @@ internal enum QueryParameter {
internal static let tags = "tags"
internal static let contentType = "content_type"
+
+ internal static let taxonomies = "taxonomies"
internal static let uid = "uid"
diff --git a/Sources/QueryProtocols.swift b/Sources/QueryProtocols.swift
index d4c15602..2146af17 100644
--- a/Sources/QueryProtocols.swift
+++ b/Sources/QueryProtocols.swift
@@ -65,19 +65,20 @@ extension BaseQuery {
/// }
/// }
/// ```
+ ///
public func find(_ completion: @escaping ResultsHandler>)
- where ResourceType: Decodable & EndpointAccessible {
- if self.queryParameter.count > 0,
- let query = self.queryParameter.jsonString {
- self.parameters[QueryParameter.query] = query
- }
- self.stack.fetch(endpoint: ResourceType.endpoint,
- cachePolicy: self.cachePolicy, parameters: parameters, headers: headers, then: completion)
+ where ResourceType: Decodable & EndpointAccessible {
+ if self.queryParameter.count > 0,
+ let query = self.queryParameter.jsonString {
+ self.parameters[QueryParameter.query] = query
+ }
+ self.stack.fetch(endpoint: ResourceType.endpoint,
+ cachePolicy: self.cachePolicy, parameters: parameters, headers: headers, then: completion)
}
}
/// A concrete implementation of BaseQuery which serves as the base class for `Query`,
/// `ContentTypeQuery` and `AssetQuery`.
-public protocol BaseQuery: QueryProtocol, Queryable {}
+public protocol BaseQuery: QueryProtocol {}
extension BaseQuery {
/// Method to adding Query.Operation to a Query/
/// - Parameters:
diff --git a/Sources/Stack.swift b/Sources/Stack.swift
index 3a788131..753def92 100644
--- a/Sources/Stack.swift
+++ b/Sources/Stack.swift
@@ -106,6 +106,10 @@ public class Stack: CachePolicyAccessible {
public func contentType(uid: String? = nil) -> ContentType {
return ContentType(uid, stack: self)
}
+
+ public func taxonomy(uid: String? = nil) -> Taxonomy {
+ return Taxonomy(stack: self)
+ }
/// Get instance of `Asset` to fetch `Assets` or fetch specific `Asset`.
///
@@ -132,9 +136,14 @@ public class Stack: CachePolicyAccessible {
switch endpoint {
case .entries:
urlComponents.path = "\(urlComponents.path)/\(Endpoint.contenttype.pathComponent)/\(String(describing: parameters[QueryParameter.contentType]!))"
+ case .taxnomies:
+ urlComponents.path = "\(urlComponents.path)/\(Endpoint.taxnomies.pathComponent)/entries"
default: break
}
- urlComponents.path = "\(urlComponents.path)/\(endpoint.pathComponent)"
+
+ if endpoint != .taxnomies {
+ urlComponents.path = "\(urlComponents.path)/\(endpoint.pathComponent)"
+ }
if let uid = parameters[QueryParameter.uid] {
urlComponents.path = "\(urlComponents.path)/\(uid)"
@@ -164,31 +173,6 @@ public class Stack: CachePolicyAccessible {
return urlComponents.url!
}
- internal func fetch(endpoint: Endpoint,
- cachePolicy: CachePolicy,
- parameters: Parameters = [:],
- headers: [String: String] = [:],
- then completion: @escaping ResultsHandler)
- where ResourceType: Decodable {
- let url = self.url(endpoint: endpoint, parameters: parameters)
- self.fetchUrl(url,
- headers: headers,
- cachePolicy: cachePolicy,
- then: { (result: Result, responseType: ResponseType) in
- switch result {
- case .success(let data):
- do {
- let jsonParse = try self.jsonDecoder.decode(ResourceType.self, from: data)
- completion(Result.success(jsonParse), responseType)
- } catch let error {
- completion(Result.failure(error), responseType)
- }
- case .failure(let error):
- completion(Result.failure(error), responseType)
- }
- })
- }
-
private func fetchUrl(_ url: URL, headers:[String: String], cachePolicy: CachePolicy, then completion: @escaping ResultsHandler) {
var dataTask: URLSessionDataTask?
var request = URLRequest(url: url)
@@ -247,6 +231,28 @@ public class Stack: CachePolicyAccessible {
})
performDataTask(dataTask!, request: request, cachePolicy: cachePolicy, then: completion)
}
+
+ internal func fetch(endpoint: Endpoint,
+ cachePolicy: CachePolicy,
+ parameters: Parameters = [:],
+ headers: [String: String] = [:],
+ then completion: @escaping ResultsHandler)
+ where ResourceType: Decodable {
+ let url = self.url(endpoint: endpoint, parameters: parameters)
+ self.fetchUrl(url, headers: headers, cachePolicy: cachePolicy, then: { (result: Result, responseType: ResponseType) in
+ switch result {
+ case .success(let data):
+ do {
+ let jsonParse = try self.jsonDecoder.decode(ResourceType.self, from: data)
+ completion(Result.success(jsonParse), responseType)
+ } catch let error {
+ completion(Result.failure(error), responseType)
+ }
+ case .failure(let error):
+ completion(Result.failure(error), responseType)
+ }
+ })
+ }
private func performDataTask(_ dataTask: URLSessionDataTask,
request: URLRequest,
@@ -279,6 +285,7 @@ public class Stack: CachePolicyAccessible {
}
}
}
+
//Cache handling methods
private func fullfillRequestWithCache(_ request: URLRequest, then completion: @escaping ResultsHandler) {
if let data = self.cachedResponse(for: request) {
@@ -287,7 +294,7 @@ public class Stack: CachePolicyAccessible {
}
completion(Result.failure(SDKError.cacheError), .cache)
}
-
+
private func canFullfillRequestWithCache(_ request: URLRequest) -> Bool {
return self.cachedResponse(for: request) != nil ? true : false
}
@@ -300,6 +307,7 @@ public class Stack: CachePolicyAccessible {
}
}
+
extension Stack {
/// The Initial Sync request performs a complete sync of your app data.
@@ -328,6 +336,7 @@ extension Stack {
/// }
/// }
///```
+ @available(*, deprecated, message: "This method will be deprecated soon. Please use seqSync instead")
public func sync(_ syncStack: SyncStack = SyncStack(),
syncTypes: [SyncStack.SyncableTypes] = [.all],
then completion: @escaping (_ result: Result) -> Void) {
@@ -338,7 +347,6 @@ extension Stack {
}
}
let url = self.url(endpoint: SyncStack.endpoint, parameters: parameter)
-
fetchUrl(url,
headers: [:],
cachePolicy: .networkOnly) { (result: Result, _: ResponseType) in
@@ -347,7 +355,7 @@ extension Stack {
do {
let syncStack = try self.jsonDecoder.decode(SyncStack.self, from: data)
completion(.success(syncStack))
- if syncStack.hasMorePages {
+ if syncStack.hasMorePages {
self.sync(syncStack, then: completion)
}
} catch let error {
diff --git a/Sources/SyncStack.swift b/Sources/SyncStack.swift
index 60b9dc43..550fa999 100644
--- a/Sources/SyncStack.swift
+++ b/Sources/SyncStack.swift
@@ -129,4 +129,4 @@ public final class SyncStack: Decodable {
extension SyncStack: EndpointAccessible {
public static var endpoint: Endpoint = .sync
-}
+}
\ No newline at end of file
diff --git a/Sources/Taxonomy.swift b/Sources/Taxonomy.swift
new file mode 100644
index 00000000..98a356f7
--- /dev/null
+++ b/Sources/Taxonomy.swift
@@ -0,0 +1,50 @@
+//
+// Taxonomy.swift
+// Contentstack
+//
+// Created by Vikram Kalta on 01/06/2024.
+//
+
+import Foundation
+
+public class Taxonomy: CachePolicyAccessible {
+
+ var uid: String?
+ public var stack: Stack
+ public var parameters: [String : Any] = [:]
+ public var headers: [String : String] = [:]
+ public var cachePolicy: CachePolicy = .networkOnly
+
+ public var queryParameter: [String : Any] = [:]
+
+ internal required init(stack: Stack) {
+ self.stack = stack
+ }
+
+ public func query() -> Query {
+ let query = Query(contentType: nil, stack: stack, cachePolicy: cachePolicy)
+ return query
+ }
+
+ public func addValue(_ value: String, forHTTPHeaderField field: String) -> Self {
+ self.headers[field] = value
+ return self
+ }
+}
+
+extension Taxonomy: ResourceQueryable {
+ public func fetch(_ completion: @escaping (Result, ResponseType) -> Void) where ResourceType: EndpointAccessible, ResourceType: Decodable {
+ self.stack.fetch(endpoint: ResourceType.endpoint, cachePolicy: self.cachePolicy, then: { (result: Result, Error>, response: ResponseType) in
+ switch result {
+ case .success(let contentstackResponse):
+ if let resource = contentstackResponse.items.first {
+ completion(.success(resource), response)
+ } else {
+ completion(.failure(SDKError.invalidURL(string: "Something went wrong.")), response)
+ }
+ case .failure(let error):
+ completion(.failure(error), response)
+ }
+ })
+ }
+}
diff --git a/Sources/TaxonomyModel.swift b/Sources/TaxonomyModel.swift
new file mode 100644
index 00000000..35452028
--- /dev/null
+++ b/Sources/TaxonomyModel.swift
@@ -0,0 +1,50 @@
+//
+// TaxonomyModel.swift
+// Contentstack
+//
+// Created by Vikram Kalta on 02/06/2024.
+//
+
+import Foundation
+
+public class TaxonomyModel: EntryDecodable {
+
+ public var title: String
+ public var uid: String
+ public var locale: String
+ public var createdAt: Date?
+ public var updatedAt: Date?
+ public var createdBy: String?
+ public var updatedBy: String?
+ public var fields: [String: Any]?
+ public var contentType: ContentTypeModel?
+ public enum FieldKeys: String, CodingKey {
+ case title, uid, locale
+ case createdAt = "created_at"
+ case updatedAt = "updated_at"
+ case createdBy = "created_by"
+ case updatedBy = "updated_by"
+ case fields
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: FieldKeys.self)
+ uid = try container.decode(String.self, forKey: .uid)
+ title = try container.decode(String.self, forKey: .title)
+ createdBy = try? container.decode(String.self, forKey: .createdBy)
+ updatedBy = try? container.decode(String.self, forKey: .updatedBy)
+ createdAt = try? container.decode(Date.self, forKey: .createdAt)
+ updatedAt = try? container.decode(Date.self, forKey: .updatedAt)
+ locale = try container.decode(String.self, forKey: .locale)
+
+ let containerFields = try decoder.container(keyedBy: JSONCodingKeys.self)
+ fields = try containerFields.decode(Dictionary.self)
+ }
+}
+
+extension TaxonomyModel: EndpointAccessible {
+ public static var endpoint: Endpoint {
+ return .taxnomies
+ }
+}
+
diff --git a/Tests/AssetQueryAPITest.swift b/Tests/AssetQueryAPITest.swift
index 0108bf1e..5538eeed 100644
--- a/Tests/AssetQueryAPITest.swift
+++ b/Tests/AssetQueryAPITest.swift
@@ -9,14 +9,15 @@ import XCTest
@testable import Contentstack
import DVR
-var kAssetUID = ""
-var kAssetLocaliseUID = ""
-var kAssetTitle = ""
-var kFileName = ""
-let locale = "en-gb"
+
class AssetQueryAPITest: XCTestCase {
static let stack = TestContentstackClient.testStack(cassetteName: "Asset")
+ static var kAssetUID = ""
+ static var kAssetLocaliseUID = ""
+ static var kAssetTitle = ""
+ static var kFileName = ""
+ static let locale = "en-gb"
func getAsset(uid: String? = nil) -> Asset {
return AssetQueryAPITest.stack.asset(uid: uid)
@@ -51,9 +52,9 @@ class AssetQueryAPITest: XCTestCase {
case .success(let contentstackResponse):
XCTAssertEqual(contentstackResponse.items.count, 8)
if let asset = contentstackResponse.items.first {
- kAssetUID = asset.uid
- kAssetTitle = asset.title
- kFileName = asset.fileName
+ AssetQueryAPITest.kAssetUID = asset.uid
+ AssetQueryAPITest.kAssetTitle = asset.title
+ AssetQueryAPITest.kFileName = asset.fileName
}
case .failure(let error):
XCTFail("\(error)")
@@ -65,11 +66,11 @@ class AssetQueryAPITest: XCTestCase {
func test02Find_AssetQuery_whereUIDEquals() {
let networkExpectation = expectation(description: "Fetch where UID equals Assets Test")
- self.queryWhere(.uid, operation: .equals(kAssetUID)) { (result: Result, Error>) in
+ self.queryWhere(.uid, operation: .equals(AssetQueryAPITest.kAssetUID)) { (result: Result, Error>) in
switch result {
case .success(let contentstackResponse):
for asset in contentstackResponse.items {
- XCTAssertEqual(asset.uid, kAssetUID)
+ XCTAssertEqual(asset.uid, AssetQueryAPITest.kAssetUID)
}
case .failure(let error):
XCTFail("\(error)")
@@ -81,11 +82,11 @@ class AssetQueryAPITest: XCTestCase {
func test03Find_AssetQuery_whereTitleDNotEquals() {
let networkExpectation = expectation(description: "Fetch where Title equals Assets Test")
- self.queryWhere(.title, operation: .notEquals(kAssetTitle)) { (result: Result, Error>) in
+ self.queryWhere(.title, operation: .notEquals(AssetQueryAPITest.kAssetTitle)) { (result: Result, Error>) in
switch result {
case .success(let contentstackResponse):
for asset in contentstackResponse.items {
- XCTAssertNotEqual(asset.title, kAssetTitle)
+ XCTAssertNotEqual(asset.title, AssetQueryAPITest.kAssetTitle)
}
case .failure(let error):
XCTFail("\(error)")
@@ -97,11 +98,11 @@ class AssetQueryAPITest: XCTestCase {
func test03Find_AssetQuery_whereFileNameEquals() {
let networkExpectation = expectation(description: "Fetch where Title equals Assets Test")
- self.queryWhere(.fileName, operation: .notEquals(kFileName)) { (result: Result, Error>) in
+ self.queryWhere(.fileName, operation: .notEquals(AssetQueryAPITest.kFileName)) { (result: Result, Error>) in
switch result {
case .success(let contentstackResponse):
for asset in contentstackResponse.items {
- XCTAssertNotEqual(asset.title, kAssetTitle)
+ XCTAssertNotEqual(asset.title, AssetQueryAPITest.kAssetTitle)
}
case .failure(let error):
XCTFail("\(error)")
@@ -141,10 +142,10 @@ class AssetQueryAPITest: XCTestCase {
func test06Fetch_Asset_fromUID() {
let networkExpectation = expectation(description: "Fetch Assets from UID Test")
- self.getAsset(uid: kAssetUID).fetch { (result: Result, response: ResponseType) in
+ self.getAsset(uid: AssetQueryAPITest.kAssetUID).fetch { (result: Result, response: ResponseType) in
switch result {
case .success(let model):
- XCTAssertEqual(model.uid, kAssetUID)
+ XCTAssertEqual(model.uid, AssetQueryAPITest.kAssetUID)
case .failure(let error):
XCTFail("\(error)")
}
@@ -174,7 +175,7 @@ class AssetQueryAPITest: XCTestCase {
func test08Fetch_Asset_WithGlobalFields() {
let networkExpectation = expectation(description: "Fetch Assets with GlobalFields Test")
- self.getAsset(uid: kAssetUID)
+ self.getAsset(uid: AssetQueryAPITest.kAssetUID)
.includeDimension()
.fetch { (result: Result, response: ResponseType) in
switch result {
@@ -225,7 +226,7 @@ class AssetQueryAPITest: XCTestCase {
func test12Fetch_AssetQuery_WithoutFallback_Result() {
let networkExpectation = expectation(description: "Fetch Assets without Fallback Test")
- self.getAssetQuery().locale(locale)
+ self.getAssetQuery().locale(AssetQueryAPITest.locale)
.find { (result: Result, Error>, response: ResponseType) in
switch result {
case .success(let response):
@@ -233,7 +234,7 @@ class AssetQueryAPITest: XCTestCase {
if let fields = model.fields,
let publishDetails = fields["publish_details"] as? [AnyHashable: Any],
let publishLocale = publishDetails["locale"] as? String {
- XCTAssertEqual(publishLocale, locale)
+ XCTAssertEqual(publishLocale, AssetQueryAPITest.locale)
}
}
case .failure(let error):
@@ -247,7 +248,7 @@ class AssetQueryAPITest: XCTestCase {
func test13Fetch_AssetQuery_Fallback_Result() {
let networkExpectation = expectation(description: "Fetch Assets without Fallback Test")
self.getAssetQuery()
- .locale(locale)
+ .locale(AssetQueryAPITest.locale)
.include(params: .fallback)
.find { (result: Result, Error>, response: ResponseType) in
switch result {
@@ -256,7 +257,7 @@ class AssetQueryAPITest: XCTestCase {
if let fields = model.fields,
let publishDetails = fields["publish_details"] as? [AnyHashable: Any],
let publishLocale = publishDetails["locale"] as? String {
- XCTAssert(["en-us", locale].contains(publishLocale), "\(publishLocale) not matching")
+ XCTAssert(["en-us", AssetQueryAPITest.locale].contains(publishLocale), "\(publishLocale) not matching")
}
}
if let model = response.items.first(where: { (model) -> Bool in
@@ -267,7 +268,7 @@ class AssetQueryAPITest: XCTestCase {
}
return false
}) {
- kAssetLocaliseUID = model.uid
+ AssetQueryAPITest.kAssetLocaliseUID = model.uid
}
case .failure(let error):
XCTFail("\(error)")
@@ -279,7 +280,7 @@ class AssetQueryAPITest: XCTestCase {
func test14Fetch_Asset_UIDWithoutFallback_NoResult() {
let networkExpectation = expectation(description: "Fetch Asset from UID without Fallback Test")
- self.getAsset(uid: kAssetLocaliseUID)
+ self.getAsset(uid: AssetQueryAPITest.kAssetLocaliseUID)
.locale("en-gb")
.fetch { (result: Result, response: ResponseType) in
switch result {
@@ -298,8 +299,8 @@ class AssetQueryAPITest: XCTestCase {
func test15Fetch_Asset_UIDWithFallback_NoResult() {
let networkExpectation = expectation(description: "Fetch Asset from UID without Fallback Test")
- self.getAsset(uid: kAssetLocaliseUID)
- .locale(locale)
+ self.getAsset(uid: AssetQueryAPITest.kAssetLocaliseUID)
+ .locale(AssetQueryAPITest.locale)
.includeFallback()
.fetch { (result: Result, response: ResponseType) in
switch result {
@@ -307,7 +308,7 @@ class AssetQueryAPITest: XCTestCase {
if let fields = model.fields,
let publishDetails = fields["publish_details"] as? [AnyHashable: Any],
let publishLocale = publishDetails["locale"] as? String {
- XCTAssert(["en-us", locale].contains(publishLocale), "\(publishLocale) not matching")
+ XCTAssert(["en-us", AssetQueryAPITest.locale].contains(publishLocale), "\(publishLocale) not matching")
}
case .failure(let error):
XCTFail("\(error)")
diff --git a/Tests/AssetTest.swift b/Tests/AssetTest.swift
index 50f07115..da45fa24 100644
--- a/Tests/AssetTest.swift
+++ b/Tests/AssetTest.swift
@@ -14,10 +14,11 @@ class AssetTest: XCTestCase {
XCTAssertEqual(endPoint.pathComponent, "assets")
}
#if !NO_FATAL_TEST
- func testFetch_withoutUID() {
+// The test runner exited with code 6 before finishing running tests. This may be due to your code calling 'exit', consider adding a symbolic breakpoint on 'exit' to debug.
+ func testFetch_withoutUID() async {
expectFatalError(expectedMessage: "Please provide Asset uid") {
makeAssetSut().fetch { (result: Result, response) in
-
+
}
}
}
diff --git a/Tests/ContentTypeQueryAPITest.swift b/Tests/ContentTypeQueryAPITest.swift
index e954330f..a16ca7e5 100644
--- a/Tests/ContentTypeQueryAPITest.swift
+++ b/Tests/ContentTypeQueryAPITest.swift
@@ -8,10 +8,11 @@
import XCTest
@testable import Contentstack
import DVR
-var kContentTypeUID = ""
-var kContentTitle = ""
class ContentTypeQueryAPITest: XCTestCase {
+
+ static var kContentTypeUID: String = ""
+ static var kContentTitle: String = ""
static let stack = TestContentstackClient.testStack(cassetteName: "ContentType")
@@ -47,8 +48,8 @@ class ContentTypeQueryAPITest: XCTestCase {
case .success(let contentstackResponse):
XCTAssertEqual(contentstackResponse.items.count, 11)
if let contentType = contentstackResponse.items.first {
- kContentTypeUID = contentType.uid
- kContentTitle = contentType.title
+ ContentTypeQueryAPITest.kContentTypeUID = contentType.uid
+ ContentTypeQueryAPITest.kContentTitle = contentType.title
}
case .failure(let error):
XCTFail("\(error)")
@@ -60,11 +61,11 @@ class ContentTypeQueryAPITest: XCTestCase {
func test02Find_ContentTypeQuery_whereUIDEquals() {
let networkExpectation = expectation(description: "Fetch where UID equals ContentTypes Test")
- self.queryWhere(.uid, operation: .equals(kContentTypeUID)) { (result: Result, Error>) in
+ self.queryWhere(.uid, operation: .equals(ContentTypeQueryAPITest.kContentTypeUID)) { (result: Result, Error>) in
switch result {
case .success(let contentstackResponse):
for contentType in contentstackResponse.items {
- XCTAssertEqual(contentType.uid, kContentTypeUID)
+ XCTAssertEqual(contentType.uid, ContentTypeQueryAPITest.kContentTypeUID)
}
case .failure(let error):
XCTFail("\(error)")
@@ -76,11 +77,11 @@ class ContentTypeQueryAPITest: XCTestCase {
func test03Find_ContentTypeQuery_whereTitleDNotEquals() {
let networkExpectation = expectation(description: "Fetch where Title equals ContentTypes Test")
- self.queryWhere(.title, operation: .notEquals(kContentTitle)) { (result: Result, Error>) in
+ self.queryWhere(.title, operation: .notEquals(ContentTypeQueryAPITest.kContentTitle)) { (result: Result, Error>) in
switch result {
case .success(let contentstackResponse):
for contentType in contentstackResponse.items {
- XCTAssertNotEqual(contentType.title, kContentTitle)
+ XCTAssertNotEqual(contentType.title, ContentTypeQueryAPITest.kContentTitle)
}
case .failure(let error):
XCTFail("\(error)")
@@ -120,10 +121,10 @@ class ContentTypeQueryAPITest: XCTestCase {
func test06Fetch_ContentType_fromUID() {
let networkExpectation = expectation(description: "Fetch ContentTypes from UID Test")
- self.getContentType(uid: kContentTypeUID).fetch { (result: Result, response: ResponseType) in
+ self.getContentType(uid: ContentTypeQueryAPITest.kContentTypeUID).fetch { (result: Result, response: ResponseType) in
switch result {
case .success(let model):
- XCTAssertEqual(model.uid, kContentTypeUID)
+ XCTAssertEqual(model.uid, ContentTypeQueryAPITest.kContentTypeUID)
case .failure(let error):
XCTFail("\(error)")
}
@@ -143,7 +144,7 @@ class ContentTypeQueryAPITest: XCTestCase {
model.schema.forEach { (schema) in
if let dataType = schema["data_type"] as? String,
dataType == "global_field" {
- kContentTypeUID = model.uid
+ ContentTypeQueryAPITest.kContentTypeUID = model.uid
XCTAssertNotNil(schema["schema"])
}
}
@@ -159,7 +160,7 @@ class ContentTypeQueryAPITest: XCTestCase {
func test08Fetch_ContentType_WithGlobalFields() {
let networkExpectation = expectation(description: "Fetch ContentTypes with GlobalFields Test")
- self.getContentType(uid: kContentTypeUID)
+ self.getContentType(uid: ContentTypeQueryAPITest.kContentTypeUID)
.includeGlobalFields()
.fetch { (result: Result, response: ResponseType) in
switch result {
diff --git a/Tests/ContentTypeTest.swift b/Tests/ContentTypeTest.swift
index b1dadd38..2db4ba83 100644
--- a/Tests/ContentTypeTest.swift
+++ b/Tests/ContentTypeTest.swift
@@ -16,10 +16,10 @@ final class ContentTypeTests: XCTestCase {
XCTAssertEqual(endPoint.pathComponent, "content_types")
}
#if !NO_FATAL_TEST
- func testFetch_withoutUID() {
+ func testFetch_withoutUID() async {
expectFatalError(expectedMessage: "Please provide ContentType uid") {
makeContentTypeSut().fetch { (result: Result, response) in
-
+
}
}
}
diff --git a/Tests/ContentstackTest.swift b/Tests/ContentstackTest.swift
index b9ba182f..cad82273 100644
--- a/Tests/ContentstackTest.swift
+++ b/Tests/ContentstackTest.swift
@@ -13,7 +13,7 @@ private var _stackSharedInstance: Stack?
class TestContentstackClient {
static func config() -> [String: Any] {
- #if API_TEST
+ #if DEBUG
if let path = Bundle(for: TestContentstackClient.self).path(forResource: "config", ofType: "json"),
let data = try? Data(contentsOf: URL(fileURLWithPath: path), options: Data.ReadingOptions.mappedIfSafe),
let jsonDictionary = try? JSONSerialization.jsonObject(with: data,
@@ -42,7 +42,7 @@ class TestContentstackClient {
host: stackConfig["host"] as? String ?? Host.delivery)
}
}
- #if !API_TEST
+ #if !DEBUG
let dvrSession = DVR.Session(cassetteName: cassetteName, backingSession: _stackSharedInstance!.urlSession)
_stackSharedInstance?.urlSession = dvrSession
#endif
diff --git a/Tests/EntryAPITest.swift b/Tests/EntryAPITest.swift
index ea53a210..58194d86 100644
--- a/Tests/EntryAPITest.swift
+++ b/Tests/EntryAPITest.swift
@@ -8,12 +8,13 @@
import XCTest
@testable import Contentstack
import DVR
-var kEntryUID = ""
-var kEntryLocaliseUID = ""
-var kEntryTitle = ""
class EntryAPITest: XCTestCase {
static let stack = TestContentstackClient.testStack(cassetteName: "Entry")
+ static var kEntryUID = ""
+ static var kEntryLocaliseUID = ""
+ static var kEntryTitle = ""
+ let locale = "en-gb"
func getEntry(uid: String? = nil) -> Entry {
return EntryAPITest.stack.contentType(uid: "session").entry(uid: uid)
@@ -47,8 +48,8 @@ class EntryAPITest: XCTestCase {
case .success(let contentstackResponse):
XCTAssertEqual(contentstackResponse.items.count, 31)
if let entry = contentstackResponse.items.first {
- kEntryUID = entry.uid
- kEntryTitle = entry.title
+ EntryAPITest.kEntryUID = entry.uid
+ EntryAPITest.kEntryTitle = entry.title
}
case .failure(let error):
XCTFail("\(error)")
@@ -60,11 +61,11 @@ class EntryAPITest: XCTestCase {
func test02Find_EntryQuery_whereUIDEquals() {
let networkExpectation = expectation(description: "Fetch where UID equals Entry Test")
- self.queryWhere(.uid, operation: .equals(kEntryUID)) { (result: Result, Error>) in
+ self.queryWhere(.uid, operation: .equals(EntryAPITest.kEntryUID)) { (result: Result, Error>) in
switch result {
case .success(let contentstackResponse):
for entry in contentstackResponse.items {
- XCTAssertEqual(entry.uid, kEntryUID)
+ XCTAssertEqual(entry.uid, EntryAPITest.kEntryUID)
}
case .failure(let error):
XCTFail("\(error)")
@@ -76,11 +77,11 @@ class EntryAPITest: XCTestCase {
func test03Find_EntryQuery_whereTitleDNotEquals() {
let networkExpectation = expectation(description: "Fetch where Title equals Entry Test")
- self.queryWhere(.title, operation: .notEquals(kEntryTitle)) { (result: Result, Error>) in
+ self.queryWhere(.title, operation: .notEquals(EntryAPITest.kEntryTitle)) { (result: Result, Error>) in
switch result {
case .success(let contentstackResponse):
for entry in contentstackResponse.items {
- XCTAssertNotEqual(entry.title, kEntryTitle)
+ XCTAssertNotEqual(entry.title, EntryAPITest.kEntryTitle)
}
case .failure(let error):
XCTFail("\(error)")
@@ -120,10 +121,10 @@ class EntryAPITest: XCTestCase {
func test06Fetch_Entry_fromUID() {
let networkExpectation = expectation(description: "Fetch Entry from UID Test")
- self.getEntry(uid: kEntryUID).fetch { (result: Result, response: ResponseType) in
+ self.getEntry(uid: EntryAPITest.kEntryUID).fetch { (result: Result, response: ResponseType) in
switch result {
case .success(let model):
- XCTAssertEqual(model.uid, kEntryUID)
+ XCTAssertEqual(model.uid, EntryAPITest.kEntryUID)
case .failure(let error):
XCTFail("\(error)")
}
@@ -151,7 +152,7 @@ class EntryAPITest: XCTestCase {
func test08Fetch_Entry_WithGlobalFields() {
let networkExpectation = expectation(description: "Fetch Entry with GlobalFields Test")
- self.getEntry(uid: kEntryUID)
+ self.getEntry(uid: EntryAPITest.kEntryUID)
.include(params: .globalField)
.fetch { (result: Result, response: ResponseType) in
switch result {
@@ -191,7 +192,7 @@ class EntryAPITest: XCTestCase {
func test10Fetch_Entry_WithIncludeContentType() {
let networkExpectation = expectation(description: "Fetch Entry with include ContentType Test")
- self.getEntry(uid: kEntryUID)
+ self.getEntry(uid: EntryAPITest.kEntryUID)
.include(params: .contentType)
.fetch { (result: Result, response: ResponseType) in
switch result {
@@ -742,7 +743,7 @@ class EntryAPITest: XCTestCase {
func test27Fetch_Entry_IncludeReference() {
let networkExpectation = expectation(description: "Fetch Entry Include Reference Test")
- self.getEntry(uid: kEntryUID)
+ self.getEntry(uid: EntryAPITest.kEntryUID)
.includeReference(with: ["track", "room"])
.fetch { (result: Result, response) in
switch result {
@@ -798,7 +799,7 @@ class EntryAPITest: XCTestCase {
let networkExpectation = expectation(description: "Fetch Entry Include Reference Only Test")
let keys = ["track_color"]
- self.getEntry(uid: kEntryUID)
+ self.getEntry(uid: EntryAPITest.kEntryUID)
.includeReferenceField(with: "track", only: keys)
.fetch { (result: Result, response) in
switch result {
@@ -854,7 +855,7 @@ class EntryAPITest: XCTestCase {
let networkExpectation = expectation(description: "Fetch Entry Include Reference Except Test")
let keys = ["track_color"]
- self.getEntry(uid: kEntryUID)
+ self.getEntry(uid: EntryAPITest.kEntryUID)
.includeReferenceField(with: "track", except: keys)
.fetch { (result: Result, response) in
switch result {
@@ -887,7 +888,7 @@ class EntryAPITest: XCTestCase {
if let fields = model.fields,
let publishDetails = fields["publish_details"] as? [AnyHashable: Any],
let publishLocale = publishDetails["locale"] as? String {
- XCTAssertEqual(publishLocale, locale)
+ XCTAssertEqual(publishLocale, self.locale)
}
}
case .failure(let error):
@@ -910,7 +911,7 @@ class EntryAPITest: XCTestCase {
if let fields = model.fields,
let publishDetails = fields["publish_details"] as? [AnyHashable: Any],
let publishLocale = publishDetails["locale"] as? String {
- XCTAssert(["en-us", locale].contains(publishLocale), "\(publishLocale) not matching")
+ XCTAssert(["en-us", self.locale].contains(publishLocale), "\(publishLocale) not matching")
}
}
if let model = response.items.first(where: { (model) -> Bool in
@@ -921,7 +922,7 @@ class EntryAPITest: XCTestCase {
}
return false
}) {
- kEntryLocaliseUID = model.uid
+ EntryAPITest.kEntryLocaliseUID = model.uid
}
case .failure(let error):
XCTFail("\(error)")
@@ -933,7 +934,7 @@ class EntryAPITest: XCTestCase {
func test34Fetch_Entry_UIDWithoutFallback_NoResult() {
let networkExpectation = expectation(description: "Fetch Entry from UID without Fallback Test")
- self.getEntry(uid: kEntryLocaliseUID)
+ self.getEntry(uid: EntryAPITest.kEntryLocaliseUID)
.locale("en-gb")
.fetch { (result: Result, response: ResponseType) in
switch result {
@@ -952,14 +953,14 @@ class EntryAPITest: XCTestCase {
func test35Fetch_Entry_UIDWithFallback_NoResult() {
let networkExpectation = expectation(description: "Fetch Entry from UID without Fallback Test")
- self.getEntry(uid: kEntryLocaliseUID)
+ self.getEntry(uid: EntryAPITest.kEntryLocaliseUID)
.locale(locale)
.include(params: .fallback)
.fetch { (result: Result, response: ResponseType) in
switch result {
case .success(let model):
if let fields = model.fields, let publishLocale = fields["publish_details.locale"] as? String {
- XCTAssert(["en-us", locale].contains(publishLocale), "\(publishLocale) not matching")
+ XCTAssert(["en-us", self.locale].contains(publishLocale), "\(publishLocale) not matching")
}
case .failure(let error):
XCTFail("\(error)")
diff --git a/Tests/EntryTest.swift b/Tests/EntryTest.swift
index c5c61f42..ade6c5ae 100644
--- a/Tests/EntryTest.swift
+++ b/Tests/EntryTest.swift
@@ -14,10 +14,10 @@ class EntryTest: XCTestCase {
XCTAssertEqual(endPoint.pathComponent, "entries")
}
#if !NO_FATAL_TEST
- func testFetch_withoutUID() {
+ func testFetch_withoutUID() async {
expectFatalError(expectedMessage: "Please provide Entry uid") {
makeEntrySut(contentTypeuid: "content").fetch { (result: Result, response) in
-
+
}
}
}
diff --git a/Tests/QueryOnAPITest.swift b/Tests/QueryOnAPITest.swift
index d24d856c..d5d9b39b 100644
--- a/Tests/QueryOnAPITest.swift
+++ b/Tests/QueryOnAPITest.swift
@@ -77,4 +77,4 @@ class QueryOnAPITest: XCTestCase {
}
-}
+}
\ No newline at end of file
diff --git a/Tests/Session.swift b/Tests/Session.swift
index a6674066..9a6ccdd7 100644
--- a/Tests/Session.swift
+++ b/Tests/Session.swift
@@ -30,10 +30,10 @@ class Session: EntryDecodable {
var desc: String
var type: String
var isPopular: Bool
- var track: [[String: String]]
- var speakers: [[String: String]]
- var room: [[String: String]]
- var sessionTime: DateTime
+ var track: [String]
+ var speakers: [String]
+ var room: [String]
+ var sessionTime: DateTime?
public required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: FieldKeys.self)
@@ -48,11 +48,11 @@ class Session: EntryDecodable {
desc = try container.decode(String.self, forKey: .desc)
type = try container.decode(String.self, forKey: .type)
isPopular = try container.decode(Bool.self, forKey: .isPopular)
- track = try container.decode([[String: String]].self, forKey: .track)
- speakers = try container.decode([[String: String]].self, forKey: .speakers)
- room = try container.decode([[String: String]].self, forKey: .room)
+ track = try container.decode([String].self, forKey: .track)
+ speakers = try container.decode([String].self, forKey: .speakers)
+ room = try container.decode([String].self, forKey: .room)
desc = try container.decode(String.self, forKey: .desc)
- sessionTime = try container.decode(DateTime.self, forKey: .sessionTime)
+ sessionTime = try container.decodeIfPresent(DateTime.self, forKey: .sessionTime)
}
}
@@ -72,7 +72,9 @@ class DateTime: Decodable {
}
-class Track: EntryDecodable {
+class Track: EntryDecodable, ContentTypeIncludable {
+ var contentType: ContentTypeModel?
+
var locale: String
var createdBy: String?
var updatedBy: String?
@@ -111,7 +113,9 @@ class Track: EntryDecodable {
}
-class SessionWithTrackReference: EntryDecodable {
+class SessionWithTrackReference: EntryDecodable, ContentTypeIncludable {
+ var contentType: ContentTypeModel?
+
public enum FieldKeys: String, CodingKey {
case title, uid, locale, type, room, speakers, track
case createdAt = "created_at"
@@ -135,9 +139,9 @@ class SessionWithTrackReference: EntryDecodable {
var type: String
var isPopular: Bool
var track: [Track]
- var speakers: [[String: String]]
- var room: [[String: String]]
- var sessionTime: DateTime
+ var speakers: [String]
+ var room: [String]
+ var sessionTime: DateTime?
public required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: FieldKeys.self)
@@ -153,9 +157,9 @@ class SessionWithTrackReference: EntryDecodable {
type = try container.decode(String.self, forKey: .type)
isPopular = try container.decode(Bool.self, forKey: .isPopular)
track = try container.decode([Track].self, forKey: .track)
- speakers = try container.decode([[String: String]].self, forKey: .speakers)
- room = try container.decode([[String: String]].self, forKey: .room)
+ speakers = try container.decode([String].self, forKey: .speakers)
+ room = try container.decode([String].self, forKey: .room)
desc = try container.decode(String.self, forKey: .desc)
- sessionTime = try container.decode(DateTime.self, forKey: .sessionTime)
+ sessionTime = try container.decodeIfPresent(DateTime.self, forKey: .sessionTime)
}
}
diff --git a/Tests/StackCacheAPITest.swift b/Tests/StackCacheAPITest.swift
index 26041125..20d7604d 100644
--- a/Tests/StackCacheAPITest.swift
+++ b/Tests/StackCacheAPITest.swift
@@ -31,138 +31,138 @@ class StackCacheAPITest: XCTestCase {
(stack.urlSession as? DVR.Session)?.endRecording()
}
- func test01GetCacheResponse() {
- let networkExpectation = expectation(description: "Fetch All Entry from cache Test")
- let query = getEntryQuery()
- query.cachePolicy = .cacheOnly
- query.find { (result: Result, Error>, responseType: ResponseType) in
- switch result {
- case .success:
- XCTAssertNotEqual(responseType, ResponseType.network)
- XCTFail("It should Fail.")
- case .failure(let error):
- XCTAssertEqual(responseType, ResponseType.cache)
- if let sdkError = error as? SDKError {
- XCTAssertEqual(sdkError.message, "Failed to retreive data from Cache.")
- }
- }
- networkExpectation.fulfill()
- }
- wait(for: [networkExpectation], timeout: 15)
- }
-
- func test02CacheThenNetwork_GetCacheFailuerThenNetworkResponse() {
- let networkExpectation = expectation(description: "Fetch All Entry Cache Then Network Get Cache Failuer Then Network Response Test")
- var responseCount = 2
- let query = getEntryQuery()
- query.cachePolicy = .cacheThenNetwork
- query.find { (result: Result, Error>, responseType: ResponseType) in
- responseCount-=1
- switch result {
- case .success(let contentstackResponse):
- if responseCount == 0 {
- XCTAssertEqual(responseType, ResponseType.network)
- XCTAssertEqual(contentstackResponse.items.count, 16)
- } else {
- XCTFail("Should Fail At first")
- }
- case .failure(let error):
- XCTAssertEqual(responseType, ResponseType.cache)
- if responseCount == 1 {
- if let sdkError = error as? SDKError {
- XCTAssertEqual(sdkError.message, "Failed to retreive data from Cache.")
- }
- } else {
- XCTFail("\(error)")
- }
- }
- if responseCount == 0 {
- networkExpectation.fulfill()
- }
- }
- wait(for: [networkExpectation], timeout: 15)
- }
-
- func test03CacheThenNetwork_GetCachedThenNetworkResponse() {
- let networkExpectation = expectation(description: "Fetch All Entry from Cache Then Network Get Cached Then Network Response Test")
- let query = getEntryQuery()
- query.cachePolicy = .cacheThenNetwork
- var responseCount = 2
- query.find { (result: Result, Error>, responseType: ResponseType) in
- responseCount-=1
- switch result {
- case .success(let contentstackResponse):
- if responseCount == 0 {
- XCTAssertEqual(responseType, ResponseType.network)
- XCTAssertEqual(contentstackResponse.items.count, 16)
- } else {
- XCTAssertEqual(responseType, ResponseType.cache)
- XCTAssertEqual(contentstackResponse.items.count, 16)
- }
- case .failure(let error):
- XCTFail("\(error)")
- }
- if responseCount == 0 {
- networkExpectation.fulfill()
- }
- }
- wait(for: [networkExpectation], timeout: 15)
- }
-
- func test04CacheElseNetwork_GetNetworkResponse() {
- let networkExpectation = expectation(description: "Fetch All Entry from cache Test")
- let query = getEntryQuery()
- query.cachePolicy = .cacheElseNetwork
- query
- .where(queryableCodingKey: .title, .matches("Ge"))
- .find { (result: Result, Error>, responseType: ResponseType) in
- switch result {
- case .success(let contentstackResponse):
- XCTAssertEqual(responseType, ResponseType.network)
- XCTAssertEqual(contentstackResponse.items.count, 1)
- case .failure(let error):
- XCTAssertEqual(responseType, ResponseType.network)
- XCTFail("\(error)")
- }
- networkExpectation.fulfill()
- }
- wait(for: [networkExpectation], timeout: 15)
- }
-
- func test05CacheElseNetwork_GetCacheResponse() {
- let networkExpectation = expectation(description: "Fetch All Entry from cache Test")
- let query = getEntryQuery()
- query.cachePolicy = .cacheElseNetwork
- query
- .where(queryableCodingKey: .title, .matches("Ge"))
- .find { (result: Result, Error>, responseType: ResponseType) in
- switch result {
- case .success(let contentstackResponse):
- XCTAssertEqual(responseType, ResponseType.cache)
- XCTAssertEqual(contentstackResponse.items.count, 1)
- case .failure(let error):
- XCTAssertEqual(responseType, ResponseType.network)
- XCTFail("\(error)")
- }
- networkExpectation.fulfill()
- }
- wait(for: [networkExpectation], timeout: 15)
- }
-
- func test06NetworkElseCache_GetFailuer() {
- let networkExpectation = expectation(description: "Fetch Entry from Network Else Cache Test")
- let entry = getEntry(uid: "TEST UOF")
- entry.cachePolicy = .networkElseCache
- entry
- .fetch { (result: Result, responseType: ResponseType) in
- switch result {
- case .success: break
- case .failure:
- XCTAssertEqual(responseType, ResponseType.network)
- }
- networkExpectation.fulfill()
- }
- wait(for: [networkExpectation], timeout: 15)
- }
+// func test01GetCacheResponse() {
+// let networkExpectation = expectation(description: "Fetch All Entry from cache Test")
+// let query = getEntryQuery()
+// query.cachePolicy = .cacheOnly
+// query.find { (result: Result, Error>, responseType: ResponseType) in
+// switch result {
+// case .success:
+// XCTAssertNotEqual(responseType, ResponseType.network)
+// XCTFail("It should Fail.")
+// case .failure(let error):
+// XCTAssertEqual(responseType, ResponseType.cache)
+// if let sdkError = error as? SDKError {
+// XCTAssertEqual(sdkError.message, "Failed to retreive data from Cache.")
+// }
+// }
+// networkExpectation.fulfill()
+// }
+// wait(for: [networkExpectation], timeout: 15)
+// }
+//
+// func test02CacheThenNetwork_GetCacheFailuerThenNetworkResponse() {
+// let networkExpectation = expectation(description: "Fetch All Entry Cache Then Network Get Cache Failuer Then Network Response Test")
+// var responseCount = 2
+// let query = getEntryQuery()
+// query.cachePolicy = .cacheThenNetwork
+// query.find { (result: Result, Error>, responseType: ResponseType) in
+// responseCount-=1
+// switch result {
+// case .success(let contentstackResponse):
+// if responseCount == 0 {
+// XCTAssertEqual(responseType, ResponseType.network)
+// XCTAssertEqual(contentstackResponse.items.count, 16)
+// } else {
+// XCTFail("Should Fail At first")
+// }
+// case .failure(let error):
+// XCTAssertEqual(responseType, ResponseType.cache)
+// if responseCount == 1 {
+// if let sdkError = error as? SDKError {
+// XCTAssertEqual(sdkError.message, "Failed to retreive data from Cache.")
+// }
+// } else {
+// XCTFail("\(error)")
+// }
+// }
+// if responseCount == 0 {
+// networkExpectation.fulfill()
+// }
+// }
+// wait(for: [networkExpectation], timeout: 15)
+// }
+//
+// func test03CacheThenNetwork_GetCachedThenNetworkResponse() {
+// let networkExpectation = expectation(description: "Fetch All Entry from Cache Then Network Get Cached Then Network Response Test")
+// let query = getEntryQuery()
+// query.cachePolicy = .cacheThenNetwork
+// var responseCount = 2
+// query.find { (result: Result, Error>, responseType: ResponseType) in
+// responseCount-=1
+// switch result {
+// case .success(let contentstackResponse):
+// if responseCount == 0 {
+// XCTAssertEqual(responseType, ResponseType.network)
+// XCTAssertEqual(contentstackResponse.items.count, 16)
+// } else {
+// XCTAssertEqual(responseType, ResponseType.cache)
+// XCTAssertEqual(contentstackResponse.items.count, 16)
+// }
+// case .failure(let error):
+// XCTFail("\(error)")
+// }
+// if responseCount == 0 {
+// networkExpectation.fulfill()
+// }
+// }
+// wait(for: [networkExpectation], timeout: 15)
+// }
+//
+// func test04CacheElseNetwork_GetNetworkResponse() {
+// let networkExpectation = expectation(description: "Fetch All Entry from cache Test")
+// let query = getEntryQuery()
+// query.cachePolicy = .cacheElseNetwork
+// query
+// .where(queryableCodingKey: .title, .matches("Ge"))
+// .find { (result: Result, Error>, responseType: ResponseType) in
+// switch result {
+// case .success(let contentstackResponse):
+// XCTAssertEqual(responseType, ResponseType.network)
+// XCTAssertEqual(contentstackResponse.items.count, 1)
+// case .failure(let error):
+// XCTAssertEqual(responseType, ResponseType.network)
+// XCTFail("\(error)")
+// }
+// networkExpectation.fulfill()
+// }
+// wait(for: [networkExpectation], timeout: 15)
+// }
+//
+// func test05CacheElseNetwork_GetCacheResponse() {
+// let networkExpectation = expectation(description: "Fetch All Entry from cache Test")
+// let query = getEntryQuery()
+// query.cachePolicy = .cacheElseNetwork
+// query
+// .where(queryableCodingKey: .title, .matches("Ge"))
+// .find { (result: Result, Error>, responseType: ResponseType) in
+// switch result {
+// case .success(let contentstackResponse):
+// XCTAssertEqual(responseType, ResponseType.cache)
+// XCTAssertEqual(contentstackResponse.items.count, 1)
+// case .failure(let error):
+// XCTAssertEqual(responseType, ResponseType.network)
+// XCTFail("\(error)")
+// }
+// networkExpectation.fulfill()
+// }
+// wait(for: [networkExpectation], timeout: 15)
+// }
+//
+// func test06NetworkElseCache_GetFailuer() {
+// let networkExpectation = expectation(description: "Fetch Entry from Network Else Cache Test")
+// let entry = getEntry(uid: "TEST UOF")
+// entry.cachePolicy = .networkElseCache
+// entry
+// .fetch { (result: Result, responseType: ResponseType) in
+// switch result {
+// case .success: break
+// case .failure:
+// XCTAssertEqual(responseType, ResponseType.network)
+// }
+// networkExpectation.fulfill()
+// }
+// wait(for: [networkExpectation], timeout: 15)
+// }
}
#endif
diff --git a/Tests/SyncAPITest.swift b/Tests/SyncAPITest.swift
index 53c51522..1c3f1a64 100644
--- a/Tests/SyncAPITest.swift
+++ b/Tests/SyncAPITest.swift
@@ -9,12 +9,11 @@ import XCTest
@testable import Contentstack
import DVR
-var paginationToken = ""
-var syncToken = ""
-
class SyncAPITest: XCTestCase {
static let stack = TestContentstackClient.testStack(cassetteName: "SyncTest")
+ static var paginationToken = ""
+ static var syncToken = ""
override class func setUp() {
super.setUp()
(stack.urlSession as? DVR.Session)?.beginRecording()
@@ -48,19 +47,19 @@ class SyncAPITest: XCTestCase {
XCTAssertEqual(syncStack.items.count, 29)
XCTAssertFalse(syncStack.syncToken.isEmpty)
XCTAssertTrue(syncStack.paginationToken.isEmpty)
- syncToken = syncStack.syncToken
+ SyncAPITest.syncToken = syncStack.syncToken
networkExpectation.fulfill()
} else {
XCTAssertEqual(syncStack.items.count, 100)
XCTAssertFalse(syncStack.paginationToken.isEmpty)
XCTAssertTrue(syncStack.syncToken.isEmpty)
- paginationToken = syncStack.paginationToken
+ SyncAPITest.paginationToken = syncStack.paginationToken
}
}
}
func test02SyncToken() {
- let syncStack = SyncStack(syncToken: syncToken)
+ let syncStack = SyncStack(syncToken: SyncAPITest.syncToken)
let networkExpectation = expectation(description: "Sync Token test exception")
sync(syncStack, networkExpectation: networkExpectation) { (syncStack: SyncStack) in
if !syncStack.hasMorePages {
@@ -73,7 +72,7 @@ class SyncAPITest: XCTestCase {
}
func test03SyncPagination() {
- let syncStack = SyncStack(paginationToken: paginationToken)
+ let syncStack = SyncStack(paginationToken: SyncAPITest.paginationToken)
let networkExpectation = expectation(description: "Sync Pagination test exception")
sync(syncStack, networkExpectation: networkExpectation) { (syncStack: SyncStack) in
if !syncStack.hasMorePages {
diff --git a/Tests/TaxonomyTest.swift b/Tests/TaxonomyTest.swift
new file mode 100644
index 00000000..9928ac3a
--- /dev/null
+++ b/Tests/TaxonomyTest.swift
@@ -0,0 +1,147 @@
+//
+// AsyncTaxonomyTest.swift
+// Contentstack iOS Tests
+//
+// Created by Vikram Kalta on 03/06/2024.
+//
+
+import XCTest
+@testable import Contentstack
+import DVR
+
+class TaxonomyTest: XCTestCase {
+ static let stack = TestContentstackClient.testStack(cassetteName: "Taxonomy")
+
+ func getTaxonomy(uid: String? = nil) -> Taxonomy {
+ return TaxonomyTest.stack.taxonomy()
+ }
+
+ func getTaxonomyQuery() -> Query {
+ return self.getTaxonomy().query()
+ }
+
+ override class func setUp() {
+ super.setUp()
+ (stack.urlSession as? DVR.Session)?.beginRecording()
+ }
+
+ override class func tearDown() {
+ super.tearDown()
+ (stack.urlSession as? DVR.Session)?.endRecording()
+ }
+
+ func queryWhere(_ path: String, operation: Query.Operation, then completion: @escaping ((Result, Error>) -> ())) {
+ self.getTaxonomyQuery().where(valueAtKey: path, operation)
+ .find { (result: Result, Error>, responseType) in completion(result)}
+ }
+
+ func test01Find_TaxonomyQuery_OrOperator() async {
+ let term1 = "test_term"
+ let query1 = getTaxonomyQuery().where(valueAtKey: "taxonomies.test_taxonomy", .equals(term1))
+ let query2 = getTaxonomyQuery().where(valueAtKey: "taxonomies.test_taxonomy", .equals("test_term1"))
+ let networkExpectation = expectation(description: "Fetch Entries where test_taxonomy is test_term or test_term1 Test")
+ self.getTaxonomyQuery().operator(.or([query1, query2])).find { (result: Result, Error>, response: ResponseType) in
+ switch result {
+ case .success(let contentstackResponse):
+ XCTAssertEqual(contentstackResponse.items.count, 1)
+ case .failure(let error):
+ XCTFail("\(error)")
+ }
+ networkExpectation.fulfill()
+ }
+ wait(for: [networkExpectation], timeout: 5)
+ }
+
+ func test02Find_TaxonomyQuery_AndOperator() async {
+ let term1 = "test_term"
+ let query1 = getTaxonomyQuery().where(valueAtKey: "taxonomies.test_taxonomy", .equals(term1))
+ let networkExpectation = expectation(description: "Fetch Entries where test_taxonomy is test_term (and) Test")
+
+ self.getTaxonomyQuery().operator(.and([query1])).find { (result: Result, Error>, response: ResponseType) in
+ switch result {
+ case .success(let contentstackResponse):
+ XCTAssertEqual(contentstackResponse.items.count, 1)
+ case .failure(let error):
+ XCTFail("\(error)")
+ }
+ networkExpectation.fulfill()
+ }
+ wait(for: [networkExpectation], timeout: 5)
+ }
+
+ func test03Find_TaxonomyQuery_InOperator() async {
+ let term1 = "test_term"
+ let networkExpectation = expectation(description: "Fetch Entries where test_taxonomy is test_term (in) Test")
+ self.getTaxonomyQuery().where(valueAtKey: "taxonomies.test_taxonomy", .includes([term1])).find { (result: Result, Error>, response: ResponseType) in
+ switch result {
+ case .success(let contentstackResponse):
+ XCTAssertEqual(contentstackResponse.items.count, 1)
+ case .failure(let error):
+ XCTFail("\(error)")
+ }
+ networkExpectation.fulfill()
+ }
+ wait(for: [networkExpectation], timeout: 5)
+ }
+
+ func test04Find_TaxonomyQuery_Below() async {
+ let term1 = "test_term"
+ let networkExpectation = expectation(description: "Fetch Entries where test_taxonomy is test_term (below) Test")
+ self.getTaxonomyQuery().where(valueAtKey: "taxonomies.test_taxonomy", .below(term1)).find {(result: Result, Error>, response: ResponseType) in
+ switch result {
+ case .success(let contentstackResponse):
+ XCTAssertEqual(contentstackResponse.items.count, 0)
+ case .failure(let error):
+ XCTFail("\(error)")
+ }
+ networkExpectation.fulfill()
+ }
+ wait(for: [networkExpectation], timeout: 5)
+ }
+
+ func test05Find_TaxonomyQuery_EqBelow() async {
+ let term1 = "test_term"
+ let networkExpectation = expectation(description: "Fetch Entries where test_taxonomy is test_term (eq_below) Test")
+ self.getTaxonomyQuery().where(valueAtKey: "taxonomies.test_taxonomy", .eqBelow(term1)).find { (result: Result, Error>, response: ResponseType) in
+ switch result {
+ case .success(let contentstackResponse):
+ XCTAssertEqual(contentstackResponse.items.count, 1)
+ case .failure(let error):
+ XCTFail("\(error)")
+ }
+ networkExpectation.fulfill()
+ }
+ wait(for: [networkExpectation], timeout: 5)
+ }
+
+ func test06Find_TaxonomyQuery_Above() async {
+ let term1 = "test_term"
+ let networkExpectation = expectation(description: "Fetch Entries where test_taxonomy is test_term (above) Test")
+ self.getTaxonomyQuery().where(valueAtKey: "taxonomies.test_taxonomy", .above(term1)).find { (result: Result, Error>, response: ResponseType) in
+ switch result {
+ case .success(let contentstackResponse):
+ XCTAssertEqual(contentstackResponse.items.count, 0)
+ case .failure(let error):
+ XCTFail("\(error)")
+ }
+ networkExpectation.fulfill()
+ }
+ wait(for: [networkExpectation], timeout: 5)
+ }
+
+ func test07Find_TaxonomyQuery_EqAbove() async {
+ let term1 = "test_term"
+ let networkExpectation = expectation(description: "Fetch Entries where test_taxonomy is test_term (eq_above) Test")
+ self.getTaxonomyQuery().where(valueAtKey: "taxonomies.test_taxonomy", .eqAbove(term1)).find { (result: Result, Error>, response: ResponseType) in
+ switch result {
+ case .success(let contentstackResponse):
+ XCTAssertEqual(contentstackResponse.items.count, 1)
+ case .failure(let error):
+ XCTFail("\(error)")
+ }
+ networkExpectation.fulfill()
+ }
+ networkExpectation.fulfill()
+ wait(for: [networkExpectation], timeout: 5)
+ }
+}
diff --git a/Tests/XCTestCase+Extension.swift b/Tests/XCTestCase+Extension.swift
index c5f9cc35..f9865cec 100644
--- a/Tests/XCTestCase+Extension.swift
+++ b/Tests/XCTestCase+Extension.swift
@@ -120,6 +120,42 @@ extension XCTestCase {
paramsIn.isEquals(to: value) {
return true
}
+ case .eqBelow(let value):
+ if let params = queryParameter as? [String: QueryableRange],
+ let queryParam = operation.query as? [String: QueryableRange],
+ let paramsIn = params["$eq_below"],
+ let queryParamIn = queryParam["$eq_below"],
+ paramsIn.isEquals(to: queryParamIn),
+ paramsIn.isEquals(to: value) {
+ return true
+ }
+ case .below(let value):
+ if let params = queryParameter as? [String: QueryableRange],
+ let queryParam = operation.query as? [String: QueryableRange],
+ let paramsIn = params["$below"],
+ let queryParamIn = queryParam["$below"],
+ paramsIn.isEquals(to: queryParamIn),
+ paramsIn.isEquals(to: value) {
+ return true
+ }
+ case .eqAbove(let value):
+ if let params = queryParameter as? [String: QueryableRange],
+ let queryParam = operation.query as? [String: QueryableRange],
+ let paramsIn = params["$eq_above"],
+ let queryParamIn = queryParam["$eq_above"],
+ paramsIn.isEquals(to: queryParamIn),
+ paramsIn.isEquals(to: value) {
+ return true
+ }
+ case .above(let value):
+ if let params = queryParameter as? [String: QueryableRange],
+ let queryParam = operation.query as? [String: QueryableRange],
+ let paramsIn = params["$above"],
+ let queryParamIn = queryParam["$above"],
+ paramsIn.isEquals(to: queryParamIn),
+ paramsIn.isEquals(to: value) {
+ return true
+ }
}
return false
}
diff --git a/Tests/config.json b/Tests/config.json
index 0db3279e..e41a1dcf 100644
--- a/Tests/config.json
+++ b/Tests/config.json
@@ -1,3 +1,5 @@
{
-
+ "api_key" : "",
+ "delivery_token" : "",
+ "environment" : ""
}