Added error type for no item title

This commit is contained in:
konrad 2018-01-24 13:04:47 +01:00 committed by kolaente
parent 2e2877156b
commit c3cfc73840
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
4 changed files with 18 additions and 3 deletions

View File

@ -78,4 +78,17 @@ func (err ErrAuthorCannotBeEmpty) Error() string {
return fmt.Sprintf("author cannot be empty")
}
// ErrItemTitleCannotBeEmpty represents a "ErrItemTitleCannotBeEmpty" kind of error.
type ErrItemTitleCannotBeEmpty struct {}
// IsErrItemTitleCannotBeEmpty checks if an error is a ErrItemTitleCannotBeEmpty.
func IsErrItemTitleCannotBeEmpty(err error) bool {
_, ok := err.(ErrItemTitleCannotBeEmpty)
return ok
}
func (err ErrItemTitleCannotBeEmpty) Error() string {
return fmt.Sprintf("title cannot be empty")
}

View File

@ -53,6 +53,7 @@ func TestAddOrUpdateItem(t *testing.T) {
// Pass an empty item to see if it fails
_, err = AddOrUpdateItem(Item{})
assert.Error(t, err)
assert.True(t, IsErrItemTitleCannotBeEmpty(err))
// Update the item
testitem.ID = item1.ID

View File

@ -1,7 +1,5 @@
package models
import "fmt"
// AddOrUpdateItem adds or updates a item from a item struct
func AddOrUpdateItem(item Item) (newItem Item, err error) {
// save the quantity for later use
@ -9,7 +7,7 @@ func AddOrUpdateItem(item Item) (newItem Item, err error) {
if item.ID == 0 {
if item.Title == "" { // Only insert it if the title is not empty
return Item{}, fmt.Errorf("You need at least a title to create an item")
return Item{}, ErrItemTitleCannotBeEmpty{}
}
_, err = x.Insert(&item)

View File

@ -57,6 +57,9 @@ func ItemAddOrUpdate(c echo.Context) error {
newItem, err := models.AddOrUpdateItem(*datItem)
if err != nil {
if models.IsErrItemTitleCannotBeEmpty(err) {
return c.JSON(http.StatusInternalServerError, models.Message{"Please provide at least a title for the item."})
}
return c.JSON(http.StatusInternalServerError, models.Message{"Error"})
}