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  }