Skip to content
Snippets Groups Projects
Commit 08b11fcc authored by ko_oler's avatar ko_oler
Browse files

правки в тесты

parent 76916a4c
No related branches found
No related tags found
No related merge requests found
......@@ -3,114 +3,69 @@ package setup
import (
"testing"
"git.perx.ru/perxis/perxis-go/pkg/clients"
"git.perx.ru/perxis/perxis-go/pkg/collections"
"git.perx.ru/perxis/perxis-go/pkg/items"
"git.perx.ru/perxis/perxis-go/pkg/roles"
"github.com/stretchr/testify/assert"
)
func TestConfig_WithCollectionOptions(t *testing.T) {
tests := []struct {
name string
colls []CollectionConfig
filter func(c *collections.Collection) bool
opts []CollectionsOption
}{
{
name: "No opts set",
colls: []CollectionConfig{{
collection: &collections.Collection{
ID: "1",
SpaceID: "sp",
EnvID: "env",
},
}},
filter: func(c *collections.Collection) bool { return true },
},
{
name: "DefaultUpdateCollectionStrategy set",
colls: []CollectionConfig{{
collection: &collections.Collection{
ID: "1",
SpaceID: "sp",
EnvID: "env",
},
}},
filter: func(c *collections.Collection) bool { return true },
opts: []CollectionsOption{DefaultUpdateCollectionStrategy()},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
config := &Config{Collections: tt.colls}
if tt.opts != nil {
assert.NotNil(t, config.WithCollectionOptions(tt.filter, tt.opts...).Collections[0].UpdateFn)
return
}
assert.Nil(t, config.WithCollectionOptions(tt.filter, tt.opts...).Collections[0].UpdateFn)
t.Run("Option set in setup config with filter", func(t *testing.T) {
// создаем конфигурацию
config := &Config{Collections: []CollectionConfig{
{collection: &collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env"}},
{collection: &collections.Collection{ID: "2", SpaceID: "sp", EnvID: "env"}},
}}
// применяем опцию OverwriteCollection к конфигурации и дополнительно добавляем фильтр (опция применится только к коллекции с id 1)
config.WithCollectionOptions(func(c *collections.Collection) bool { return c.ID == "1" }, OverwriteCollection())
assert.NotNil(t, config.Collections[0].UpdateFn, "должна быть установлена опция OverwriteCollection с учетом переданного фильтра, до правок конфигурация оставалась прежней")
assert.Nil(t, config.Collections[1].UpdateFn, "опция не установлена, так как не удовлетворяет фильтру")
})
}
}
func TestConfig_WithItemsOptions(t *testing.T) {
tests := []struct {
name string
items []ItemConfig
filter func(c *items.Item) bool
opts []ItemsOption
}{
{
name: "No options set",
items: []ItemConfig{{
item: &items.Item{
ID: "1",
SpaceID: "sp",
EnvID: "env",
CollectionID: "coll",
},
}},
filter: func(c *items.Item) bool {
return true
},
},
{
name: "OverwriteItem set",
items: []ItemConfig{{
item: &items.Item{
ID: "1",
SpaceID: "sp",
EnvID: "env",
CollectionID: "coll",
},
}},
filter: func(c *items.Item) bool {
return true
},
opts: []ItemsOption{OverwriteItem()},
},
{
name: "OverwriteItem and DeleteItem set",
items: []ItemConfig{{
item: &items.Item{
ID: "1",
SpaceID: "sp",
EnvID: "env",
CollectionID: "coll",
},
}},
filter: func(c *items.Item) bool {
return true
},
opts: []ItemsOption{OverwriteItem(), DeleteItem()},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
config := &Config{Items: tt.items}
if tt.opts != nil {
assert.NotNil(t, config.WithItemsOptions(tt.filter, tt.opts...).Items[0].UpdateFn)
return
t.Run("Option set in setup config with filter", func(t *testing.T) {
// создаем конфигурацию
config := &Config{Items: []ItemConfig{
{item: &items.Item{ID: "1", SpaceID: "sp", EnvID: "env", CollectionID: "coll"}},
{item: &items.Item{ID: "2", SpaceID: "sp", EnvID: "env", CollectionID: "coll"}},
}}
// применяем опцию OverwriteItem к конфигурации и дополнительно добавляем фильтр (опция применится только к коллекции с id 1)
config.WithItemsOptions(func(c *items.Item) bool { return c.ID == "1" }, OverwriteItem())
assert.NotNil(t, config.Items[0].UpdateFn, "должна быть установлена опция OverwriteItem с учетом переданного фильтра, до правок конфигурация оставалась прежней")
assert.Nil(t, config.Items[1].UpdateFn, "опция не установлена, так как не удовлетворяет фильтру")
})
}
assert.Nil(t, config.WithItemsOptions(tt.filter, tt.opts...).Items[0].UpdateFn)
func TestConfig_WithRoleOptions(t *testing.T) {
t.Run("Option set in setup config with filter", func(t *testing.T) {
// создаем конфигурацию
config := &Config{Roles: []RoleConfig{
{role: &roles.Role{ID: "1", SpaceID: "sp"}},
{role: &roles.Role{ID: "2", SpaceID: "sp"}},
}}
// применяем опцию OverwriteRole к конфигурации и дополнительно добавляем фильтр (опция применится только к коллекции с id 1)
config.WithRolesOptions(func(c *roles.Role) bool { return c.ID == "1" }, OverwriteRole())
assert.NotNil(t, config.Roles[0].UpdateFn, "должна быть установлена опция OverwriteRole с учетом переданного фильтра, до правок конфигурация оставалась прежней")
assert.Nil(t, config.Roles[1].UpdateFn, "опция не установлена, так как не удовлетворяет фильтру")
})
}
func TestConfig_WithClientOptions(t *testing.T) {
t.Run("Option set in setup config with filter", func(t *testing.T) {
// создаем конфигурацию
config := &Config{Clients: []ClientConfig{
{client: &clients.Client{ID: "1", SpaceID: "sp"}},
{client: &clients.Client{ID: "2", SpaceID: "sp"}},
}}
// применяем опцию OverwriteClient к конфигурации и дополнительно добавляем фильтр (опция применится только к коллекции с id 1)
config.WithClientsOptions(func(c *clients.Client) bool { return c.ID == "1" }, OverwriteClient())
assert.NotNil(t, config.Clients[0].UpdateFn, "должна быть установлена опция OverwriteClient с учетом переданного фильтра, до правок конфигурация оставалась прежней")
assert.Nil(t, config.Clients[1].UpdateFn, "опция не установлена, так как не удовлетворяет фильтру")
})
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment