Add instrument checkbox selection

This commit is contained in:
diyaa
2026-09-14 06:20:07 +02:00
parent 6c6aeae5bb
commit 04d4093a3c
5 changed files with 106 additions and 14 deletions
@@ -281,6 +281,40 @@ final class SongProjectModelTests: XCTestCase {
XCTAssertEqual(project.instrumentTrack(for: "oud")?.placements, [introPlacement])
}
func testCatalogSelectionCanBeToggledWithoutReplacingExistingArrangement() {
let oudPlacement = InstrumentPlacement(sectionId: "intro", direction: "Opening melody")
var project = SongProject(
id: "catalog-selection-project",
title: "Catalog Selection",
idea: "Select and deselect instruments",
instruments: [
InstrumentTrack(
instrumentId: "oud",
selected: false,
variant: "Arabic oud",
playingStyle: "tremolo",
role: "main hook",
autoArrangementEnabled: false,
placements: [oudPlacement]
)
]
)
project.setInstrumentSelected(id: "oud", isSelected: true, variant: "Oud")
XCTAssertTrue(project.isInstrumentSelected(id: "oud"))
XCTAssertEqual(project.instrumentTrack(for: "oud")?.variant, "Arabic oud")
XCTAssertEqual(project.instrumentTrack(for: "oud")?.role, "main hook")
XCTAssertEqual(project.instrumentTrack(for: "oud")?.placements, [oudPlacement])
project.setInstrumentSelected(id: "oud", isSelected: false)
project.setInstrumentSelected(id: "violin", isSelected: true, variant: "Violin")
XCTAssertFalse(project.isInstrumentSelected(id: "oud"))
XCTAssertTrue(project.isInstrumentSelected(id: "violin"))
XCTAssertEqual(project.instrumentTrack(for: "violin")?.variant, "Violin")
}
func testMultipleVocalistsCanBeAssignedToSections() {
var project = SongProject(
id: "project-6",