func TestGenerateValidators(t *testing.T) { s := &schema.Schema{} err := json.Unmarshal([]byte(testdata.JSON1), s) common.TestEquals(t, nil, err) result := ` // Validate validates the Account struct func (a *Account) Validate() error { return govalidator.NewMulti(govalidator.Date(a.CreatedAt), govalidator.MaxLength(a.Salt, 255), govalidator.Min(float64(a.ID), 1.000000), govalidator.Min(float64(a.ProfileID), 1.000000), govalidator.MinLength(a.Password, 6), govalidator.MinLength(a.URL, 6), govalidator.MinLength(a.URLName, 6), govalidator.OneOf(a.EmailStatusConstant, []string{ AccountEmailStatusConstant.Verified, AccountEmailStatusConstant.NotVerified, }), govalidator.OneOf(a.PasswordStatusConstant, []string{ AccountPasswordStatusConstant.Valid, AccountPasswordStatusConstant.NeedsReset, AccountPasswordStatusConstant.Generated, }), govalidator.OneOf(a.StatusConstant, []string{ AccountStatusConstant.Registered, AccountStatusConstant.Unregistered, AccountStatusConstant.NeedsManualVerification, })).Validate() }` code, err := validators.Generate(s.Definitions["Account"]) common.TestEquals(t, nil, err) common.TestEquals(t, result, string(code)) }
// GenerateModel generates the model itself func GenerateModel(s *schema.Schema) ([]byte, error) { packageLine, err := GeneratePackage(s) if err != nil { return nil, err } consts, err := constants.Generate(s) if err != nil { return nil, err } schema, err := GenerateSchema(s) if err != nil { return nil, err } constructor, err := constructors.Generate(s) if err != nil { return nil, err } validators, err := validators.Generate(s) if err != nil { return nil, err } var buf bytes.Buffer buf.Write(packageLine) buf.Write(consts) buf.Write(schema) buf.Write(constructor) if validators != nil { buf.Write(validators) } return writers.Clear(buf) }