@testable import DivKit import DivKitTestsSupport @testable import LayoutKit import VGSL import XCTest final class DivTooltipExtensionsTests: XCTestCase { func test_SimpleTooltip() { let block = makeBlock( divSeparator( tooltips: [ DivTooltip( div: divContainer(), duration: .value(1000), id: "tooltip1", offset: point(x: 10, y: 20), position: .value(.center) ), ] ) ) let expectedBlock = try! StateBlock( child: DecoratingBlock( child: SeparatorBlock( color: color("#14000000") ), tooltips: [ BlockTooltip( block: DecoratingBlock( child: ContainerBlock( layoutDirection: .vertical, children: [], path: UIElementPath("test_card_id") + "tooltip1" + "container" ), accessibilityElement: .default ), params: BlockTooltipParams( id: "tooltip1", mode: .modal, duration: TimeInterval(milliseconds: 1000), closeByTapOutside: true, tapOutsideActions: [] ), offset: CGPoint(x: 10, y: 20), position: .center, useLegacyWidth: false ), ], accessibilityElement: .default ), ids: [] ) assertEqual(block, expectedBlock) } func test_NestedTooltip_IsIgnored() { let context = DivBlockModelingContext() let block = makeBlock( divSeparator( tooltips: [ DivTooltip( div: divSeparator( tooltips: [ DivTooltip( div: divContainer(), id: "nested_tooltip", position: .value(.center) ), ] ), id: "tooltip1", position: .value(.center) ), ] ), context: context, ignoreErrors: true ) let expectedBlock = StateBlock( child: DecoratingBlock( child: SeparatorBlock( color: color("#14000000") ), tooltips: [ BlockTooltip( block: DecoratingBlock( child: SeparatorBlock( color: color("#14000000") ), accessibilityElement: .default ), params: BlockTooltipParams( id: "tooltip1", mode: .modal, duration: TimeInterval(milliseconds: 5000), closeByTapOutside: true ), offset: CGPoint(x: 0, y: 0), position: .center, useLegacyWidth: false ), ], accessibilityElement: .default ), ids: [] ) assertEqual(block, expectedBlock) let errors = context.errorsStorage.errors XCTAssertEqual(1, errors.count) XCTAssertEqual("Tooltip can not host another tooltips", errors.first?.message) } }