api/models/list_items_test.go

77 lines
1.7 KiB
Go

package models
import (
"fmt"
"github.com/stretchr/testify/assert"
"testing"
)
func TestListItem_Create(t *testing.T) {
assert.NoError(t, PrepareTestDatabase())
// Fake list item
listitem := ListItem{
Text: "Lorem",
Description: "Lorem Ipsum BACKERY",
ListID: 1,
}
// Add one point to a list
doer, _, err := GetUserByID(1)
assert.NoError(t, err)
assert.True(t, listitem.CanCreate(&doer))
err = listitem.Create(&doer)
assert.NoError(t, err)
// Update it
listitem.Text = "Test34"
assert.True(t, listitem.CanUpdate(&doer))
err = listitem.Update()
assert.NoError(t, err)
// Check if it was updated
li, err := GetListItemByID(listitem.ID)
assert.NoError(t, err)
assert.Equal(t, li.Text, "Test34")
// Delete the item
assert.True(t, listitem.CanDelete(&doer))
err = listitem.Delete()
assert.NoError(t, err)
// Delete a nonexistant item
listitem.ID = 0
err = listitem.Delete()
assert.Error(t, err)
assert.True(t, IsErrListItemDoesNotExist(err))
// Try adding a list item with an empty text
listitem.Text = ""
err = listitem.Create(&doer)
assert.Error(t, err)
assert.True(t, IsErrListItemCannotBeEmpty(err))
// Try adding one to a nonexistant list
listitem.ListID = 99993939
listitem.Text = "Lorem Ipsum"
err = listitem.Create(&doer)
assert.Error(t, err)
assert.True(t, IsErrListDoesNotExist(err))
// Try updating a nonexistant item
listitem.ID = 94829352
err = listitem.Update()
assert.Error(t, err)
assert.True(t, IsErrListItemDoesNotExist(err))
// Try inserting an item with a nonexistant user
nUser := &User{ID: 9482385}
listitem.ListID = 1
err = listitem.Create(nUser)
assert.Error(t, err)
fmt.Println(err)
assert.True(t, IsErrUserDoesNotExist(err))
}