Files
SwiftLint/Tests/BuiltInRulesTests/ExplicitTypeInterfaceConfigurationTests.swift

61 lines
2.3 KiB
Swift

@testable import SwiftLintBuiltInRules
@testable import SwiftLintCore
import TestHelpers
import XCTest
final class ExplicitTypeInterfaceConfigurationTests: SwiftLintTestCase {
func testDefaultConfiguration() {
let config = ExplicitTypeInterfaceConfiguration()
XCTAssertEqual(config.severityConfiguration.severity, .warning)
XCTAssertEqual(config.allowedKinds, Set([.instance, .class, .static, .local]))
}
func testApplyingCustomConfiguration() throws {
var config = ExplicitTypeInterfaceConfiguration()
try config.apply(
configuration: [
"severity": "error",
"excluded": ["local"],
"allow_redundancy": true,
] as [String: any Sendable]
)
XCTAssertEqual(config.severityConfiguration.severity, .error)
XCTAssertEqual(config.allowedKinds, Set([.instance, .class, .static]))
XCTAssertTrue(config.allowRedundancy)
}
func testInvalidKeyInCustomConfiguration() async throws {
let console = try await Issue.captureConsole {
var config = ExplicitTypeInterfaceConfiguration()
try config.apply(configuration: ["invalidKey": "error"])
}
XCTAssertEqual(
console,
"warning: Configuration for 'explicit_type_interface' rule contains the invalid key(s) 'invalidKey'."
)
}
func testInvalidTypeOfCustomConfiguration() {
var config = ExplicitTypeInterfaceConfiguration()
checkError(Issue.invalidConfiguration(ruleID: ExplicitTypeInterfaceRule.identifier)) {
try config.apply(configuration: "invalidKey")
}
}
func testInvalidTypeOfValueInCustomConfiguration() {
var config = ExplicitTypeInterfaceConfiguration()
checkError(Issue.invalidConfiguration(ruleID: ExplicitTypeInterfaceRule.identifier)) {
try config.apply(configuration: ["severity": "foo"])
}
}
func testConsoleDescription() throws {
var config = ExplicitTypeInterfaceConfiguration()
try config.apply(configuration: ["excluded": ["class", "instance"]])
XCTAssertEqual(
RuleConfigurationDescription.from(configuration: config).oneLiner(),
"severity: warning; excluded: [class, instance]; allow_redundancy: false"
)
}
}