Enforce user locks for AI updates
This commit is contained in:
@@ -188,6 +188,29 @@ final class AutoSongProjectDecisionsDirectorTests: XCTestCase {
|
||||
XCTAssertEqual(result.project.productionDirections, project.productionDirections)
|
||||
XCTAssertEqual(result.changedScopes, [SongProjectUpdateScope.structure])
|
||||
}
|
||||
|
||||
func testAutomaticDecisionsDoNotCallAIForLockedAutomaticScopes() async throws {
|
||||
let project = SongProject(
|
||||
title: "Locked Auto Project",
|
||||
idea: "Do not update the tempo",
|
||||
bpm: ManualAutoValue(mode: .auto),
|
||||
key: ManualAutoValue(mode: .manual, value: "C"),
|
||||
scale: ManualAutoValue(mode: .manual, value: "minor"),
|
||||
maqam: ManualAutoValue(mode: .manual, value: "Rast"),
|
||||
structureMode: .manual,
|
||||
productionMode: .manual,
|
||||
userLocks: SongProjectUserLocks(scopes: [.musicalParameters])
|
||||
)
|
||||
let aiService = RecordingAutoDecisionsAIService(result: SongProjectUpdateResult(project: project))
|
||||
let director = AutoSongProjectDecisionsDirector(aiService: aiService)
|
||||
|
||||
let result = try await director.applyAutomaticDecisions(to: project)
|
||||
let requestCount = await aiService.recordedRequests.count
|
||||
|
||||
XCTAssertEqual(requestCount, 0)
|
||||
XCTAssertEqual(result.project, project)
|
||||
XCTAssertTrue(result.changedScopes.isEmpty)
|
||||
}
|
||||
}
|
||||
|
||||
private actor RecordingAutoDecisionsAIService: AIService {
|
||||
|
||||
Reference in New Issue
Block a user