better presentation fot the App Store
This commit is contained in:
104
CableTests/ComponentLibraryItemTests.swift
Normal file
104
CableTests/ComponentLibraryItemTests.swift
Normal file
@@ -0,0 +1,104 @@
|
||||
import Testing
|
||||
@testable import Cable
|
||||
|
||||
struct ComponentLibraryItemTests {
|
||||
|
||||
@Test func localizedNameUsesExactLocaleMatch() async throws {
|
||||
let item = ComponentLibraryItem(
|
||||
id: "component-1",
|
||||
name: "Anchor Winch",
|
||||
translations: ["de_DE": "Ankerwinde"],
|
||||
voltageIn: nil,
|
||||
voltageOut: nil,
|
||||
watt: nil,
|
||||
iconURL: nil,
|
||||
affiliateLinks: []
|
||||
)
|
||||
|
||||
let german = Locale(identifier: "de_DE")
|
||||
#expect(item.localizedName(for: german) == "Ankerwinde")
|
||||
}
|
||||
|
||||
@Test func localizedNameFallsBackToBaseName() async throws {
|
||||
let item = ComponentLibraryItem(
|
||||
id: "component-2",
|
||||
name: "Anchor Winch",
|
||||
translations: [:],
|
||||
voltageIn: nil,
|
||||
voltageOut: nil,
|
||||
watt: nil,
|
||||
iconURL: nil,
|
||||
affiliateLinks: []
|
||||
)
|
||||
|
||||
let french = Locale(identifier: "fr_FR")
|
||||
#expect(item.localizedName(for: french) == "Anchor Winch")
|
||||
}
|
||||
|
||||
@Test func localizedNameDoesNotFallbackToSecondaryLanguages() async throws {
|
||||
let item = ComponentLibraryItem(
|
||||
id: "component-5",
|
||||
name: "Anchor Winch",
|
||||
translations: [
|
||||
"es_ES": "Molinete",
|
||||
"de_DE": "Ankerwinde"
|
||||
],
|
||||
voltageIn: nil,
|
||||
voltageOut: nil,
|
||||
watt: nil,
|
||||
iconURL: nil,
|
||||
affiliateLinks: []
|
||||
)
|
||||
|
||||
let languages = ["fr-FR", "de-DE", "es-ES"]
|
||||
#expect(item.localizedName(usingPreferredLanguages: languages) == nil)
|
||||
}
|
||||
|
||||
@Test func localizedNameUsesLanguageOnlyMatch() async throws {
|
||||
let item = ComponentLibraryItem(
|
||||
id: "component-3",
|
||||
name: "Anchor Winch",
|
||||
translations: ["es": "Molinete"],
|
||||
voltageIn: nil,
|
||||
voltageOut: nil,
|
||||
watt: nil,
|
||||
iconURL: nil,
|
||||
affiliateLinks: []
|
||||
)
|
||||
|
||||
let spanishMexico = Locale(identifier: "es_MX")
|
||||
#expect(item.localizedName(for: spanishMexico) == "Molinete")
|
||||
}
|
||||
|
||||
@Test func localizedNameFallsBackToMatchingLanguageFromRegionalEntry() async throws {
|
||||
let item = ComponentLibraryItem(
|
||||
id: "component-6",
|
||||
name: "Anchor Winch",
|
||||
translations: ["de_DE": "Ankerwinde"],
|
||||
voltageIn: nil,
|
||||
voltageOut: nil,
|
||||
watt: nil,
|
||||
iconURL: nil,
|
||||
affiliateLinks: []
|
||||
)
|
||||
|
||||
let germanSwitzerland = Locale(identifier: "de_CH")
|
||||
#expect(item.localizedName(for: germanSwitzerland) == "Ankerwinde")
|
||||
}
|
||||
|
||||
@Test func localizedNameHandlesHyphenatedKeys() async throws {
|
||||
let item = ComponentLibraryItem(
|
||||
id: "component-4",
|
||||
name: "Anchor Winch",
|
||||
translations: ["fr-FR": "Guindeau"],
|
||||
voltageIn: nil,
|
||||
voltageOut: nil,
|
||||
watt: nil,
|
||||
iconURL: nil,
|
||||
affiliateLinks: []
|
||||
)
|
||||
|
||||
let french = Locale(identifier: "fr_FR")
|
||||
#expect(item.localizedName(for: french) == "Guindeau")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user