3
0
corteza/compose/service/module_test.go
2019-09-09 13:04:12 +02:00

116 lines
3.2 KiB
Go

// +build integration
package service
import (
"context"
"testing"
"github.com/cortezaproject/corteza-server/compose/types"
"github.com/cortezaproject/corteza-server/internal/auth"
"github.com/cortezaproject/corteza-server/internal/test"
)
func TestModule(t *testing.T) {
ctx := context.WithValue(context.Background(), "testing", true)
// Set Identity (required for permission checks).
ctx = auth.SetIdentityToContext(ctx, auth.NewIdentity(1337))
ns1, _ := createTestNamespaces(ctx, t)
svc := Module().With(ctx)
// the module object we're working with
module := &types.Module{
NamespaceID: ns1.ID,
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 := svc.Update(module)
test.Assert(t, m == nil, "Expected empty return for invalid update, got %#v", m)
test.Assert(t, err != nil, "Expected error when updating invalid content")
}
// create module
m, err := svc.Create(module)
test.Assert(t, err == nil, "Error when creating module: %+v", err)
test.Assert(t, m.ID > 0, "Expected auto generated ID")
// fetch created module
{
ms, err := svc.FindByID(m.NamespaceID, m.ID)
test.Assert(t, err == nil, "Error when retrieving module by id: %+v", err)
test.Assert(t, ms.ID == m.ID, "Expected ID from database to match, %d != %d", m.ID, ms.ID)
test.Assert(t, ms.Name == m.Name, "Expected Name from database to match, %s != %s", m.Name, ms.Name)
test.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"
m.UpdatedAt = nil
_, err := svc.Update(m)
test.Assert(t, err == nil, "Error when updating module, %+v", err)
}
// fetch module fields
{
fl := m.Fields.Names()
test.Assert(t, err == nil, "Error when retrieving module fields by module: %+v", err)
test.Assert(t, len(fl) == 4, "Expected 4 fields, got %d", len(fl))
}
// re-fetch module
{
ms, err := svc.FindByID(m.NamespaceID, m.ID)
test.Assert(t, err == nil, "Error when retrieving module by id: %+v", err)
test.Assert(t, ms.ID == m.ID, "Expected ID from database to match, %d != %d", m.ID, ms.ID)
test.Assert(t, ms.Name == m.Name, "Expected Name from database to match, %s != %s", m.Name, ms.Name)
}
// fetch all modules
{
ms, _, err := svc.Find(types.ModuleFilter{})
test.Assert(t, err == nil, "Error when retrieving modules: %+v", err)
test.Assert(t, len(ms) >= 1, "Expected at least one module, got %d", len(ms))
prevModuleCount = len(ms)
}
// re-fetch module
{
err := svc.DeleteByID(m.NamespaceID, m.ID)
test.Assert(t, err == nil, "Error when deleting module by id: %+v", err)
}
// fetch all modules
{
ms, _, err := svc.Find(types.ModuleFilter{})
test.Assert(t, err == nil, "Error when retrieving modules: %+v", err)
test.Assert(t, len(ms) < prevModuleCount, "Expected modules count to decrease after deletion, %d < %d", len(ms), prevModuleCount)
}
}
}