Library/models/publisher_test.go

79 lines
2.0 KiB
Go

package models
import (
"github.com/stretchr/testify/assert"
"testing"
)
func TestAddOrUpdatePublisher(t *testing.T) {
// Create test database
assert.NoError(t, PrepareTestDatabase())
// Get our doer
doer, _, err := GetUserByID(1)
assert.NoError(t, err)
// Bootstrap our test publisher
testpublisher := Publisher{
Name: "Testpublisher",
}
// Delete every prexisting publisher to have a fresh start
allpublishers, err := ListPublishers("")
assert.NoError(t, err)
for _, publisher := range allpublishers {
// Delete
err = DeletePublisherByID(publisher.ID, &doer)
assert.NoError(t, err)
// Check if it is gone
_, exists, err := GetPublisherByID(publisher.ID)
assert.NoError(t, err)
assert.False(t, exists)
}
// Create a new publisher
publisher1, err := AddOrUpdatePublisher(testpublisher, &doer)
assert.NoError(t, err)
assert.Equal(t, testpublisher.Name, publisher1.Name)
// Get the new publisher
gotpublisher, exists, err := GetPublisherByID(publisher1.ID)
assert.NoError(t, err)
assert.True(t, exists)
assert.Equal(t, testpublisher.Name, gotpublisher.Name)
// Pass an empty publisher to see if it fails
_, err = AddOrUpdatePublisher(Publisher{}, &doer)
assert.Error(t, err)
assert.True(t, IsErrNoPublisherName(err))
// Update the publisher
testpublisher.ID = publisher1.ID
testpublisher.Name = "Lorem Ipsum"
publisher1updated, err := AddOrUpdatePublisher(testpublisher, &doer)
assert.NoError(t, err)
assert.Equal(t, testpublisher.Name, publisher1updated.Name)
// Search
allpublishers, err = ListPublishers("rem")
assert.NoError(t, err)
assert.NotNil(t, allpublishers[0])
// Delete the publisher
err = DeletePublisherByID(publisher1.ID, &doer)
assert.NoError(t, err)
// Check if it is gone
_, exists, err = GetPublisherByID(publisher1.ID)
assert.NoError(t, err)
assert.False(t, exists)
// Try deleting one with ID = 0
err = DeletePublisherByID(0, &doer)
assert.Error(t, err)
assert.True(t, IsErrIDCannotBeZero(err))
}