Persist selections and compile song output
This commit is contained in:
@@ -48,6 +48,35 @@ final class LocalSongProjectStoreTests: XCTestCase {
|
||||
XCTAssertEqual(updatedProject, project)
|
||||
}
|
||||
|
||||
func testPersistsSelectedInstrumentsOnSongProject() async throws {
|
||||
let store = LocalSongProjectStore(directoryURL: temporaryDirectoryURL)
|
||||
var project = SongProject(
|
||||
id: "instrument-selection-project",
|
||||
title: "Instrument Selection",
|
||||
idea: "Persist selected catalog instruments"
|
||||
)
|
||||
|
||||
project.setInstrumentSelected(id: "oud", isSelected: true, variant: "Oud")
|
||||
project.setInstrumentSelected(id: "violin", isSelected: true, variant: "Violin")
|
||||
project.setInstrumentSelected(id: "oud", isSelected: false)
|
||||
|
||||
try await store.create(project)
|
||||
|
||||
var openedProject = try await store.open(id: project.id)
|
||||
XCTAssertFalse(openedProject.isInstrumentSelected(id: "oud"))
|
||||
XCTAssertTrue(openedProject.isInstrumentSelected(id: "violin"))
|
||||
XCTAssertEqual(openedProject.instrumentTrack(for: "oud")?.variant, "Oud")
|
||||
XCTAssertEqual(openedProject.selectedInstrumentIDs, ["violin"])
|
||||
|
||||
openedProject.setInstrumentSelected(id: "oud", isSelected: true, variant: "Oud")
|
||||
try await store.save(openedProject)
|
||||
|
||||
let savedProject = try await store.open(id: project.id)
|
||||
XCTAssertTrue(savedProject.isInstrumentSelected(id: "oud"))
|
||||
XCTAssertTrue(savedProject.isInstrumentSelected(id: "violin"))
|
||||
XCTAssertEqual(savedProject.selectedInstrumentIDs, ["oud", "violin"])
|
||||
}
|
||||
|
||||
func testLoadsProjectListSortedByMostRecentUpdate() async throws {
|
||||
let store = LocalSongProjectStore(directoryURL: temporaryDirectoryURL)
|
||||
let older = SongProject(
|
||||
|
||||
Reference in New Issue
Block a user