FBAEMKit/FBAEMKitTests/AEMUtilityTests.swift (88 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 Foundation import XCTest #if !os(tvOS) final class AEMUtilityTests: XCTestCase { enum Keys { static let content = "fb_content" static let contentID = "fb_content_id" static let identity = "id" static let itemPrice = "item_price" static let quantity = "quantity" } func testGetInSegmentValue() { let parameters = [ Keys.content: [ [ Keys.identity: "12345", Keys.itemPrice: NSNumber(value: 10), Keys.quantity: NSNumber(value: 2), ], [ Keys.identity: "12345", Keys.itemPrice: NSNumber(value: 100), Keys.quantity: NSNumber(value: 3), ], [ Keys.identity: "testing", Keys.itemPrice: NSNumber(value: 100), Keys.quantity: NSNumber(value: 2), ], ], ] let value = _AEMUtility.shared.getInSegmentValue(parameters, matchingRule: SampleAEMMultiEntryRules.contentRule) XCTAssertTrue(value.isEqual(to: NSNumber(value: 320)), "Don't get the expected in segment value") } func testGetInSegmentValueWithDefaultPrice() { let parameters = [ Keys.content: [ [ Keys.identity: "12345", Keys.quantity: NSNumber(value: 2), ], ], ] let value = _AEMUtility.shared.getInSegmentValue(parameters, matchingRule: SampleAEMMultiEntryRules.contentRule) XCTAssertTrue(value.isEqual(to: NSNumber(value: 0)), "Don't get the expected in segment value") } func testGetInSegmentValueWithDefaultQuantity() { let parameters = [ Keys.content: [ [ Keys.identity: "12345", Keys.itemPrice: NSNumber(value: 100), ], ], ] let value = _AEMUtility.shared.getInSegmentValue(parameters, matchingRule: SampleAEMMultiEntryRules.contentRule) XCTAssertTrue(value.isEqual(to: NSNumber(value: 100)), "Don't get the expected in segment value") } func testGetContentWithIntID() { let contentID = _AEMUtility.shared.getContentID([ Keys.content: getJsonString(object: [ [Keys.identity: NSNumber(value: 123)], [Keys.identity: NSNumber(value: 456)], ]), ]) XCTAssertEqual(contentID, #"["123","456"]"#) } func testGetContentWithStringID() { let contentID = _AEMUtility.shared.getContentID([ Keys.content: getJsonString(object: [ [Keys.identity: "123"], [Keys.identity: "456"], ]), ]) XCTAssertEqual(contentID, #"["123","456"]"#) } func testGetContentFallback() { let contentID = _AEMUtility.shared.getContentID([ Keys.contentID: #"["123","456"]"#, ]) XCTAssertEqual(contentID, #"["123","456"]"#) } func getJsonString(object: [Any]) -> String { let jsonData = try? JSONSerialization.data(withJSONObject: object, options: []) return String(data: jsonData!, encoding: String.Encoding.ascii)! // swiftlint:disable:this force_unwrapping } } #endif