package oltp
import (
"testing"
)
// One sequence per repository, in the order given; a numbered ticket
// keeps its number; a number moves to the artifact a local ticket was
// promoted into.
func TestTicketNumbersAreOneSequencePerRepository(t *testing.T) {
d := openTest(t)
if err := d.TicketNumbersAssign("q", []string{"aa", "bb"}); err != nil {
t.Fatal(err)
}
if err := d.TicketNumbersAssign("q", []string{"bb", "cc"}); err != nil {
t.Fatal(err)
}
if err := d.TicketNumbersAssign("other", []string{"zz"}); err != nil {
t.Fatal(err)
}
got, _ := d.TicketNumbers("q")
if got["aa"] != 1 || got["bb"] != 2 || got["cc"] != 3 || len(got) != 3 {
t.Fatalf("FAIL: %v", got)
}
if o, _ := d.TicketNumbers("other"); o["zz"] != 1 {
t.Fatalf("FAIL: another repository shares the sequence: %v", o)
}
if err := d.TicketNumberRekey("q", "cc", "cc-fossil"); err != nil {
t.Fatal(err)
}
if id, ok, _ := d.TicketNumbered("q", 3); !ok || id != "cc-fossil" {
t.Fatalf("FAIL: #3 names %q after the re-key", id)
}
t.Log("ok: 1 2 3 in order, bb kept its number, another repository starts at 1, #3 follows the promotion")
}