Files
divkit/client/ios/DivKitTests/Variables/DivVariableTrackerTests.swift
kotovmax 5878ce3bff DivVariableTracker state made public
7780f2b01a84a85b6a6ed534653c520c0fc31c0b
2024-06-25 14:08:01 +03:00

77 lines
2.7 KiB
Swift

@testable import DivKit
import XCTest
final class DivVariableTrackerTests: XCTestCase {
private let variableTracker = DivVariableTracker()
func test_onVariableUsed_UpdatesAffectedCards() {
variableTracker.onVariableUsed(id: id1, variable: "Var1")
let affectedCards = variableTracker.getAffectedCards(variables: ["Var1", "Var2"])
XCTAssertEqual(affectedCards, ["card1": ["Var1"]])
}
func test_onVariableUsed_WithSameCardId_UpdatesAffectedCards() {
variableTracker.onVariableUsed(id: id1, variable: "Var1")
variableTracker.onVariableUsed(id: id1, variable: "Var2")
variableTracker.onVariableUsed(id: id1, variable: "Var3")
let affectedCards = variableTracker.getAffectedCards(variables: ["Var1", "Var2"])
XCTAssertEqual(affectedCards, ["card1": ["Var1", "Var2"]])
}
func test_onVariableUsed_WithDifferentCardId_UpdatesAffectedCards() {
variableTracker.onVariableUsed(id: id1, variable: "Var1")
variableTracker.onVariableUsed(id: id1, variable: "Var2")
variableTracker.onVariableUsed(id: id2, variable: "Var1")
variableTracker.onVariableUsed(id: id2, variable: "Var3")
let affectedCards = variableTracker.getAffectedCards(variables: ["Var1", "Var2"])
XCTAssertEqual(affectedCards, ["card1": ["Var1", "Var2"], "card2": ["Var1"]])
}
func test_onModelingStarted_ResetsAffectedCards() {
variableTracker.onVariableUsed(id: id1, variable: "Var1")
variableTracker.onModelingStarted(id: id1)
let affectedCards = variableTracker.getAffectedCards(variables: ["Var1"])
XCTAssertTrue(affectedCards.isEmpty)
}
func test_onVariableUsed_WithAdditionalId_UpdatesAffectedCards() {
variableTracker.onVariableUsed(id: id1a1, variable: "Var1")
let affectedCards = variableTracker.getAffectedCards(variables: ["Var1"])
XCTAssertEqual(affectedCards, ["card1": ["Var1"]])
}
func test_onModelingStarted_WithAdditionalId_DoesNotResetAffectedCards() {
variableTracker.onVariableUsed(id: id1, variable: "Var1")
variableTracker.onModelingStarted(id: id1a1)
let affectedCards = variableTracker.getAffectedCards(variables: ["Var1"])
XCTAssertEqual(affectedCards, ["card1": ["Var1"]])
}
func test_ProvidesUsedVariables() {
variableTracker.onVariableUsed(id: id1, variable: "Var1")
variableTracker.onVariableUsed(id: id2, variable: "Var2")
variableTracker.onVariableUsed(id: id2, variable: "Var3")
XCTAssertEqual(
variableTracker.usedVariablesByCard,
[
id1.cardId: ["Var1"],
id2.cardId: ["Var2", "Var3"]
]
)
}
}
private let id1 = DivViewId(cardId: "card1", additionalId: nil)
private let id1a1 = DivViewId(cardId: "card1", additionalId: "1")
private let id2 = DivViewId(cardId: "card2", additionalId: nil)