33 lines
882 B
Go
33 lines
882 B
Go
package tools
|
|
|
|
import (
|
|
"net/http"
|
|
"testing"
|
|
)
|
|
|
|
type fakeTool struct{ key, name string }
|
|
|
|
func (f fakeTool) Definition() Definition { return Definition{Key: f.key, Name: f.name} }
|
|
func (fakeTool) StudentHandler() http.Handler { return http.NotFoundHandler() }
|
|
func TestRegistry(t *testing.T) {
|
|
r := NewRegistry()
|
|
if err := r.Register(fakeTool{}); err == nil {
|
|
t.Fatal("empty key accepted")
|
|
}
|
|
if err := r.Register(fakeTool{key: "b", name: "Beta"}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := r.Register(fakeTool{key: "a", name: "Alpha"}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := r.Register(fakeTool{key: "a", name: "Again"}); err == nil {
|
|
t.Fatal("duplicate accepted")
|
|
}
|
|
if got := r.List(); len(got) != 2 || got[0].Definition().Key != "a" {
|
|
t.Fatalf("unstable list: %#v", got)
|
|
}
|
|
if _, err := r.Get("missing"); err != ErrNotFound {
|
|
t.Fatalf("got %v", err)
|
|
}
|
|
}
|