fix: align AI retouch template rules

This commit is contained in:
2026-08-19 10:06:50 +08:00
parent 1757ba5e36
commit 8cd6c0aac8
8 changed files with 117 additions and 46 deletions
@@ -102,7 +102,7 @@ final class TravelAlbumAIRetouchTemplateViewModelTests: XCTestCase {
)
}
func testReretouchWorkflowShowsAndSubmitsOnlyRequiredCategories() async {
func testReretouchWorkflowAllowsAtmosphereOnlyFromOriginalTab() async {
let api = makeAPI()
let refined = TravelAlbumAIRetouchTemplateViewModel(
scenicId: 18,
@@ -133,9 +133,19 @@ final class TravelAlbumAIRetouchTemplateViewModelTests: XCTestCase {
)
await all.loadTemplates(api: api)
XCTAssertEqual(all.visibleCategories, [.refined, .atmosphere])
XCTAssertEqual(all.selectedRefinedTemplateId, 11)
XCTAssertNil(all.selectedRefinedTemplateId)
XCTAssertNil(all.selectedAtmosphereTemplateId)
XCTAssertTrue(all.isOptional(.refined))
XCTAssertTrue(all.isOptional(.atmosphere))
XCTAssertEqual(all.requiredQuota, 0)
XCTAssertFalse(all.canSubmit)
XCTAssertEqual(all.validationMessage, "请至少选择一个修图模板")
all.toggleTemplate(id: 11, category: .refined)
XCTAssertEqual(all.selectedRefinedTemplateId, 11)
all.toggleTemplate(id: 11, category: .refined)
XCTAssertNil(all.selectedRefinedTemplateId)
all.toggleTemplate(id: 21, category: .atmosphere)
XCTAssertEqual(all.requiredQuota, 1)
XCTAssertTrue(all.canSubmit)
await all.submit(api: api)
@@ -159,8 +169,8 @@ final class TravelAlbumAIRetouchTemplateViewModelTests: XCTestCase {
id: 9,
aiRetouchBatchId: 90,
type: .all,
refinedTemplateId: 11,
atmosphereTemplateId: nil
refinedTemplateId: nil,
atmosphereTemplateId: 21
),
])
}
@@ -183,7 +193,7 @@ final class TravelAlbumAIRetouchTemplateViewModelTests: XCTestCase {
XCTAssertTrue(api.aiReretouchRequests.isEmpty)
}
func testMissingOptionalAtmosphereDoesNotDisableAllReretouchWorkflow() async {
func testMissingOptionalAtmosphereStillAllowsSelectingRefinedInAllReretouchWorkflow() async {
let api = makeAPI()
api.aiRetouchTemplatesResponse = TravelAlbumAIRetouchTemplatesResponse(
refinedTemplates: [template(11, "清透")],
@@ -198,6 +208,8 @@ final class TravelAlbumAIRetouchTemplateViewModelTests: XCTestCase {
await viewModel.loadTemplates(api: api)
XCTAssertFalse(viewModel.canSubmit)
viewModel.toggleTemplate(id: 11, category: .refined)
XCTAssertTrue(viewModel.canSubmit)
XCTAssertNil(viewModel.validationMessage)
XCTAssertEqual(viewModel.requiredQuota, 1)
@@ -213,7 +225,7 @@ final class TravelAlbumAIRetouchTemplateViewModelTests: XCTestCase {
)
let reretouch = TravelAlbumAIRetouchTemplateViewModel(
scenicId: 18,
workflow: .reretouch(materialId: 7, batchId: 70, type: .all)
workflow: .reretouch(materialId: 7, batchId: 70, type: .refined)
)
await reretouch.loadTemplates(api: refinedAPI)
XCTAssertFalse(reretouch.canSubmit)