Skip to content

Commit dbb51d4

Browse files
Add Swift Unit Tests
1 parent ab15ddd commit dbb51d4

5 files changed

Lines changed: 387 additions & 28 deletions

File tree

mParticle-Rokt.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
/* Begin PBXBuildFile section */
1010
2502325C2D7A7BF3004794A2 /* Rokt-Widget in Frameworks */ = {isa = PBXBuildFile; productRef = 2502325B2D7A7BF3004794A2 /* Rokt-Widget */; };
1111
7E084C862E0C4B3A0098059B /* MPRoktLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E084C842E0C4B340098059B /* MPRoktLayout.swift */; };
12+
7E084C8A2E12C4D30098059B /* mParticle_Rokt_SwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E084C892E12C4D30098059B /* mParticle_Rokt_SwiftTests.swift */; };
1213
7E15B20B2D9AE82600C1FF3E /* Rokt-Widget in Frameworks */ = {isa = PBXBuildFile; productRef = 7E15B20A2D9AE82600C1FF3E /* Rokt-Widget */; };
1314
7EDDAAB02E05A88E00D089CF /* mParticle-Apple-SDK in Frameworks */ = {isa = PBXBuildFile; productRef = 7EDDAAAF2E05A88E00D089CF /* mParticle-Apple-SDK */; };
1415
7EDDAAB22E05A89B00D089CF /* mParticle-Apple-SDK in Frameworks */ = {isa = PBXBuildFile; productRef = 7EDDAAB12E05A89B00D089CF /* mParticle-Apple-SDK */; };
@@ -33,6 +34,8 @@
3334

3435
/* Begin PBXFileReference section */
3536
7E084C842E0C4B340098059B /* MPRoktLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MPRoktLayout.swift; sourceTree = "<group>"; };
37+
7E084C882E12C4D30098059B /* mParticle_RoktTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "mParticle_RoktTests-Bridging-Header.h"; sourceTree = "<group>"; };
38+
7E084C892E12C4D30098059B /* mParticle_Rokt_SwiftTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = mParticle_Rokt_SwiftTests.swift; sourceTree = "<group>"; };
3639
B3D778512E02845700D887A4 /* MPRoktEventMapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MPRoktEventMapper.swift; sourceTree = "<group>"; };
3740
DBB01A5B1DC1478A00A7B188 /* mParticle_Rokt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = mParticle_Rokt.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3841
DBB01A5E1DC1478A00A7B188 /* mParticle_Rokt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mParticle_Rokt.h; sourceTree = "<group>"; };
@@ -104,7 +107,9 @@
104107
isa = PBXGroup;
105108
children = (
106109
FF0BB63D217A84E800B0556C /* mParticle_RoktTests.m */,
110+
7E084C892E12C4D30098059B /* mParticle_Rokt_SwiftTests.swift */,
107111
FF0BB63F217A84E800B0556C /* Info.plist */,
112+
7E084C882E12C4D30098059B /* mParticle_RoktTests-Bridging-Header.h */,
108113
);
109114
path = mParticle_RoktTests;
110115
sourceTree = "<group>";
@@ -249,6 +254,7 @@
249254
buildActionMask = 2147483647;
250255
files = (
251256
FF0BB63E217A84E800B0556C /* mParticle_RoktTests.m in Sources */,
257+
7E084C8A2E12C4D30098059B /* mParticle_Rokt_SwiftTests.swift in Sources */,
252258
);
253259
runOnlyForDeploymentPostprocessing = 0;
254260
};
@@ -451,6 +457,7 @@
451457
MTL_FAST_MATH = YES;
452458
PRODUCT_BUNDLE_IDENTIFIER = "com.mparticle.mParticle-RoktTests";
453459
PRODUCT_NAME = "$(TARGET_NAME)";
460+
SWIFT_OBJC_BRIDGING_HEADER = "mParticle_RoktTests/mParticle_RoktTests-Bridging-Header.h";
454461
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
455462
SWIFT_VERSION = 6.0;
456463
TARGETED_DEVICE_FAMILY = "1,2";
@@ -491,6 +498,7 @@
491498
MTL_FAST_MATH = YES;
492499
PRODUCT_BUNDLE_IDENTIFIER = "com.mparticle.mParticle-RoktTests";
493500
PRODUCT_NAME = "$(TARGET_NAME)";
501+
SWIFT_OBJC_BRIDGING_HEADER = "mParticle_RoktTests/mParticle_RoktTests-Bridging-Header.h";
494502
SWIFT_VERSION = 6.0;
495503
TARGETED_DEVICE_FAMILY = "1,2";
496504
};

mParticle-Rokt/MPRoktLayout.swift

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -19,32 +19,6 @@ import mParticle_Apple_SDK
1919
public struct MPRoktLayout: View {
2020
private var roktLayout: RoktLayout
2121

22-
public init(
23-
sdkTriggered: Binding<Bool>,
24-
viewName: String? = nil,
25-
locationName: String = "",
26-
attributes: [String: String],
27-
config: RoktConfig? = nil,
28-
onLoad: (() -> Void)? = nil,
29-
onUnLoad: (() -> Void)? = nil,
30-
onShouldShowLoadingIndicator: (() -> Void)? = nil,
31-
onShouldHideLoadingIndicator: (() -> Void)? = nil
32-
) {
33-
MPKitRokt.prepareAttributes(attributes, filteredUser: Optional<FilteredMParticleUser>.none, performMapping: true)
34-
35-
self.roktLayout = RoktLayout.init(
36-
sdkTriggered: sdkTriggered,
37-
viewName: viewName,
38-
locationName: locationName,
39-
attributes: attributes,
40-
config: config,
41-
onLoad: onLoad,
42-
onUnLoad: onUnLoad,
43-
onShouldShowLoadingIndicator: onShouldShowLoadingIndicator,
44-
onShouldHideLoadingIndicator: onShouldHideLoadingIndicator
45-
)
46-
}
47-
4822
public init(
4923
sdkTriggered: Binding<Bool>,
5024
viewName: String? = nil,
@@ -53,11 +27,13 @@ public struct MPRoktLayout: View {
5327
config: RoktConfig? = nil,
5428
onEvent: ((RoktEvent) -> Void)? = nil
5529
) {
30+
let preparedAttributes = MPKitRokt.prepareAttributes(attributes, filteredUser: Optional<FilteredMParticleUser>.none, performMapping: true)
31+
5632
self.roktLayout = RoktLayout.init(
5733
sdkTriggered: sdkTriggered,
5834
viewName: viewName,
5935
locationName: locationName,
60-
attributes: attributes,
36+
attributes: preparedAttributes,
6137
config: config,
6238
onEvent: onEvent
6339
)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//
2+
// Use this file to import your target's public headers that you would like to expose to Swift.
3+
//
4+
#import <OCMock/OCMock.h>
5+
#import <Rokt_Widget/Rokt_Widget-Swift.h>
6+
#import <mParticle_Rokt/mParticle_Rokt.h>
7+
#import "MPKitRokt.h"
8+
#import <mParticle_Rokt/mParticle_Rokt-Swift.h>

mParticle_RoktTests/mParticle_RoktTests.m

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,45 @@ - (void)testExecuteWithIdentifier {
130130
MPRoktEmbeddedView *view = [[MPRoktEmbeddedView alloc] init];
131131
NSString *identifier = @"TestView";
132132
NSDictionary *embeddedViews = @{@"placement1": view};
133-
NSDictionary *attributes = @{@"attr1": @"value1", @"sandbox": @"true"};
133+
NSDictionary *attributes = @{@"attr1": @"value1", @"sandbox": @"false"};
134+
FilteredMParticleUser *user = [[FilteredMParticleUser alloc] init];
135+
136+
// Expected attributes in final call
137+
NSDictionary *expectedAttributes = @{
138+
@"sandbox": @"false"
139+
};
140+
141+
// Expect Rokt execute call with correct parameters
142+
OCMExpect([mockRoktSDK executeWithViewName:identifier
143+
attributes:expectedAttributes
144+
placements:OCMOCK_ANY
145+
config:nil
146+
onLoad:nil
147+
onUnLoad:nil
148+
onShouldShowLoadingIndicator:nil
149+
onShouldHideLoadingIndicator:nil
150+
onEmbeddedSizeChange:nil]);
151+
152+
MPKitExecStatus *status = [self.kitInstance executeWithIdentifier:identifier
153+
attributes:attributes
154+
embeddedViews:embeddedViews
155+
config:nil
156+
callbacks:nil
157+
filteredUser:user];
158+
159+
// Verify
160+
XCTAssertNotNil(status);
161+
XCTAssertEqual(status.returnCode, MPKitReturnCodeSuccess);
162+
OCMVerifyAll(mockRoktSDK);
163+
}
164+
165+
- (void)testExecuteSandboxDetection {
166+
id mockRoktSDK = OCMClassMock([Rokt class]);
167+
168+
MPRoktEmbeddedView *view = [[MPRoktEmbeddedView alloc] init];
169+
NSString *identifier = @"TestView";
170+
NSDictionary *embeddedViews = @{@"placement1": view};
171+
NSDictionary *attributes = @{@"attr1": @"value1"};
134172
FilteredMParticleUser *user = [[FilteredMParticleUser alloc] init];
135173

136174
// Expected attributes in final call

0 commit comments

Comments
 (0)