in FBSDKCoreKit/FBSDKCoreKitTests/Internal/ServerConfiguration/ServerConfigurationTests.swift [514:580]
func testEncoding() {
let coder = TestCoder()
let errorConfig = ErrorConfiguration(dictionary: nil)
config = Fixtures.config(withDictionary: [
"appID": "appID",
"appName": "appName",
"loginTooltipEnabled": true,
"loginTooltipText": "loginTooltipText",
"defaultShareMode": "defaultShareMode",
"advertisingIDEnabled": true,
"implicitLoggingEnabled": true,
"implicitPurchaseLoggingEnabled": true,
"codelessEventsEnabled": true,
"uninstallTrackingEnabled": true,
"dialogFlows": ["foo": "Bar"],
"timestamp": Date(),
"errorConfiguration": errorConfig,
"sessionTimeoutInterval": 100,
"defaults": false,
"loggingToken": "loggingToken",
"smartLoginOptions": FBSDKServerConfigurationSmartLoginOptions.enabled.rawValue,
"smartLoginBookmarkIconURL": exampleURL,
"smartLoginMenuIconURL": exampleURL,
"updateMessage": "updateMessage",
"eventBindings": [["foo": "bar"]],
"restrictiveParams": ["restrictiveParams": "foo"],
"AAMRules": ["AAMRules": "foo"],
"suggestedEventsSetting": ["suggestedEventsSetting": "foo"],
])
config.encode(with: coder)
XCTAssertEqual(coder.encodedObject["appID"] as? String, config.appID)
XCTAssertEqual(coder.encodedObject["appName"] as? String, config.appName)
XCTAssertEqual(coder.encodedObject["loginTooltipEnabled"] as? Bool, config.isLoginTooltipEnabled)
XCTAssertEqual(coder.encodedObject["loginTooltipText"] as? String, config.loginTooltipText)
XCTAssertEqual(coder.encodedObject["defaultShareMode"] as? String, config.defaultShareMode)
XCTAssertEqual(coder.encodedObject["advertisingIDEnabled"] as? Bool, config.isAdvertisingIDEnabled)
XCTAssertEqual(coder.encodedObject["implicitLoggingEnabled"] as? Bool, config.isImplicitLoggingSupported)
XCTAssertEqual(
coder.encodedObject["implicitPurchaseLoggingEnabled"] as? Bool,
config.isImplicitPurchaseLoggingSupported
)
XCTAssertEqual(coder.encodedObject["codelessEventsEnabled"] as? Bool, config.isCodelessEventsEnabled)
XCTAssertEqual(coder.encodedObject["trackAppUninstallEnabled"] as? Bool, config.isUninstallTrackingEnabled)
XCTAssertEqualDicts(coder.encodedObject["dialogFlows"] as? [String: Any], config.dialogFlows())
XCTAssertEqual(coder.encodedObject["timestamp"] as? Date, config.timestamp)
XCTAssertEqual(coder.encodedObject["errorConfigs"] as? ErrorConfiguration, config.errorConfiguration)
XCTAssertEqual(coder.encodedObject["sessionTimeoutInterval"] as? TimeInterval, config.sessionTimoutInterval)
XCTAssertNil(
coder.encodedObject["defaults"],
"Should not encode whether default values were used to create server configuration"
)
XCTAssertEqual(coder.encodedObject["loggingToken"] as? String, config.loggingToken)
XCTAssertEqual(coder.encodedObject["smartLoginEnabled"] as? UInt, config.smartLoginOptions.rawValue)
XCTAssertEqual(coder.encodedObject["smarstLoginBookmarkIconURL"] as? URL, config.smartLoginBookmarkIconURL)
XCTAssertEqual(coder.encodedObject["smarstLoginBookmarkMenuURL"] as? URL, config.smartLoginMenuIconURL)
XCTAssertEqual(coder.encodedObject["SDKUpdateMessage"] as? String, config.updateMessage)
XCTAssertEqual(
coder.encodedObject["eventBindings"] as? [[String: String]],
config.eventBindings as? [[String: String]]
)
XCTAssertEqualDicts(coder.encodedObject["restrictiveParams"] as? [String: Any], config.restrictiveParams)
XCTAssertEqualDicts(coder.encodedObject["AAMRules"] as? [String: Any], config.aamRules)
XCTAssertEqualDicts(coder.encodedObject["suggestedEventsSetting"] as? [String: Any], config.suggestedEventsSetting)
}