3
0
Files
corteza/crm/service/module_test.go
2019-01-03 06:40:28 +01:00

103 lines
2.7 KiB
Go

package service
import (
"context"
"testing"
"github.com/crusttech/crust/crm/types"
)
func TestModule(t *testing.T) {
repository := Module().With(context.Background())
// the module object we're working with
module := &types.Module{
Name: "Test",
Fields: types.ModuleFieldSet{
&types.ModuleField{
Name: "name",
Kind: "input",
},
&types.ModuleField{
Name: "email",
Kind: "email",
},
&types.ModuleField{
Name: "options",
Kind: "select_multi",
},
&types.ModuleField{
Name: "description",
Kind: "text",
},
},
}
prevModuleCount := 0
{
{
m, err := repository.Update(module)
assert(t, m == nil, "Expected empty return for invalid update, got %#v", m)
assert(t, err != nil, "Expected error when updating invalid content")
}
// create module
m, err := repository.Create(module)
assert(t, err == nil, "Error when creating module: %+v", err)
assert(t, m.ID > 0, "Expected auto generated ID")
// fetch created module
{
ms, err := repository.FindByID(m.ID)
assert(t, err == nil, "Error when retrieving module by id: %+v", err)
assert(t, ms.ID == m.ID, "Expected ID from database to match, %d != %d", m.ID, ms.ID)
assert(t, ms.Name == m.Name, "Expected Name from database to match, %s != %s", m.Name, ms.Name)
assert(t, len(ms.Fields) == 4, "Expected Fields count from database to match, 4 != %d", len(ms.Fields))
}
// update created module
{
m.Name = "Updated test"
_, err := repository.Update(m)
assert(t, err == nil, "Error when updating module, %+v", err)
}
// fetch module fields
{
fl := m.Fields.Names()
assert(t, err == nil, "Error when retrieving module fields by module: %+v", err)
assert(t, len(fl) == 4, "Expected 4 fields, got %d", len(fl))
}
// re-fetch module
{
ms, err := repository.FindByID(m.ID)
assert(t, err == nil, "Error when retrieving module by id: %+v", err)
assert(t, ms.ID == m.ID, "Expected ID from database to match, %d != %d", m.ID, ms.ID)
assert(t, ms.Name == m.Name, "Expected Name from database to match, %s != %s", m.Name, ms.Name)
}
// fetch all modules
{
ms, err := repository.Find()
assert(t, err == nil, "Error when retrieving modules: %+v", err)
assert(t, len(ms) >= 1, "Expected at least one module, got %d", len(ms))
prevModuleCount = len(ms)
}
// re-fetch module
{
err := repository.DeleteByID(m.ID)
assert(t, err == nil, "Error when deleting module by id: %+v", err)
}
// fetch all modules
{
ms, err := repository.Find()
assert(t, err == nil, "Error when retrieving modules: %+v", err)
assert(t, len(ms) < prevModuleCount, "Expected modules count to decrease after deletion, %d < %d", len(ms), prevModuleCount)
}
}
}