Fix failing test

This commit is contained in:
Joshua Spence
2021-06-24 13:10:15 +10:00
committed by Paul Tyng
parent 64a73cdd4b
commit 693795b5f0
2 changed files with 46 additions and 45 deletions

View File

@@ -109,7 +109,7 @@ type FieldInfo struct {
}
func NewResource(structName string, resourcePath string) *Resource {
baseType := NewFieldInfo(structName, resourcePath, "struct", "", false, false)
baseType := NewFieldInfo(structName, resourcePath, "struct", "", false, false, "")
resource := &Resource{
StructName: structName,
ResourcePath: resourcePath,
@@ -125,14 +125,14 @@ func NewResource(structName string, resourcePath string) *Resource {
//
// This hack is here for stability of the generatd code, but can be removed if desired.
baseType.Fields = map[string]*FieldInfo{
" ID": NewFieldInfo("ID", "_id", "string", "", true, false),
" SiteID": NewFieldInfo("SiteID", "site_id", "string", "", true, false),
" ID": NewFieldInfo("ID", "_id", "string", "", true, false, ""),
" SiteID": NewFieldInfo("SiteID", "site_id", "string", "", true, false, ""),
" _Spacer": nil,
" Hidden": NewFieldInfo("Hidden", "attr_hidden", "bool", "", true, false),
" HiddenID": NewFieldInfo("HiddenID", "attr_hidden_id", "string", "", true, false),
" NoDelete": NewFieldInfo("NoDelete", "attr_no_delete", "bool", "", true, false),
" NoEdit": NewFieldInfo("NoEdit", "attr_no_edit", "bool", "", true, false),
" Hidden": NewFieldInfo("Hidden", "attr_hidden", "bool", "", true, false, ""),
" HiddenID": NewFieldInfo("HiddenID", "attr_hidden_id", "string", "", true, false, ""),
" NoDelete": NewFieldInfo("NoDelete", "attr_no_delete", "bool", "", true, false, ""),
" NoEdit": NewFieldInfo("NoEdit", "attr_no_edit", "bool", "", true, false, ""),
" _Spacer": nil,
" _Spacer": nil,
@@ -141,21 +141,21 @@ func NewResource(structName string, resourcePath string) *Resource {
switch {
case resource.IsSetting():
resource.ResourcePath = strcase.ToSnake(strings.TrimPrefix(structName, "Setting"))
baseType.Fields[" Key"] = NewFieldInfo("Key", "key", "string", "", false, false)
baseType.Fields[" Key"] = NewFieldInfo("Key", "key", "string", "", false, false, "")
case resource.StructName == "Device":
baseType.Fields[" MAC"] = NewFieldInfo("MAC", "mac", "string", "", true, false)
baseType.Fields[" MAC"] = NewFieldInfo("MAC", "mac", "string", "", true, false, "")
case resource.StructName == "User":
baseType.Fields[" IP"] = NewFieldInfo("IP", "ip", "string", "non-generated field", true, false)
baseType.Fields[" DevIdOverride"] = NewFieldInfo("DevIdOverride", "dev_id_override", "int", "non-generated field", true, false)
baseType.Fields[" IP"] = NewFieldInfo("IP", "ip", "string", "non-generated field", true, false, "")
baseType.Fields[" DevIdOverride"] = NewFieldInfo("DevIdOverride", "dev_id_override", "int", "non-generated field", true, false, "")
case resource.StructName == "WLAN":
// this field removed in v6, retaining for backwards compatibility
baseType.Fields["WLANGroupID"] = NewFieldInfo("WLANGroupID", "wlangroup_id", "string", "", false, false)
baseType.Fields["WLANGroupID"] = NewFieldInfo("WLANGroupID", "wlangroup_id", "string", "", false, false, "")
}
return resource
}
func NewFieldInfo(fieldName string, jsonName string, fieldType string, fieldValidation string, omitempty bool, isArray bool) *FieldInfo {
func NewFieldInfo(fieldName string, jsonName string, fieldType string, fieldValidation string, omitempty bool, isArray bool, customUnmarshalType string) *FieldInfo {
return &FieldInfo{
FieldName: fieldName,
JSONName: jsonName,
@@ -163,6 +163,7 @@ func NewFieldInfo(fieldName string, jsonName string, fieldType string, fieldVali
FieldValidation: fieldValidation,
OmitEmpty: omitempty,
IsArray: isArray,
CustomUnmarshalType: customUnmarshalType,
}
}
@@ -308,14 +309,14 @@ func main() {
return nil
}
case "SettingMgmt":
sshKeyField := NewFieldInfo(resource.StructName+"XSshKeys", "x_ssh_keys", "struct", "", false, false)
sshKeyField := NewFieldInfo(resource.StructName+"XSshKeys", "x_ssh_keys", "struct", "", false, false, "")
sshKeyField.Fields = map[string]*FieldInfo{
"name": NewFieldInfo("name", "name", "string", "", false, false),
"keyType": NewFieldInfo("keyType", "type", "string", "", false, false),
"key": NewFieldInfo("key", "key", "string", "", false, false),
"comment": NewFieldInfo("comment", "comment", "string", "", false, false),
"date": NewFieldInfo("date", "date", "string", "", false, false),
"fingerprint": NewFieldInfo("fingerprint", "fingerprint", "string", "", false, false),
"name": NewFieldInfo("name", "name", "string", "", false, false, ""),
"keyType": NewFieldInfo("keyType", "type", "string", "", false, false, ""),
"key": NewFieldInfo("key", "key", "string", "", false, false, ""),
"comment": NewFieldInfo("comment", "comment", "string", "", false, false, ""),
"date": NewFieldInfo("date", "date", "string", "", false, false, ""),
"fingerprint": NewFieldInfo("fingerprint", "fingerprint", "string", "", false, false, ""),
}
resource.Types[sshKeyField.FieldName] = sshKeyField
@@ -388,7 +389,7 @@ func (r *Resource) fieldInfoFromValidation(name string, validation interface{})
switch validation := validation.(type) {
case []interface{}:
if len(validation) == 0 {
fieldInfo, err = NewFieldInfo(fieldName, name, "string", "", false, true), nil
fieldInfo, err = NewFieldInfo(fieldName, name, "string", "", false, true, ""), nil
err = r.FieldProcessor(fieldName, fieldInfo)
return fieldInfo, err
}
@@ -410,7 +411,7 @@ func (r *Resource) fieldInfoFromValidation(name string, validation interface{})
case map[string]interface{}:
typeName := r.StructName + fieldName
result := NewFieldInfo(fieldName, name, typeName, "", true, false)
result := NewFieldInfo(fieldName, name, typeName, "", true, false, "")
result.Fields = make(map[string]*FieldInfo)
for name, fv := range validation {
@@ -434,7 +435,7 @@ func (r *Resource) fieldInfoFromValidation(name string, validation interface{})
switch {
case normalized == "falsetrue" || normalized == "truefalse":
fieldInfo, err = NewFieldInfo(fieldName, name, "bool", "", omitEmpty, false), nil
fieldInfo, err = NewFieldInfo(fieldName, name, "bool", "", omitEmpty, false, ""), nil
return fieldInfo, r.FieldProcessor(fieldName, fieldInfo)
default:
if _, err := strconv.ParseFloat(normalized, 64); err == nil {
@@ -449,12 +450,12 @@ func (r *Resource) fieldInfoFromValidation(name string, validation interface{})
}
omitEmpty = true
fieldInfo = NewFieldInfo(fieldName, name, "float64", fieldValidation, omitEmpty, false)
fieldInfo = NewFieldInfo(fieldName, name, "float64", fieldValidation, omitEmpty, false, "")
return fieldInfo, r.FieldProcessor(fieldName, fieldInfo)
}
omitEmpty = true
fieldInfo = NewFieldInfo(fieldName, name, "int", fieldValidation, omitEmpty, false)
fieldInfo = NewFieldInfo(fieldName, name, "int", fieldValidation, omitEmpty, false, "")
fieldInfo.CustomUnmarshalType = "emptyStringInt"
return fieldInfo, r.FieldProcessor(fieldName, fieldInfo)
}
@@ -464,7 +465,7 @@ func (r *Resource) fieldInfoFromValidation(name string, validation interface{})
}
omitEmpty = omitEmpty || (!strings.Contains(validation, "^$") && !strings.HasSuffix(fieldName, "ID"))
fieldInfo, err = NewFieldInfo(fieldName, name, "string", fieldValidation, omitEmpty, false), nil
fieldInfo, err = NewFieldInfo(fieldName, name, "string", fieldValidation, omitEmpty, false, ""), nil
return fieldInfo, r.FieldProcessor(fieldName, fieldInfo)
}

View File

@@ -71,11 +71,11 @@ func TestResourceTypes(t *testing.T) {
}
`
expectedFields := map[string]*FieldInfo{
"Note": NewFieldInfo("Note", "note", "string", ".{0,1024}", true, false),
"Date": NewFieldInfo("Date", "date", "string", "^$|^(20[0-9]{2}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])Z?$", false, false),
"MAC": NewFieldInfo("MAC", "mac", "string", "^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$", true, false),
"Number": NewFieldInfo("Number", "number", "int", "", true, false),
"Boolean": NewFieldInfo("Boolean", "boolean", "bool", "", false, false),
"Note": NewFieldInfo("Note", "note", "string", ".{0,1024}", true, false, ""),
"Date": NewFieldInfo("Date", "date", "string", "^$|^(20[0-9]{2}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])Z?$", false, false, ""),
"MAC": NewFieldInfo("MAC", "mac", "string", "^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$", true, false, ""),
"Number": NewFieldInfo("Number", "number", "int", "", true, false, "emptyStringInt"),
"Boolean": NewFieldInfo("Boolean", "boolean", "bool", "", false, false, ""),
"NestedType": {
FieldName: "NestedType",
JSONName: "nested_type",
@@ -84,7 +84,7 @@ func TestResourceTypes(t *testing.T) {
OmitEmpty: true,
IsArray: false,
Fields: map[string]*FieldInfo{
"NestedFieldModified": NewFieldInfo("NestedFieldModified", "nested_field", "string", "^$", false, false),
"NestedFieldModified": NewFieldInfo("NestedFieldModified", "nested_field", "string", "^$", false, false, ""),
},
},
"NestedTypeArray": {
@@ -95,7 +95,7 @@ func TestResourceTypes(t *testing.T) {
OmitEmpty: true,
IsArray: true,
Fields: map[string]*FieldInfo{
"NestedFieldModified": NewFieldInfo("NestedFieldModified", "nested_field", "string", "^$", false, false),
"NestedFieldModified": NewFieldInfo("NestedFieldModified", "nested_field", "string", "^$", false, false, ""),
},
},
}
@@ -109,13 +109,13 @@ func TestResourceTypes(t *testing.T) {
OmitEmpty: false,
IsArray: false,
Fields: map[string]*FieldInfo{
" ID": NewFieldInfo("ID", "_id", "string", "", true, false),
" SiteID": NewFieldInfo("SiteID", "site_id", "string", "", true, false),
" ID": NewFieldInfo("ID", "_id", "string", "", true, false, ""),
" SiteID": NewFieldInfo("SiteID", "site_id", "string", "", true, false, ""),
" _Spacer": nil,
" Hidden": NewFieldInfo("Hidden", "attr_hidden", "bool", "", true, false),
" HiddenID": NewFieldInfo("HiddenID", "attr_hidden_id", "string", "", true, false),
" NoDelete": NewFieldInfo("NoDelete", "attr_no_delete", "bool", "", true, false),
" NoEdit": NewFieldInfo("NoEdit", "attr_no_edit", "bool", "", true, false),
" Hidden": NewFieldInfo("Hidden", "attr_hidden", "bool", "", true, false, ""),
" HiddenID": NewFieldInfo("HiddenID", "attr_hidden_id", "string", "", true, false, ""),
" NoDelete": NewFieldInfo("NoDelete", "attr_no_delete", "bool", "", true, false, ""),
" NoEdit": NewFieldInfo("NoEdit", "attr_no_edit", "bool", "", true, false, ""),
" _Spacer": nil,
" _Spacer": nil,
},