39 lines
1.3 KiB
Swift
39 lines
1.3 KiB
Swift
import MusicAssistantCore
|
|
import XCTest
|
|
|
|
final class InstrumentCatalogItemTests: XCTestCase {
|
|
func testCatalogItemStoresStructuredInstrumentMetadata() {
|
|
let item = InstrumentCatalogItem(
|
|
id: "oud",
|
|
name: "Oud",
|
|
familyCategory: "Plucked strings",
|
|
regionOrigin: "Middle East",
|
|
aliases: ["Arabic lute"],
|
|
searchTerms: ["ud", "عود"]
|
|
)
|
|
|
|
XCTAssertEqual(item.id, "oud")
|
|
XCTAssertEqual(item.name, "Oud")
|
|
XCTAssertEqual(item.familyCategory, "Plucked strings")
|
|
XCTAssertEqual(item.regionOrigin, "Middle East")
|
|
XCTAssertEqual(item.aliases, ["Arabic lute"])
|
|
XCTAssertEqual(item.searchTerms, ["ud", "عود"])
|
|
}
|
|
|
|
func testCatalogItemSupportsOptionalMetadataAndRoundTripsThroughJSON() throws {
|
|
let item = InstrumentCatalogItem(
|
|
id: "synthesizer",
|
|
name: "Synthesizer",
|
|
familyCategory: "Electronic"
|
|
)
|
|
|
|
let data = try JSONEncoder().encode(item)
|
|
let decodedItem = try JSONDecoder().decode(InstrumentCatalogItem.self, from: data)
|
|
|
|
XCTAssertNil(item.regionOrigin)
|
|
XCTAssertEqual(item.aliases, [])
|
|
XCTAssertEqual(item.searchTerms, [])
|
|
XCTAssertEqual(decodedItem, item)
|
|
}
|
|
}
|