75 lines
2.3 KiB
Swift
75 lines
2.3 KiB
Swift
import AppKit
|
|
import SwiftUI
|
|
import XCTest
|
|
import MacToolsPluginKit
|
|
@testable import MacTools
|
|
|
|
final class FeatureManagementTableViewTests: XCTestCase {
|
|
func testUpdatePolicySkipsUnchangedItems() {
|
|
let items = [
|
|
makeItem(id: "activity-bar", isVisible: true, isActive: false)
|
|
]
|
|
|
|
XCTAssertFalse(FeatureManagementTableUpdatePolicy.needsUpdate(
|
|
previousItems: items,
|
|
currentItems: items,
|
|
previousIsReorderEnabled: true,
|
|
currentIsReorderEnabled: true,
|
|
previousContentWidth: 480.2,
|
|
currentContentWidth: 480.4
|
|
))
|
|
}
|
|
|
|
func testUpdatePolicyRefreshesWhenRowStateChanges() {
|
|
let previousItems = [
|
|
makeItem(id: "activity-bar", isVisible: true, isActive: false)
|
|
]
|
|
let currentItems = [
|
|
makeItem(id: "activity-bar", isVisible: false, isActive: false)
|
|
]
|
|
|
|
XCTAssertTrue(FeatureManagementTableUpdatePolicy.needsUpdate(
|
|
previousItems: previousItems,
|
|
currentItems: currentItems,
|
|
previousIsReorderEnabled: true,
|
|
currentIsReorderEnabled: true,
|
|
previousContentWidth: 480,
|
|
currentContentWidth: 480
|
|
))
|
|
}
|
|
|
|
func testUpdatePolicyRefreshesWhenWidthChangesByPoint() {
|
|
let items = [
|
|
makeItem(id: "activity-bar", isVisible: true, isActive: false)
|
|
]
|
|
|
|
XCTAssertTrue(FeatureManagementTableUpdatePolicy.needsUpdate(
|
|
previousItems: items,
|
|
currentItems: items,
|
|
previousIsReorderEnabled: true,
|
|
currentIsReorderEnabled: true,
|
|
previousContentWidth: 480,
|
|
currentContentWidth: 482
|
|
))
|
|
}
|
|
|
|
private func makeItem(
|
|
id: String,
|
|
isVisible: Bool,
|
|
isActive: Bool
|
|
) -> PluginFeatureManagementItem {
|
|
PluginFeatureManagementItem(
|
|
id: id,
|
|
title: "活动统计",
|
|
description: "统计输入与活动",
|
|
iconName: "chart.bar.xaxis",
|
|
iconTint: Color(nsColor: .systemGreen),
|
|
isVisible: isVisible,
|
|
isActive: isActive,
|
|
presentation: .featureAndComponentPanel,
|
|
category: nil,
|
|
releaseChannel: nil
|
|
)
|
|
}
|
|
}
|