go-mstdn/ent/role_unmarshaljson_test.go

116 lines
2.4 KiB
Go

package ent_test
import (
"testing"
"encoding/json"
"github.com/reiver/go-jsonint"
"github.com/reiver/go-opt"
"github.com/reiver/go-mstdn/ent"
)
func TestRole_MarshalJSON(t *testing.T) {
tests := []struct{
JSON string
Expected ent.Role
}{
{
JSON:
`{`+
`"id":12345,`+
`"name":"Master",`+
`"color":"#1a2b3c",`+
`"permissions":256,`+
`"highlighted":true`+
`}`,
Expected: ent.Role{
ID: opt.Something(jsonint.Int64(12345)),
Name: opt.Something("Master"),
Color: opt.Something("#1a2b3c"),
Permissions: opt.Something(jsonint.Int64(256)),
Highlighted: opt.Something(true),
},
},
{
JSON:
`{`+
`"id":71727374,`+
`"name":"Student",`+
`"color":"#76cd54",`+
`"permissions":664,`+
`"highlighted":false`+
`}`,
Expected: ent.Role{
ID: opt.Something(jsonint.Int64(71727374)),
Name: opt.Something("Student"),
Color: opt.Something("#76cd54"),
Permissions: opt.Something(jsonint.Int64(664)),
Highlighted: opt.Something(false),
},
},
{
JSON:
`{`+
`"id":87,`+
`"name":"QA Specialist",`+
`"color":"",`+
`"permissions":218,`+
`"highlighted":true`+
`}`,
Expected: ent.Role{
ID: opt.Something(jsonint.Int64(87)),
Name: opt.Something("QA Specialist"),
Permissions: opt.Something(jsonint.Int64(218)),
Highlighted: opt.Something(true),
},
},
{
JSON:
`{`+
`"id":87,`+
`"name":"QA Specialist",`+
`"permissions":218,`+
`"highlighted":true`+
`}`,
Expected: ent.Role{
ID: opt.Something(jsonint.Int64(87)),
Name: opt.Something("QA Specialist"),
Permissions: opt.Something(jsonint.Int64(218)),
Highlighted: opt.Something(true),
},
},
}
for testNumber, test := range tests {
var actual ent.Role
err := json.Unmarshal([]byte(test.JSON), &actual)
if nil != err {
t.Errorf("For test #%d, did not expect an error but actually got one.", testNumber)
t.Logf("ERROR: (%T) %s", err, err)
t.Logf("JSON:\n%s", test.JSON)
t.Logf("EXPECTED:\n%#v", test.Expected)
continue
}
{
var expected ent.Role = test.Expected
if expected != actual {
t.Errorf("For test #%d, the actual value is not what was expected.", testNumber)
t.Logf("EXPECTED:\n%#v", expected)
t.Logf("ACTUAL:\n%#v", actual)
t.Logf("JSON:\n%s", test.JSON)
continue
}
}
}
}