github.com/qri-io/qri@v0.10.1-0.20220104210721-c771715036cb/profile/type_test.go (about) 1 package profile 2 3 import ( 4 "encoding/json" 5 "testing" 6 ) 7 8 func TestTypeMarshalJSON(t *testing.T) { 9 cases := []struct { 10 dt Type 11 expect string 12 err error 13 }{ 14 {TypePeer, "\"peer\"", nil}, 15 {TypeOrganization, "\"organization\"", nil}, 16 } 17 18 for i, c := range cases { 19 got, err := json.Marshal(c.dt) 20 if err != c.err { 21 t.Errorf("case %d error mismatch. expected: %s, got: %s", i, c.err, err) 22 } 23 if string(got) != c.expect { 24 t.Errorf("case %d byte mismatch. expected: %s, got: %s", i, c.expect, string(got)) 25 } 26 } 27 } 28 29 func TestTypeUnmarshalJSON(t *testing.T) { 30 cases := []struct { 31 data []byte 32 dt Type 33 err error 34 }{ 35 {[]byte("[\"peer\"]"), TypePeer, nil}, 36 {[]byte("[\"user\"]"), TypePeer, nil}, 37 {[]byte("[\"organization\"]"), TypeOrganization, nil}, 38 } 39 40 for i, c := range cases { 41 var dt []Type 42 err := json.Unmarshal(c.data, &dt) 43 if err != c.err { 44 t.Errorf("case %d error mismatch. expected: %s, got: %s", i, c.err, err) 45 continue 46 } 47 d := dt[0] 48 if c.dt != d { 49 t.Errorf("case %d byte mismatch. expected: %s, got: %s", i, c.dt, d) 50 } 51 } 52 }