Skip to content
Snippets Groups Projects
Commit 5324ef3c authored by Alex Petraky's avatar Alex Petraky :basketball_player_tone1: Committed by Pavel Antonov
Browse files

fix(setup): Исправлена ошибка в Setup при передаче опций из-за которой не...

fix(setup): Исправлена ошибка в Setup при передаче опций из-за которой не сохранялась формируемая конфигурация

Close #PRXS-2824
parent 21417cad
No related branches found
No related tags found
No related merge requests found
......@@ -67,10 +67,10 @@ func (cfg *Config) MustLoad(fsys fs.FS) *Config {
}
func (cfg *Config) WithCollectionOptions(filter func(c *collections.Collection) bool, opts ...CollectionsOption) *Config {
for _, c := range cfg.Collections {
for i, c := range cfg.Collections {
if filter(c.collection) {
for _, o := range opts {
o(&c)
o(&cfg.Collections[i])
}
}
}
......@@ -78,10 +78,10 @@ func (cfg *Config) WithCollectionOptions(filter func(c *collections.Collection)
}
func (cfg *Config) WithItemsOptions(filter func(c *items.Item) bool, opts ...ItemsOption) *Config {
for _, i := range cfg.Items {
if filter(i.item) {
for i, c := range cfg.Items {
if filter(c.item) {
for _, o := range opts {
o(&i)
o(&cfg.Items[i])
}
}
}
......@@ -89,10 +89,10 @@ func (cfg *Config) WithItemsOptions(filter func(c *items.Item) bool, opts ...Ite
}
func (cfg *Config) WithRolesOptions(filter func(c *roles.Role) bool, opts ...RolesOption) *Config {
for _, r := range cfg.Roles {
for i, r := range cfg.Roles {
if filter(r.role) {
for _, o := range opts {
o(&r)
o(&cfg.Roles[i])
}
}
}
......@@ -100,10 +100,10 @@ func (cfg *Config) WithRolesOptions(filter func(c *roles.Role) bool, opts ...Rol
}
func (cfg *Config) WithClientsOptions(filter func(c *clients.Client) bool, opts ...ClientsOption) *Config {
for _, c := range cfg.Clients {
for i, c := range cfg.Clients {
if filter(c.client) {
for _, o := range opts {
o(&c)
o(&cfg.Clients[i])
}
}
}
......
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) {
t.Run("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 и установлена UpdateFn для коллекции ID:1")
assert.Nil(t, config.Collections[1].UpdateFn)
})
}
func TestConfig_WithItemsOptions(t *testing.T) {
t.Run("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 и установлена UpdateFn для элемента ID: 1")
assert.Nil(t, config.Items[1].UpdateFn)
})
}
func TestConfig_WithRoleOptions(t *testing.T) {
t.Run("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("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