stephen mcquay
2dbe1ca006
We should be able to parse out the Path from the URL and use that as the namespace.
86 lines
1.5 KiB
Go
86 lines
1.5 KiB
Go
package pm
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"errors"
|
|
"testing"
|
|
)
|
|
|
|
func TestValid(t *testing.T) {
|
|
tests := []struct {
|
|
label string
|
|
m Meta
|
|
ok bool
|
|
err error
|
|
}{
|
|
{
|
|
label: "valid",
|
|
m: Meta{
|
|
Name: "heat",
|
|
Version: "1.1.0",
|
|
Description: "some description",
|
|
},
|
|
ok: true,
|
|
},
|
|
{
|
|
label: "missing name",
|
|
m: Meta{
|
|
Version: "1.1.0",
|
|
Description: "some description",
|
|
},
|
|
err: errors.New("name"),
|
|
},
|
|
{
|
|
label: "missing version",
|
|
m: Meta{
|
|
Name: "heat",
|
|
Description: "some description",
|
|
},
|
|
err: errors.New("version"),
|
|
},
|
|
{
|
|
label: "missing description",
|
|
m: Meta{
|
|
Name: "heat",
|
|
Version: "1.1.0",
|
|
},
|
|
err: errors.New("description"),
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.label, func(t *testing.T) {
|
|
ok, err := test.m.Valid()
|
|
if got, want := ok, test.ok; got != want {
|
|
t.Fatalf("validity: got %v, want %v", got, want)
|
|
}
|
|
|
|
if got, want := err, test.err; (err == nil) != (test.err == nil) {
|
|
t.Fatalf("error: got %v, want %v", got, want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestJsonRoundTrip(t *testing.T) {
|
|
b := Meta{
|
|
Name: "heat",
|
|
Version: "1.1.0",
|
|
Description: "make heat using cpus",
|
|
}
|
|
|
|
buf := &bytes.Buffer{}
|
|
if err := json.NewEncoder(buf).Encode(&b); err != nil {
|
|
t.Fatalf("encode: %v", err)
|
|
}
|
|
|
|
a := Meta{}
|
|
if err := json.NewDecoder(buf).Decode(&a); err != nil {
|
|
t.Fatalf("decode: %v", err)
|
|
}
|
|
if b != a {
|
|
t.Fatalf("a != b: %v != %v", a, b)
|
|
}
|
|
}
|