in FBSDKCoreKit/FBSDKCoreKitTests/Internal/AppEvents/SKAdNetwork/SKAdNetworkConversionConfigurationTests.swift [69:208]
func testParseRules() throws {
let rules = [
[
"conversion_value": 2,
"events": [
[
"event_name": "fb_mobile_purchase",
],
],
],
[
"conversion_value": 4,
"events": [
[
"event_name": "fb_mobile_purchase",
"values": [
[
"currency": "USD",
"amount": 100,
],
],
],
],
],
[
"conversion_value": 3,
"events": [
[
"event_name": "fb_mobile_purchase",
"values": [
[
"currency": "USD",
"amount": 100,
],
[
"currency": "JPY",
"amount": 100,
],
],
],
],
],
]
let conversionBitRules = try XCTUnwrap(SKAdNetworkConversionConfiguration.parseRules(rules))
var expectedRules = [SKAdNetworkRule]()
expectedRules.append(try XCTUnwrap(
SKAdNetworkRule(json: [
"conversion_value": 4,
"events": [
[
"event_name": "fb_mobile_purchase",
"values": [
[
"currency": "USD",
"amount": 100,
],
],
],
],
])
))
expectedRules.append(try XCTUnwrap(
SKAdNetworkRule(json: [
"conversion_value": 3,
"events": [
[
"event_name": "fb_mobile_purchase",
"values": [
[
"currency": "USD",
"amount": 100,
],
[
"currency": "JPY",
"amount": 100,
],
],
],
],
])
))
expectedRules.append(try XCTUnwrap(
SKAdNetworkRule(json: [
"conversion_value": 2,
"events": [
[
"event_name": "fb_mobile_purchase",
],
],
])
))
for (expectedRule, parsedRule) in zip(expectedRules, conversionBitRules) {
XCTAssertEqual(expectedRule.conversionValue, parsedRule.conversionValue)
XCTAssertEqual(expectedRule.events.count, parsedRule.events.count)
for (expectedEvent, parsedEvent) in zip(expectedRule.events, parsedRule.events) {
XCTAssertEqual(expectedEvent.eventName, parsedEvent.eventName)
XCTAssertEqual(expectedEvent.values, parsedEvent.values) // nil or equal
}
}
XCTAssertNil(SKAdNetworkConversionConfiguration.parseRules(nil))
let invalidData = [
[
"conversion_value": 2,
"events": [
[
"event_name": "fb_mobile_purchase",
"values": [
[
"amount": 100,
],
],
],
],
],
[
"conversion_value": 3,
"events": [
[
"event_name": "fb_mobile_purchase",
"values": [
[
"currency": "USD",
"amount": 100,
],
],
],
],
],
]
XCTAssertEqual(1, SKAdNetworkConversionConfiguration.parseRules(invalidData)?.count)
}