Files
swift-musicbrainz/Tests/MusicBrainzTests/QueryTests.swift
2026-03-21 17:25:07 +01:00

37 lines
1.5 KiB
Swift

import Foundation
import Testing
@testable import MusicBrainz
@Test func testArtistQueryBuilding() throws {
let action: MusicBrainzSearchAction<Artist> = .artist(name: "Michael Jackson", gender: .male, country: .us)
#expect(action.query.contains("artist:\"Michael Jackson\""))
#expect(action.query.contains("gender:\"male\""))
#expect(action.query.contains("country:\"US\""))
}
@Test func testReleaseQueryBuilding() throws {
let action: MusicBrainzSearchAction<Release> = .release(title: "Thriller", artist: "Michael Jackson", barcode: "07464381122")
#expect(action.query.contains("release:\"Thriller\""))
#expect(action.query.contains("artist:\"Michael Jackson\""))
#expect(action.query.contains("barcode:\"07464381122\""))
}
@Test func testRecordingQueryBuilding() throws {
let action: MusicBrainzSearchAction<Recording> = .recording(title: "Billie Jean", isrc: "USSM18200385", video: true)
#expect(action.query.contains("recording:\"Billie Jean\""))
#expect(action.query.contains("isrc:\"USSM18200385\""))
#expect(action.query.contains("video:\"true\""))
}
@Test func testRawQueryBuilding() throws {
let action: MusicBrainzSearchAction<Artist> = .artist(name: "Prince", raw: "type:person")
#expect(action.query.contains("artist:\"Prince\""))
#expect(action.query.contains("type:person"))
}
@Test func testQueryEscaping() throws {
let action: MusicBrainzSearchAction<Artist> = .artist(name: "Artist \"Quote\" Name")
#expect(action.query == "artist:\"Artist \\\"Quote\\\" Name\"")
}