func testEncoding()

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)
  }