ios/BitwardenShared/UI/Platform/Application/Views/SettingsMenuFieldTests.swift
2025-10-07 08:52:49 -05:00

62 lines
1.5 KiB
Swift

import BitwardenKit
import SwiftUI
import ViewInspector
import XCTest
@testable import BitwardenShared
class SettingsMenuFieldTests: BitwardenTestCase {
// MARK: Types
enum TestValue: String, CaseIterable, Menuable {
case value1
case value2
var localizedName: String {
rawValue
}
}
// MARK: Properties
var selection: TestValue!
var subject: SettingsMenuField<TestValue>!
// MARK: Setup & Teardown
override func setUp() {
super.setUp()
selection = .value1
let binding = Binding {
self.selection!
} set: { newValue in
self.selection = newValue
}
subject = SettingsMenuField(
title: "Title",
options: TestValue.allCases,
selection: binding,
)
}
override func tearDown() {
super.tearDown()
selection = nil
subject = nil
}
// MARK: Tests
func test_newSelection() throws {
let picker = try subject.inspect().find(ViewType.Picker.self)
try picker.select(value: TestValue.value2)
XCTAssertEqual(selection, .value2)
let menu = try subject.inspect().find(ViewType.Menu.self)
let title = try menu.labelView().find(ViewType.Text.self).string()
let pickerValue = try menu.find(ViewType.HStack.self).find(text: "value2").string()
XCTAssertEqual(title, "Title")
XCTAssertEqual(pickerValue, "value2")
}
}