handle omitted is true bools

This commit is contained in:
Paul Tyng
2022-10-19 20:31:28 -04:00
parent 84afde7dce
commit 887fae8168
4 changed files with 39 additions and 19 deletions

View File

@@ -10,69 +10,75 @@ import (
func TestNetworkUnmarshalJSON(t *testing.T) {
for n, c := range map[string]struct {
expected unifi.Network
expected func(n *unifi.Network)
json string
}{
"int vlan": {
expected: unifi.Network{VLAN: 1},
expected: func(n *unifi.Network) { n.VLAN = 1 },
json: `{ "vlan": 1 }`,
},
"string vlan": {
expected: unifi.Network{VLAN: 1},
expected: func(n *unifi.Network) { n.VLAN = 1 },
json: `{ "vlan": "1" }`,
},
"empty string vlan": {
expected: unifi.Network{VLAN: 0},
expected: func(n *unifi.Network) { n.VLAN = 0 },
json: `{ "vlan": "" }`,
},
"int dhcpd_leasetime": {
expected: unifi.Network{DHCPDLeaseTime: 1},
expected: func(n *unifi.Network) { n.DHCPDLeaseTime = 1 },
json: `{ "dhcpd_leasetime": 1 }`,
},
"string dhcpd_leasetime": {
expected: unifi.Network{DHCPDLeaseTime: 1},
expected: func(n *unifi.Network) { n.DHCPDLeaseTime = 1 },
json: `{ "dhcpd_leasetime": "1" }`,
},
"empty string dhcpd_leasetime": {
expected: unifi.Network{DHCPDLeaseTime: 0},
expected: func(n *unifi.Network) { n.DHCPDLeaseTime = 0 },
json: `{ "dhcpd_leasetime": "" }`,
},
"int wan_egress_qos": {
expected: unifi.Network{WANEgressQOS: 1},
expected: func(n *unifi.Network) { n.WANEgressQOS = 1 },
json: `{ "wan_egress_qos": 1 }`,
},
"string wan_egress_qos": {
expected: unifi.Network{WANEgressQOS: 1},
expected: func(n *unifi.Network) { n.WANEgressQOS = 1 },
json: `{ "wan_egress_qos": "1" }`,
},
"empty string wan_egress_qos": {
expected: unifi.Network{WANEgressQOS: 0},
expected: func(n *unifi.Network) { n.WANEgressQOS = 0 },
json: `{ "wan_egress_qos": "" }`,
},
"int wan_vlan": {
expected: unifi.Network{WANVLAN: 1},
expected: func(n *unifi.Network) { n.WANVLAN = 1 },
json: `{ "wan_vlan": 1 }`,
},
"string wan_vlan": {
expected: unifi.Network{WANVLAN: 1},
expected: func(n *unifi.Network) { n.WANVLAN = 1 },
json: `{ "wan_vlan": "1" }`,
},
"empty wan_vlan vlan": {
expected: unifi.Network{WANVLAN: 0},
expected: func(n *unifi.Network) { n.WANVLAN = 0 },
json: `{ "wan_vlan": "" }`,
},
} {
t.Run(n, func(t *testing.T) {
// set some non-zero value defaults
expected := unifi.Network{
InternetAccessEnabled: true,
IntraNetworkAccessEnabled: true,
}
c.expected(&expected)
var actual unifi.Network
err := json.Unmarshal(([]byte)(c.json), &actual)
if err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(c.expected, actual) {
t.Fatalf("not equal:\nexpected: %#v\nactual: %#v", c.expected, actual)
if !reflect.DeepEqual(expected, actual) {
t.Fatalf("not equal:\nexpected: %#v\nactual: %#v", expected, actual)
}
})
}