Files
Assistant/tests/prospective_memory/satisfaction_test.go
2026-08-16 16:19:23 +03:00

33 lines
1.5 KiB
Go

package prospective_memory_test
import (
"errors"
"testing"
"git.cin.su/m/Assistant/contracts/continuity"
continuitydomain "git.cin.su/m/Assistant/modules/continuity/domain"
)
func TestDeliveredItemCanBeSatisfiedExactlyAtExpectedRevision(t *testing.T) {
item := continuity.ProspectiveItem{ID: "prospective-1", State: continuity.ProspectiveDelivered, Revision: 4}
store := continuitydomain.Recover([]continuity.ProspectiveItem{item})
updated, err := store.SatisfyDelivered(item.ID, item.Revision, "artifact://evidence/1")
if err != nil || updated.State != continuity.ProspectiveSatisfied || updated.Revision != 5 {
t.Fatalf("satisfaction = %#v, %v", updated, err)
}
if _, err := store.SatisfyDelivered(item.ID, item.Revision, "artifact://evidence/1"); !errors.Is(err, continuitydomain.ErrProspectiveRevision) {
t.Fatalf("stale satisfaction error = %v", err)
}
}
func TestSatisfactionRejectsMissingEvidenceAndWrongState(t *testing.T) {
store := continuitydomain.Recover([]continuity.ProspectiveItem{{ID: "prospective-1", State: continuity.ProspectiveArmed, Revision: 1}})
if _, err := store.SatisfyDelivered("prospective-1", 1, "evidence"); !errors.Is(err, continuitydomain.ErrInvalidTransition) {
t.Fatalf("wrong state error = %v", err)
}
store = continuitydomain.Recover([]continuity.ProspectiveItem{{ID: "prospective-2", State: continuity.ProspectiveDelivered, Revision: 1}})
if _, err := store.SatisfyDelivered("prospective-2", 1, " "); !errors.Is(err, continuitydomain.ErrInvalidTransition) {
t.Fatalf("missing evidence error = %v", err)
}
}