36 lines
1.2 KiB
Go
36 lines
1.2 KiB
Go
package proposal_generation
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/outcomes"
|
|
"gitea.maximumdirect.net/eric/audita/v3/internal/framework/structuredoutput"
|
|
)
|
|
|
|
func TestDecodeRepairResponse(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
name, content string
|
|
valid bool
|
|
}{
|
|
{"revision with deletion", `{"proposal_ref":2,"action":"revise","correction":{"id":1,"original_text":" ","corrected_text":"","confidence":0.5}}`, true},
|
|
{"withdrawal", `{"proposal_ref":2,"action":"withdraw","correction":null}`, true},
|
|
{"wrong reference", `{"proposal_ref":1,"action":"withdraw","correction":null}`, false},
|
|
{"missing revision", `{"proposal_ref":2,"action":"revise","correction":null}`, false},
|
|
{"withdrawal with revision", `{"proposal_ref":2,"action":"withdraw","correction":{"id":1}}`, false},
|
|
} {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
_, err := DecodeRepairResponse([]byte(tc.content), 2)
|
|
if tc.valid && err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !tc.valid {
|
|
var failure *structuredoutput.Failure
|
|
if !errors.As(err, &failure) || failure.Reason != outcomes.ReasonInvalidOutput || failure.Class != structuredoutput.FailureRecoverable {
|
|
t.Fatalf("failure = %v", err)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|