33 lines
1.5 KiB
Go
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)
|
|
}
|
|
}
|