Skip to content

Commit 2d0a338

Browse files
test: improve test coverage and added github action
1 parent c3c3561 commit 2d0a338

30 files changed

+2550
-36
lines changed

.github/workflows/ios-tests.yml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
name: Run tests
2+
3+
on:
4+
push:
5+
branches: [ "master" ]
6+
pull_request:
7+
branches: [ "master" ]
8+
9+
jobs:
10+
build:
11+
if: "!contains(github.event.head_commit.message, '[skip-ci]')"
12+
name: Run test on ${{ matrix.os }} with Xcode ${{ matrix.xcode-version }}
13+
runs-on: ${{ matrix.os }}
14+
strategy:
15+
fail-fast: false
16+
matrix:
17+
include:
18+
- os: macos-15
19+
xcode-version: '16.3'
20+
swift-version: '6.0'
21+
destination: 'platform=iOS Simulator,name=iPhone 16,OS=18.2'
22+
23+
- os: macos-14
24+
xcode-version: '15.4'
25+
swift-version: '5.10'
26+
destination: 'platform=iOS Simulator,name=iPhone 15,OS=17.2'
27+
28+
- os: macos-14
29+
xcode-version: '15.2'
30+
swift-version: '5.9'
31+
destination: 'platform=iOS Simulator,name=iPhone 15,OS=17.2'
32+
33+
steps:
34+
- uses: actions/checkout@v4
35+
36+
- name: Set up Swift
37+
uses: swift-actions/setup-swift@v1
38+
39+
- name: Select Xcode Version
40+
run: sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode-version }}.app
41+
42+
- name: List available simulators
43+
run: xcrun simctl list
44+
45+
- name: Build
46+
run: |
47+
xcodebuild build-for-testing \
48+
-scheme VWO-FME \
49+
-sdk iphonesimulator \
50+
-configuration Debug
51+
52+
- name: Test with Coverage
53+
run: |
54+
xcodebuild test \
55+
-scheme VWO-FMETests \
56+
-destination '${{ matrix.destination }}' \
57+
-sdk iphonesimulator \
58+
-configuration Debug \
59+
-enableCodeCoverage YES \
60+
-resultBundlePath ./TestResults.xcresult
61+
62+
- name: Generate Coverage Report
63+
run: |
64+
xcrun xccov view --report --files-for-target VWO-FME ./TestResults.xcresult
65+
66+
- name: Notification
67+
if: always()
68+
id: slack
69+
uses: wingify/slack-github-action@v1.15.1-wingify
70+
with:
71+
channel-id: 'vwo-fs-fme-sdk-job-status'
72+
slack-message: "<!here> iOS FME SDK Test on *macOS-${{ matrix.os }}* and *Xcode-${{ matrix.xcode-version }}* got *${{ job.status }}* ${{ job.status == 'success' && ':heavy_check_mark:' || ':x:' }} \nCommit: `${{ github.event.head_commit.message }}`. \nCheck the latest build: https://github.com/wingify/vwo-fme-ios-sdk/actions"
73+
color: "${{ job.status == 'success' && '#00FF00' || '#FF0000' }}"
74+
env:
75+
SLACK_BOT_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }}

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.6.1] - 2025-06-03
9+
10+
### Added
11+
12+
- Expanded test coverage.
13+
814
## [1.6.0] - 2025-05-09
915

1016
### Added

Package.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ let package = Package(
2929
cSettings: [
3030
.headerSearchPath("VWO-FME")
3131
]
32+
),
33+
.testTarget(
34+
name: "VWO-FMETests",
35+
dependencies: ["VWO-FME"],
36+
path: "VWO-FMETests"
3237
)
3338
],
3439
swiftLanguageVersions: [.v5]

VWO-FME.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Pod::Spec.new do |spec|
33

44
spec.name = "VWO-FME"
5-
spec.version = "1.6.0"
5+
spec.version = "1.6.1"
66
spec.summary = "VWO iOS SDK for Feature Management and Experimentation"
77
spec.description = "VWO iOS SDK for Feature Management and Experimentation."
88

VWO-FME.xcodeproj/project.pbxproj

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,24 @@
134134
EB373EC72DB92A13005713D1 /* UsageStatsUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB373EC62DB92A13005713D1 /* UsageStatsUtil.swift */; };
135135
EB50927D2C902C5E00A8779A /* VWO_FME.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB06C7802C90229B00A25E07 /* VWO_FME.framework */; };
136136
EB50927E2C902C5E00A8779A /* VWO_FME.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = EB06C7802C90229B00A25E07 /* VWO_FME.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
137+
EB544EFD2DD5DD20006AA817 /* LogManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB544EFC2DD5DD20006AA817 /* LogManagerTests.swift */; };
138+
EB544F012DD5F788006AA817 /* SegmentOperatorValueEnumTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB544F002DD5F788006AA817 /* SegmentOperatorValueEnumTests.swift */; };
139+
EB544F042DD5FA08006AA817 /* FeatureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB544F032DD5FA08006AA817 /* FeatureTests.swift */; };
140+
EB544F072DD5FBA6006AA817 /* EnumTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB544F062DD5FBA6006AA817 /* EnumTests.swift */; };
141+
EB544F0C2DD60E76006AA817 /* SettingsSchemaTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB544F0B2DD60E76006AA817 /* SettingsSchemaTests.swift */; };
142+
EB544F0E2DD61176006AA817 /* EmptySettings.json in Resources */ = {isa = PBXBuildFile; fileRef = EB544F0D2DD61176006AA817 /* EmptySettings.json */; };
143+
EB544F112DD613D8006AA817 /* UsageStatsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB544F102DD613D8006AA817 /* UsageStatsTests.swift */; };
144+
EB544F132DD72851006AA817 /* RolloutAndTestingSettingsWithPreSegmentMobile.json in Resources */ = {isa = PBXBuildFile; fileRef = EB544F122DD7284E006AA817 /* RolloutAndTestingSettingsWithPreSegmentMobile.json */; };
145+
EB544F152DD7379A006AA817 /* RolloutAndTestingSettingsWithPreSegmentMobileUA.json in Resources */ = {isa = PBXBuildFile; fileRef = EB544F142DD73758006AA817 /* RolloutAndTestingSettingsWithPreSegmentMobileUA.json */; };
146+
EB544F172DD73E28006AA817 /* DataTypeUtilTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB544F162DD73E28006AA817 /* DataTypeUtilTests.swift */; };
147+
EB544F1B2DD75335006AA817 /* RolloutAndTestingSettingsWithPreSegmentFeatureFlagStatus.json in Resources */ = {isa = PBXBuildFile; fileRef = EB544F1A2DD75275006AA817 /* RolloutAndTestingSettingsWithPreSegmentFeatureFlagStatus.json */; };
148+
EB544F1F2DD77D2F006AA817 /* RolloutAndTestingSettingsInlist.json in Resources */ = {isa = PBXBuildFile; fileRef = EB544F1E2DD77D1E006AA817 /* RolloutAndTestingSettingsInlist.json */; };
149+
EB544F222DD784A3006AA817 /* SyncManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB544F212DD784A3006AA817 /* SyncManagerTests.swift */; };
137150
EB5500862CA51C3C00A8B729 /* GetFlagAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB5500852CA51C3C00A8B729 /* GetFlagAPI.swift */; };
138151
EB5500872CA51C3C00A8B729 /* SetAttributeAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB5500832CA51C3C00A8B729 /* SetAttributeAPI.swift */; };
139152
EB5500882CA51C3C00A8B729 /* TrackEventAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB5500842CA51C3C00A8B729 /* TrackEventAPI.swift */; };
153+
EB7A73372DDC67190034279F /* CampaignUtilTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB7A73362DDC67190034279F /* CampaignUtilTests.swift */; };
154+
EB7A73392DDC6DC60034279F /* RolloutAndTestingSettingsUserInlist.json in Resources */ = {isa = PBXBuildFile; fileRef = EB7A73382DDC6DB70034279F /* RolloutAndTestingSettingsUserInlist.json */; };
140155
EB7E3D6A2D27D3D3009B572F /* OffineEventData.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = EB7E3D682D27D3D3009B572F /* OffineEventData.xcdatamodeld */; };
141156
EB7E3D712D27D7A8009B572F /* EventData+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB7E3D6F2D27D7A8009B572F /* EventData+CoreDataClass.swift */; };
142157
EB7E3D722D27D7A8009B572F /* EventData+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB7E3D702D27D7A8009B572F /* EventData+CoreDataProperties.swift */; };
@@ -289,9 +304,24 @@
289304
EB373EBF2DAF82A2005713D1 /* EventDataManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventDataManagerTests.swift; sourceTree = "<group>"; };
290305
EB373EC22DAFA8A6005713D1 /* DictionaryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DictionaryTests.swift; sourceTree = "<group>"; };
291306
EB373EC62DB92A13005713D1 /* UsageStatsUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsageStatsUtil.swift; sourceTree = "<group>"; };
307+
EB544EFC2DD5DD20006AA817 /* LogManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogManagerTests.swift; sourceTree = "<group>"; };
308+
EB544F002DD5F788006AA817 /* SegmentOperatorValueEnumTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SegmentOperatorValueEnumTests.swift; sourceTree = "<group>"; };
309+
EB544F032DD5FA08006AA817 /* FeatureTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureTests.swift; sourceTree = "<group>"; };
310+
EB544F062DD5FBA6006AA817 /* EnumTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnumTests.swift; sourceTree = "<group>"; };
311+
EB544F0B2DD60E76006AA817 /* SettingsSchemaTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsSchemaTests.swift; sourceTree = "<group>"; };
312+
EB544F0D2DD61176006AA817 /* EmptySettings.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = EmptySettings.json; sourceTree = "<group>"; };
313+
EB544F102DD613D8006AA817 /* UsageStatsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsageStatsTests.swift; sourceTree = "<group>"; };
314+
EB544F122DD7284E006AA817 /* RolloutAndTestingSettingsWithPreSegmentMobile.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = RolloutAndTestingSettingsWithPreSegmentMobile.json; sourceTree = "<group>"; };
315+
EB544F142DD73758006AA817 /* RolloutAndTestingSettingsWithPreSegmentMobileUA.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = RolloutAndTestingSettingsWithPreSegmentMobileUA.json; sourceTree = "<group>"; };
316+
EB544F162DD73E28006AA817 /* DataTypeUtilTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataTypeUtilTests.swift; sourceTree = "<group>"; };
317+
EB544F1A2DD75275006AA817 /* RolloutAndTestingSettingsWithPreSegmentFeatureFlagStatus.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = RolloutAndTestingSettingsWithPreSegmentFeatureFlagStatus.json; sourceTree = "<group>"; };
318+
EB544F1E2DD77D1E006AA817 /* RolloutAndTestingSettingsInlist.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = RolloutAndTestingSettingsInlist.json; sourceTree = "<group>"; };
319+
EB544F212DD784A3006AA817 /* SyncManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncManagerTests.swift; sourceTree = "<group>"; };
292320
EB5500832CA51C3C00A8B729 /* SetAttributeAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SetAttributeAPI.swift; sourceTree = "<group>"; };
293321
EB5500842CA51C3C00A8B729 /* TrackEventAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackEventAPI.swift; sourceTree = "<group>"; };
294322
EB5500852CA51C3C00A8B729 /* GetFlagAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GetFlagAPI.swift; sourceTree = "<group>"; };
323+
EB7A73362DDC67190034279F /* CampaignUtilTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CampaignUtilTests.swift; sourceTree = "<group>"; };
324+
EB7A73382DDC6DB70034279F /* RolloutAndTestingSettingsUserInlist.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = RolloutAndTestingSettingsUserInlist.json; sourceTree = "<group>"; };
295325
EB7E3D692D27D3D3009B572F /* OffineEventData.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = OffineEventData.xcdatamodel; sourceTree = "<group>"; };
296326
EB7E3D6F2D27D7A8009B572F /* EventData+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EventData+CoreDataClass.swift"; sourceTree = "<group>"; };
297327
EB7E3D702D27D7A8009B572F /* EventData+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EventData+CoreDataProperties.swift"; sourceTree = "<group>"; };
@@ -661,6 +691,12 @@
661691
EB373E682D9D2B51005713D1 /* VWO-FMETests */ = {
662692
isa = PBXGroup;
663693
children = (
694+
EB544F202DD78493006AA817 /* SyncManager */,
695+
EB544F0F2DD613AE006AA817 /* UsageStats */,
696+
EB544F0A2DD60E64006AA817 /* SettingSchema */,
697+
EB544F052DD5FB96006AA817 /* Enums */,
698+
EB544F022DD5F9DC006AA817 /* Specs */,
699+
EB544EFB2DD5DD0E006AA817 /* LogManager */,
664700
EB373EC12DAFA892005713D1 /* Dictionary */,
665701
EB373EBE2DAF828C005713D1 /* EventDataManager */,
666702
EB373EBB2DAE9ADE005713D1 /* FmeConfig */,
@@ -689,6 +725,7 @@
689725
children = (
690726
EB373E772D9E7E08005713D1 /* SegmentEvaluatorTests.swift */,
691727
EB373E792D9E98CA005713D1 /* SegmentEvaluatorTest.json */,
728+
EB544F002DD5F788006AA817 /* SegmentOperatorValueEnumTests.swift */,
692729
);
693730
path = SegmentEvaluator;
694731
sourceTree = "<group>";
@@ -709,13 +746,19 @@
709746
children = (
710747
EB373E902DA65583005713D1 /* OnlyRolloutSettings.json */,
711748
EB373E962DA7DCC5005713D1 /* RolloutAndTestingSettings.json */,
749+
EB544F1E2DD77D1E006AA817 /* RolloutAndTestingSettingsInlist.json */,
750+
EB7A73382DDC6DB70034279F /* RolloutAndTestingSettingsUserInlist.json */,
712751
EB373E982DA7DCE9005713D1 /* RolloutAndTestingSettingsWithPreSegment.json */,
752+
EB544F122DD7284E006AA817 /* RolloutAndTestingSettingsWithPreSegmentMobile.json */,
753+
EB544F142DD73758006AA817 /* RolloutAndTestingSettingsWithPreSegmentMobileUA.json */,
754+
EB544F1A2DD75275006AA817 /* RolloutAndTestingSettingsWithPreSegmentFeatureFlagStatus.json */,
713755
EB373E9A2DA7DD0E005713D1 /* MegAdvanceAlgoCampaignSettings.json */,
714756
EB373E9C2DA7DD20005713D1 /* MegRandomAlgoCampaignSettings.json */,
715757
EB373E9E2DA7DD33005713D1 /* NoRolloutAndOnlyTestingSettings.json */,
716758
EB373EA02DA7DD47005713D1 /* SettingsWithDifferentSalt.json */,
717759
EB373EA22DA7DD57005713D1 /* SettingsWithSameSalt.json */,
718760
EB373EA42DA7DD66005713D1 /* SettingsWithWhitelisting.json */,
761+
EB544F0D2DD61176006AA817 /* EmptySettings.json */,
719762
);
720763
path = SettingsJson;
721764
sourceTree = "<group>";
@@ -727,6 +770,8 @@
727770
EB373EAB2DAE1FC2005713D1 /* UUIDUtilsTests.swift */,
728771
EB373EB02DAE69EC005713D1 /* FunctionUtilTests.swift */,
729772
EB373EB72DAE8013005713D1 /* SettingUtilTests.swift */,
773+
EB544F162DD73E28006AA817 /* DataTypeUtilTests.swift */,
774+
EB7A73362DDC67190034279F /* CampaignUtilTests.swift */,
730775
);
731776
path = Utility;
732777
sourceTree = "<group>";
@@ -771,6 +816,54 @@
771816
path = Dictionary;
772817
sourceTree = "<group>";
773818
};
819+
EB544EFB2DD5DD0E006AA817 /* LogManager */ = {
820+
isa = PBXGroup;
821+
children = (
822+
EB544EFC2DD5DD20006AA817 /* LogManagerTests.swift */,
823+
);
824+
path = LogManager;
825+
sourceTree = "<group>";
826+
};
827+
EB544F022DD5F9DC006AA817 /* Specs */ = {
828+
isa = PBXGroup;
829+
children = (
830+
EB544F032DD5FA08006AA817 /* FeatureTests.swift */,
831+
);
832+
path = Specs;
833+
sourceTree = "<group>";
834+
};
835+
EB544F052DD5FB96006AA817 /* Enums */ = {
836+
isa = PBXGroup;
837+
children = (
838+
EB544F062DD5FBA6006AA817 /* EnumTests.swift */,
839+
);
840+
path = Enums;
841+
sourceTree = "<group>";
842+
};
843+
EB544F0A2DD60E64006AA817 /* SettingSchema */ = {
844+
isa = PBXGroup;
845+
children = (
846+
EB544F0B2DD60E76006AA817 /* SettingsSchemaTests.swift */,
847+
);
848+
path = SettingSchema;
849+
sourceTree = "<group>";
850+
};
851+
EB544F0F2DD613AE006AA817 /* UsageStats */ = {
852+
isa = PBXGroup;
853+
children = (
854+
EB544F102DD613D8006AA817 /* UsageStatsTests.swift */,
855+
);
856+
path = UsageStats;
857+
sourceTree = "<group>";
858+
};
859+
EB544F202DD78493006AA817 /* SyncManager */ = {
860+
isa = PBXGroup;
861+
children = (
862+
EB544F212DD784A3006AA817 /* SyncManagerTests.swift */,
863+
);
864+
path = SyncManager;
865+
sourceTree = "<group>";
866+
};
774867
EB5500822CA51C3C00A8B729 /* API */ = {
775868
isa = PBXGroup;
776869
children = (
@@ -961,13 +1054,19 @@
9611054
EB373E9F2DA7DD33005713D1 /* NoRolloutAndOnlyTestingSettings.json in Resources */,
9621055
EB373EA12DA7DD47005713D1 /* SettingsWithDifferentSalt.json in Resources */,
9631056
EB373EA32DA7DD57005713D1 /* SettingsWithSameSalt.json in Resources */,
1057+
EB544F132DD72851006AA817 /* RolloutAndTestingSettingsWithPreSegmentMobile.json in Resources */,
1058+
EB544F152DD7379A006AA817 /* RolloutAndTestingSettingsWithPreSegmentMobileUA.json in Resources */,
9641059
EB373E912DA65583005713D1 /* OnlyRolloutSettings.json in Resources */,
9651060
EB373EBA2DAE825A005713D1 /* UtilitySettings.json in Resources */,
1061+
EB7A73392DDC6DC60034279F /* RolloutAndTestingSettingsUserInlist.json in Resources */,
9661062
EB373E9D2DA7DD20005713D1 /* MegRandomAlgoCampaignSettings.json in Resources */,
1063+
EB544F1B2DD75335006AA817 /* RolloutAndTestingSettingsWithPreSegmentFeatureFlagStatus.json in Resources */,
9671064
EB373E9B2DA7DD0E005713D1 /* MegAdvanceAlgoCampaignSettings.json in Resources */,
9681065
EB373E7A2D9E98CA005713D1 /* SegmentEvaluatorTest.json in Resources */,
9691066
EB373E842DA54B4D005713D1 /* GetFlagTest.json in Resources */,
9701067
EB373EA52DA7DD66005713D1 /* SettingsWithWhitelisting.json in Resources */,
1068+
EB544F1F2DD77D2F006AA817 /* RolloutAndTestingSettingsInlist.json in Resources */,
1069+
EB544F0E2DD61176006AA817 /* EmptySettings.json in Resources */,
9711070
EB373E972DA7DCC5005713D1 /* RolloutAndTestingSettings.json in Resources */,
9721071
EB373E992DA7DCE9005713D1 /* RolloutAndTestingSettingsWithPreSegment.json in Resources */,
9731072
);
@@ -1103,20 +1202,29 @@
11031202
isa = PBXSourcesBuildPhase;
11041203
buildActionMask = 2147483647;
11051204
files = (
1205+
EB544EFD2DD5DD20006AA817 /* LogManagerTests.swift in Sources */,
11061206
EB373E7C2D9E99C9005713D1 /* TestDataLoader.swift in Sources */,
11071207
EB373EB12DAE69EC005713D1 /* FunctionUtilTests.swift in Sources */,
1208+
EB544F112DD613D8006AA817 /* UsageStatsTests.swift in Sources */,
11081209
EB373E6A2D9D2B51005713D1 /* VWO_FMETests.swift in Sources */,
11091210
EB373E752D9D484C005713D1 /* DecisionMakerTests.swift in Sources */,
1211+
EB544F072DD5FBA6006AA817 /* EnumTests.swift in Sources */,
11101212
EB373E782D9E7E08005713D1 /* SegmentEvaluatorTests.swift in Sources */,
11111213
EB373E8A2DA637C2005713D1 /* MockHookManager.swift in Sources */,
1214+
EB544F042DD5FA08006AA817 /* FeatureTests.swift in Sources */,
11121215
EB373EAF2DAE4344005713D1 /* TrackEventTests.swift in Sources */,
1216+
EB7A73372DDC67190034279F /* CampaignUtilTests.swift in Sources */,
11131217
EB373E8E2DA649DA005713D1 /* FlagTestDataLoader.swift in Sources */,
1218+
EB544F012DD5F788006AA817 /* SegmentOperatorValueEnumTests.swift in Sources */,
11141219
EB373EBD2DAE9AF5005713D1 /* FmeConfigTests.swift in Sources */,
1220+
EB544F0C2DD60E76006AA817 /* SettingsSchemaTests.swift in Sources */,
1221+
EB544F172DD73E28006AA817 /* DataTypeUtilTests.swift in Sources */,
11151222
EB373EC32DAFA8A6005713D1 /* DictionaryTests.swift in Sources */,
11161223
EB373EC02DAF82A2005713D1 /* EventDataManagerTests.swift in Sources */,
11171224
EB373EB82DAE8013005713D1 /* SettingUtilTests.swift in Sources */,
11181225
EB373EAC2DAE1FC2005713D1 /* UUIDUtilsTests.swift in Sources */,
11191226
EB373E862DA54B77005713D1 /* GetFlagTests.swift in Sources */,
1227+
EB544F222DD784A3006AA817 /* SyncManagerTests.swift in Sources */,
11201228
);
11211229
runOnlyForDeploymentPostprocessing = 0;
11221230
};

VWO-FME/Models/Schema/SettingSchema.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class SettingsSchema {
4040
return false
4141
}
4242

43-
guard let campaigns = settings.campaigns, !campaigns.isEmpty else {
43+
guard let campaigns = settings.campaigns else {
4444
return false
4545
}
4646

0 commit comments

Comments
 (0)