mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-09-18 08:54:55 +08:00
fix(glossary): 补齐术语删除和审核门禁
This commit is contained in:
@@ -463,6 +463,12 @@ func TestTranslationTaskUpdateSendsWorkerParams(t *testing.T) {
|
||||
UnitID: "direct:a#unit:0",
|
||||
SourceText: "source",
|
||||
TranslatedText: "译文",
|
||||
GlossaryOverride: &GlossaryOverride{
|
||||
Reviewer: "reviewer",
|
||||
Reason: "approved deviation",
|
||||
Provenance: "manual-review",
|
||||
ConfirmedUnixSeconds: 100,
|
||||
},
|
||||
}},
|
||||
})
|
||||
if err != nil {
|
||||
@@ -928,6 +934,31 @@ func TestGlossaryTypedContract(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}}
|
||||
case "translation.glossary.update":
|
||||
var params GlossaryTermMutationParams
|
||||
if err := json.Unmarshal(req.Params, ¶ms); err != nil {
|
||||
t.Fatalf("decode update params: %v", err)
|
||||
}
|
||||
if params.TermID != "term-sensei" || params.Reviewer != "reviewer" || params.ReviewStatus != "draft" {
|
||||
t.Fatalf("update params=%#v", params)
|
||||
}
|
||||
return testResponse{Result: testEnvelope{
|
||||
OK: true, Status: "ok", RequestID: "req-glossary-update",
|
||||
Data: map[string]any{
|
||||
"available": true,
|
||||
"path": "/var/lib/bat/glossary.sqlite",
|
||||
"term": map[string]any{
|
||||
"term_id": "term-sensei",
|
||||
"source_term": "Sensei",
|
||||
"recommended_translation": "老师",
|
||||
"review_status": "draft",
|
||||
"source": map[string]any{
|
||||
"source_kind": "manual",
|
||||
"observed_unix_seconds": 101,
|
||||
},
|
||||
},
|
||||
},
|
||||
}}
|
||||
case "translation.glossary.approve":
|
||||
var params GlossaryReviewParams
|
||||
if err := json.Unmarshal(req.Params, ¶ms); err != nil {
|
||||
@@ -944,6 +975,39 @@ func TestGlossaryTypedContract(t *testing.T) {
|
||||
"term": map[string]any{"term_id": "term-sensei", "review_status": "approved"},
|
||||
},
|
||||
}}
|
||||
case "translation.glossary.deprecate":
|
||||
var params GlossaryReviewParams
|
||||
if err := json.Unmarshal(req.Params, ¶ms); err != nil {
|
||||
t.Fatalf("decode deprecate params: %v", err)
|
||||
}
|
||||
if params.TermID != "term-sensei" || params.Reviewer != "reviewer" || params.Reason != "retired" {
|
||||
t.Fatalf("deprecate params=%#v", params)
|
||||
}
|
||||
return testResponse{Result: testEnvelope{
|
||||
OK: true, Status: "ok", RequestID: "req-glossary-deprecate",
|
||||
Data: map[string]any{
|
||||
"available": true,
|
||||
"path": "/var/lib/bat/glossary.sqlite",
|
||||
"term": map[string]any{"term_id": "term-sensei", "review_status": "deprecated"},
|
||||
},
|
||||
}}
|
||||
case "translation.glossary.delete":
|
||||
var params GlossaryDeleteParams
|
||||
if err := json.Unmarshal(req.Params, ¶ms); err != nil {
|
||||
t.Fatalf("decode delete params: %v", err)
|
||||
}
|
||||
if params.TermID != "term-sensei" || params.Reviewer != "reviewer" || params.Reason != "duplicate" {
|
||||
t.Fatalf("delete params=%#v", params)
|
||||
}
|
||||
return testResponse{Result: testEnvelope{
|
||||
OK: true, Status: "ok", RequestID: "req-glossary-delete",
|
||||
Data: map[string]any{
|
||||
"available": true,
|
||||
"path": "/var/lib/bat/glossary.sqlite",
|
||||
"deleted": true,
|
||||
"term": map[string]any{"term_id": "term-sensei"},
|
||||
},
|
||||
}}
|
||||
default:
|
||||
t.Fatalf("unexpected method %q", req.Method)
|
||||
return testResponse{}
|
||||
@@ -986,6 +1050,21 @@ func TestGlossaryTypedContract(t *testing.T) {
|
||||
if err != nil || add.Term.TermID != "term-sensei" {
|
||||
t.Fatalf("add=%#v err=%v", add, err)
|
||||
}
|
||||
updated, err := client.GlossaryUpdate(context.Background(), GlossaryTermMutationParams{
|
||||
GlossaryPath: "/var/lib/bat/glossary.sqlite",
|
||||
TermID: "term-sensei",
|
||||
SourceTerm: "Sensei",
|
||||
RecommendedTranslation: "老师",
|
||||
ReviewStatus: "draft",
|
||||
Reviewer: "reviewer",
|
||||
Source: GlossarySourceRecord{
|
||||
SourceKind: "manual",
|
||||
ObservedUnixSeconds: 101,
|
||||
},
|
||||
})
|
||||
if err != nil || updated.Term.ReviewStatus != GlossaryStatusDraft {
|
||||
t.Fatalf("update=%#v err=%v", updated, err)
|
||||
}
|
||||
approved, err := client.GlossaryApprove(context.Background(), GlossaryReviewParams{
|
||||
GlossaryPath: "/var/lib/bat/glossary.sqlite",
|
||||
TermID: "term-sensei",
|
||||
@@ -994,6 +1073,24 @@ func TestGlossaryTypedContract(t *testing.T) {
|
||||
if err != nil || approved.Term.ReviewStatus != GlossaryStatusApproved {
|
||||
t.Fatalf("approve=%#v err=%v", approved, err)
|
||||
}
|
||||
deprecated, err := client.GlossaryDeprecate(context.Background(), GlossaryReviewParams{
|
||||
GlossaryPath: "/var/lib/bat/glossary.sqlite",
|
||||
TermID: "term-sensei",
|
||||
Reviewer: "reviewer",
|
||||
Reason: "retired",
|
||||
})
|
||||
if err != nil || deprecated.Term.ReviewStatus != GlossaryStatusDeprecated {
|
||||
t.Fatalf("deprecate=%#v err=%v", deprecated, err)
|
||||
}
|
||||
deleted, err := client.GlossaryDelete(context.Background(), GlossaryDeleteParams{
|
||||
GlossaryPath: "/var/lib/bat/glossary.sqlite",
|
||||
TermID: "term-sensei",
|
||||
Reviewer: "reviewer",
|
||||
Reason: "duplicate",
|
||||
})
|
||||
if err != nil || !deleted.Available || !deleted.Deleted {
|
||||
t.Fatalf("delete=%#v err=%v", deleted, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplicationErrorReturnsAPIError(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user