package oltp
import (
"path/filepath"
"testing"
)
func TestGateBypassRoundTrip(t *testing.T) {
db, err := Open(filepath.Join(t.TempDir(), "o.db"))
if err != nil {
t.Fatal(err)
}
defer db.Close()
if err := db.RecordForgeAccept("alpha", "m1"); err != nil {
t.Fatal(err)
}
if ok, _ := db.ForgeAccepted("alpha", "m1"); !ok {
t.Fatal("a forge accept was forgotten")
}
if ok, _ := db.ForgeAccepted("alpha", "rogue"); ok {
t.Fatal("a rogue check-in read as forge-accepted")
}
if _, ok := db.GateWatch("alpha", "trunk"); ok {
t.Fatal("a watch existed before anyone set it")
}
if err := db.SetGateWatch("alpha", "trunk", "t1"); err != nil {
t.Fatal(err)
}
if tip, ok := db.GateWatch("alpha", "trunk"); !ok || tip != "t1" {
t.Fatalf("watch = %q, %v", tip, ok)
}
if err := db.AddGateBypass("alpha", "trunk", "rogue"); err != nil {
t.Fatal(err)
}
if err := db.AddGateBypass("alpha", "trunk", "rogue"); err != nil {
t.Fatal(err) // twice is one finding
}
got, err := db.GateBypasses("alpha", 10)
if err != nil || len(got) != 1 || got[0].Checkin != "rogue" {
t.Fatalf("bypasses = %v, %v", got, err)
}
}