// Validate runs the validation rules defined in the design. func (payload *CreateBottlePayload) Validate() (err error) { if payload.Name == "" { err = goa.MissingAttributeError(`raw`, "name", err) } if payload.Vineyard == "" { err = goa.MissingAttributeError(`raw`, "vineyard", err) } if payload.Varietal == "" { err = goa.MissingAttributeError(`raw`, "varietal", err) } if payload.Color == "" { err = goa.MissingAttributeError(`raw`, "color", err) } if !(payload.Color == "red" || payload.Color == "white" || payload.Color == "rose" || payload.Color == "yellow" || payload.Color == "sparkling") { err = goa.InvalidEnumValueError(`raw.color`, payload.Color, []interface{}{"red", "white", "rose", "yellow", "sparkling"}, err) } if payload.Country != nil { if len(*payload.Country) < 2 { err = goa.InvalidLengthError(`raw.country`, *payload.Country, len(*payload.Country), 2, true, err) } } if len(payload.Name) < 2 { err = goa.InvalidLengthError(`raw.name`, payload.Name, len(payload.Name), 2, true, err) } if payload.Review != nil { if len(*payload.Review) < 3 { err = goa.InvalidLengthError(`raw.review`, *payload.Review, len(*payload.Review), 3, true, err) } } if payload.Review != nil { if len(*payload.Review) > 300 { err = goa.InvalidLengthError(`raw.review`, *payload.Review, len(*payload.Review), 300, false, err) } } if payload.Sweetness != nil { if *payload.Sweetness < 1 { err = goa.InvalidRangeError(`raw.sweetness`, *payload.Sweetness, 1, true, err) } } if payload.Sweetness != nil { if *payload.Sweetness > 5 { err = goa.InvalidRangeError(`raw.sweetness`, *payload.Sweetness, 5, false, err) } } if len(payload.Varietal) < 4 { err = goa.InvalidLengthError(`raw.varietal`, payload.Varietal, len(payload.Varietal), 4, true, err) } if len(payload.Vineyard) < 2 { err = goa.InvalidLengthError(`raw.vineyard`, payload.Vineyard, len(payload.Vineyard), 2, true, err) } if payload.Vintage < 1900 { err = goa.InvalidRangeError(`raw.vintage`, payload.Vintage, 1900, true, err) } if payload.Vintage > 2020 { err = goa.InvalidRangeError(`raw.vintage`, payload.Vintage, 2020, false, err) } return }
// Validate validates the type instance. func (ut *BottlePayload) Validate() (err error) { if ut.Color != nil { if !(*ut.Color == "red" || *ut.Color == "white" || *ut.Color == "rose" || *ut.Color == "yellow" || *ut.Color == "sparkling") { err = goa.InvalidEnumValueError(`response.color`, *ut.Color, []interface{}{"red", "white", "rose", "yellow", "sparkling"}, err) } } if ut.Country != nil { if len(*ut.Country) < 2 { err = goa.InvalidLengthError(`response.country`, *ut.Country, len(*ut.Country), 2, true, err) } } if ut.Name != nil { if len(*ut.Name) < 2 { err = goa.InvalidLengthError(`response.name`, *ut.Name, len(*ut.Name), 2, true, err) } } if ut.Review != nil { if len(*ut.Review) < 3 { err = goa.InvalidLengthError(`response.review`, *ut.Review, len(*ut.Review), 3, true, err) } } if ut.Review != nil { if len(*ut.Review) > 300 { err = goa.InvalidLengthError(`response.review`, *ut.Review, len(*ut.Review), 300, false, err) } } if ut.Sweetness != nil { if *ut.Sweetness < 1 { err = goa.InvalidRangeError(`response.sweetness`, *ut.Sweetness, 1, true, err) } } if ut.Sweetness != nil { if *ut.Sweetness > 5 { err = goa.InvalidRangeError(`response.sweetness`, *ut.Sweetness, 5, false, err) } } if ut.Varietal != nil { if len(*ut.Varietal) < 4 { err = goa.InvalidLengthError(`response.varietal`, *ut.Varietal, len(*ut.Varietal), 4, true, err) } } if ut.Vineyard != nil { if len(*ut.Vineyard) < 2 { err = goa.InvalidLengthError(`response.vineyard`, *ut.Vineyard, len(*ut.Vineyard), 2, true, err) } } if ut.Vintage != nil { if *ut.Vintage < 1900 { err = goa.InvalidRangeError(`response.vintage`, *ut.Vintage, 1900, true, err) } } if ut.Vintage != nil { if *ut.Vintage > 2020 { err = goa.InvalidRangeError(`response.vintage`, *ut.Vintage, 2020, false, err) } } return }
It("creates a http error", func() { Ω(valErr).ShouldNot(BeNil()) Ω(valErr).Should(BeAssignableToTypeOf(&goa.Error{})) err := valErr.(*goa.Error) Ω(err.Detail).Should(ContainSubstring(name)) }) }) var _ = Describe("InvalidEnumValueError", func() { var valErr error ctx := "ctx" val := 42 allowed := []interface{}{"43", "44"} JustBeforeEach(func() { valErr = goa.InvalidEnumValueError(ctx, val, allowed) }) It("creates a http error", func() { Ω(valErr).ShouldNot(BeNil()) Ω(valErr).Should(BeAssignableToTypeOf(&goa.Error{})) err := valErr.(*goa.Error) Ω(err.Detail).Should(ContainSubstring(ctx)) Ω(err.Detail).Should(ContainSubstring("%d", val)) Ω(err.Detail).Should(ContainSubstring(`"43", "44"`)) }) }) var _ = Describe("InvalidFormaerror", func() { var valErr error ctx := "ctx"