Library/models/item_test.go

110 lines
2.9 KiB
Go
Raw Normal View History

2018-01-16 12:19:49 +00:00
package models
import (
"github.com/stretchr/testify/assert"
"testing"
)
func TestAddOrUpdateItem(t *testing.T) {
// Create test database
assert.NoError(t, PrepareTestDatabase())
2018-04-13 13:03:36 +00:00
// Get our doer
doer, _, err := GetUserByID(1)
assert.NoError(t, err)
2018-01-16 12:19:49 +00:00
// Bootstrap our test item
testitem := Item{
2018-01-16 13:06:09 +00:00
Title: "Testitem",
Price: 9.999,
2018-01-16 12:19:49 +00:00
Description: "Lorem Ipsum",
2018-01-16 13:06:09 +00:00
Other: "bs",
2018-01-16 12:19:49 +00:00
}
// Create a new item
2018-04-13 13:03:36 +00:00
item1, err := AddOrUpdateItem(testitem, &doer)
2018-01-16 12:19:49 +00:00
assert.NoError(t, err)
assert.Equal(t, testitem.Title, item1.Title)
assert.Equal(t, testitem.Price, item1.Price)
assert.Equal(t, testitem.Description, item1.Description)
assert.Equal(t, testitem.Other, item1.Other)
// And anotherone
2018-04-13 13:03:36 +00:00
item2, err := AddOrUpdateItem(testitem, &doer)
2018-01-16 12:19:49 +00:00
assert.NoError(t, err)
assert.Equal(t, testitem.Title, item2.Title)
// As of now, we should have 2 items in total. Get the list and check.
allitems, err := ListItems("")
assert.NoError(t, err)
for _, item := range allitems {
assert.Equal(t, testitem.Title, item.Title)
assert.Equal(t, testitem.Price, item.Price)
assert.Equal(t, testitem.Description, item.Description)
assert.Equal(t, testitem.Other, item.Other)
}
2018-01-25 13:39:27 +00:00
// Search
allitems, err = ListItems("esti")
assert.NoError(t, err)
for _, item := range allitems {
assert.Equal(t, testitem.Title, item.Title)
assert.Equal(t, testitem.Price, item.Price)
assert.Equal(t, testitem.Description, item.Description)
assert.Equal(t, testitem.Other, item.Other)
}
2018-01-16 12:19:49 +00:00
// Get the new item
gotitem, exists, err := GetItemByID(item1.ID)
assert.NoError(t, err)
assert.True(t, exists)
assert.Equal(t, testitem.Title, gotitem.Title)
assert.Equal(t, testitem.Price, gotitem.Price)
assert.Equal(t, testitem.Description, gotitem.Description)
assert.Equal(t, testitem.Other, gotitem.Other)
// Pass an empty item to see if it fails
2018-04-13 13:03:36 +00:00
_, err = AddOrUpdateItem(Item{}, &doer)
2018-01-16 12:19:49 +00:00
assert.Error(t, err)
2018-01-24 12:04:47 +00:00
assert.True(t, IsErrItemTitleCannotBeEmpty(err))
2018-01-16 12:19:49 +00:00
// Update the item
testitem.ID = item1.ID
testitem.Title = "Lorem Ipsum"
2018-04-13 13:03:36 +00:00
item1updated, err := AddOrUpdateItem(testitem, &doer)
2018-01-16 12:19:49 +00:00
assert.NoError(t, err)
assert.Equal(t, testitem.Title, item1updated.Title)
assert.Equal(t, testitem.Price, item1updated.Price)
assert.Equal(t, testitem.Description, item1updated.Description)
assert.Equal(t, testitem.Other, item1updated.Other)
2018-01-16 15:01:42 +00:00
// Test Quantity
qty1, err := item1.getQuantity()
assert.NoError(t, err)
assert.Equal(t, item1.Quantity, qty1)
// Update the quantity and check again
err = item1.setQuantity(int64(99))
assert.NoError(t, err)
qty2, err := item1.getQuantity()
assert.NoError(t, err)
assert.Equal(t, int64(99), qty2)
2018-01-16 12:19:49 +00:00
// Delete the item
2018-04-13 13:03:36 +00:00
err = DeleteItemByID(item1.ID, &doer)
2018-01-16 12:19:49 +00:00
assert.NoError(t, err)
// Check if it is gone
_, exists, err = GetItemByID(item1.ID)
assert.NoError(t, err)
assert.False(t, exists)
// Try deleting one with ID = 0
2018-04-13 13:03:36 +00:00
err = DeleteItemByID(0, &doer)
assert.Error(t, err)
assert.True(t, IsErrIDCannotBeZero(err))
2018-01-16 12:19:49 +00:00
}