FBAEMKit/FBAEMKitTests/Helpers/SampleAEMConfigurations.swift (193 lines of code) (raw):
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* This source code is licensed under the license found in the
* LICENSE file in the root directory of this source tree.
*/
import FBAEMKit
import Foundation
enum SampleAEMConfigurations {
enum Keys {
static let defaultCurrency = "default_currency"
static let cutoffTime = "cutoff_time"
static let validFrom = "valid_from"
static let configMode = "config_mode"
static let conversionValueRules = "conversion_value_rules"
static let conversionValue = "conversion_value"
static let priority = "priority"
static let events = "events"
static let eventName = "event_name"
static let businessID = "advertiser_id"
static let paramRule = "param_rule"
static let values = "values"
static let currency = "currency"
static let amount = "amount"
}
enum Values {
static let purchase = "fb_mobile_purchase"
static let addToCart = "fb_mobile_add_to_cart"
static let donate = "Donate"
static let defaultMode = "DEFAULT"
static let brandMode = "BRAND"
static let cpasMode = "CPAS"
static let USD = "USD"
}
static func createWithMultipleRules() -> _AEMConfiguration {
_AEMConfiguration(
json: [
Keys.defaultCurrency: Values.USD,
Keys.cutoffTime: 1,
Keys.validFrom: 10000,
Keys.configMode: Values.defaultMode,
Keys.conversionValueRules: [
[
Keys.conversionValue: 4,
Keys.priority: 11,
Keys.events: [
[
Keys.eventName: Values.purchase,
Keys.values: [
[
Keys.currency: Values.USD,
Keys.amount: 100,
],
],
],
],
],
[
Keys.conversionValue: 3,
Keys.priority: 10,
Keys.events: [
[
Keys.eventName: Values.purchase,
Keys.values: [
[
Keys.currency: Values.USD,
Keys.amount: 0,
],
],
],
],
],
[
Keys.conversionValue: 2,
Keys.priority: 9,
Keys.events: [
[
Keys.eventName: Values.addToCart,
],
],
],
[
Keys.conversionValue: 1,
Keys.priority: 8,
Keys.events: [
[
Keys.eventName: Values.donate,
],
],
],
],
]
)! // swiftlint:disable:this force_unwrapping
}
static func createConfigWithBusinessID() -> _AEMConfiguration {
let advertiserRuleFactory = _AEMAdvertiserRuleFactory()
_AEMConfiguration.configure(withRuleProvider: advertiserRuleFactory)
return _AEMConfiguration(
json: [
Keys.defaultCurrency: Values.USD,
Keys.cutoffTime: 1,
Keys.validFrom: 10000,
Keys.configMode: Values.defaultMode,
Keys.businessID: "test_advertiserid_123",
Keys.paramRule: #"{"and": [{"value": {"contains": "abc"}}]}"#,
Keys.conversionValueRules: [
[
Keys.conversionValue: 2,
Keys.priority: 10,
Keys.events: [
[
Keys.eventName: Values.purchase,
],
[
Keys.eventName: Values.donate,
],
],
],
],
]
)! // swiftlint:disable:this force_unwrapping
}
static func createConfigWithBusinessIDAndContentRule() -> _AEMConfiguration {
let advertiserRuleFactory = _AEMAdvertiserRuleFactory()
_AEMConfiguration.configure(withRuleProvider: advertiserRuleFactory)
return _AEMConfiguration(
json: [
Keys.defaultCurrency: Values.USD,
Keys.cutoffTime: 1,
Keys.validFrom: 10000,
Keys.configMode: Values.brandMode,
Keys.businessID: "test_advertiserid_content_test",
Keys.paramRule: #"{"or": [{"fb_content[*].id": {"eq": "abc"}}]}"#,
Keys.conversionValueRules: [
[
Keys.conversionValue: 2,
Keys.priority: 10,
Keys.events: [
[
Keys.eventName: Values.purchase,
],
],
],
],
]
)! // swiftlint:disable:this force_unwrapping
}
static func createConfigWithoutBusinessID() -> _AEMConfiguration {
let advertiserRuleFactory = _AEMAdvertiserRuleFactory()
_AEMConfiguration.configure(withRuleProvider: advertiserRuleFactory)
return _AEMConfiguration(
json: [
Keys.defaultCurrency: Values.USD,
Keys.cutoffTime: 1,
Keys.validFrom: 10000,
Keys.configMode: Values.defaultMode,
Keys.conversionValueRules: [
[
Keys.conversionValue: 2,
Keys.priority: 10,
Keys.events: [
[
Keys.eventName: Values.purchase,
],
[
Keys.eventName: Values.donate,
],
],
],
],
]
)! // swiftlint:disable:this force_unwrapping
}
static func createCpasConfig() -> _AEMConfiguration {
let advertiserRuleFactory = _AEMAdvertiserRuleFactory()
_AEMConfiguration.configure(withRuleProvider: advertiserRuleFactory)
return _AEMConfiguration(
json: [
Keys.defaultCurrency: Values.USD,
Keys.cutoffTime: 1,
Keys.validFrom: 10000,
Keys.configMode: Values.cpasMode,
Keys.businessID: "test_advertiserid_cpas",
Keys.paramRule: #"{"or": [{"fb_content[*].id": {"eq": "abc"}}]}"#,
Keys.conversionValueRules: [
[
Keys.conversionValue: 2,
Keys.priority: 10,
Keys.events: [
[
Keys.eventName: Values.purchase,
],
],
],
],
]
)! // swiftlint:disable:this force_unwrapping
}
}