2020-12-04 02:28:45 +03:00
|
|
|
package config_test
|
|
|
|
|
2020-12-13 13:10:04 +03:00
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"fmt"
|
|
|
|
"testing"
|
|
|
|
|
2021-10-02 19:55:07 +03:00
|
|
|
"go.unistack.org/micro/v3/config"
|
2020-12-13 13:10:04 +03:00
|
|
|
)
|
2020-12-04 02:28:45 +03:00
|
|
|
|
|
|
|
type Cfg struct {
|
2020-12-13 13:10:04 +03:00
|
|
|
StringValue string `default:"string_value"`
|
2020-12-13 19:28:29 +03:00
|
|
|
IgnoreValue string `json:"-"`
|
2020-12-13 13:17:38 +03:00
|
|
|
StructValue struct {
|
|
|
|
StringValue string `default:"string_value"`
|
|
|
|
}
|
2021-04-27 08:32:47 +03:00
|
|
|
IntValue int `default:"99"`
|
2020-12-04 02:28:45 +03:00
|
|
|
}
|
|
|
|
|
2020-12-13 13:10:04 +03:00
|
|
|
func TestDefault(t *testing.T) {
|
2020-12-04 02:28:45 +03:00
|
|
|
ctx := context.Background()
|
2020-12-19 23:22:05 +03:00
|
|
|
conf := &Cfg{IntValue: 10}
|
2020-12-04 02:28:45 +03:00
|
|
|
blfn := func(ctx context.Context, cfg config.Config) error {
|
2021-04-27 08:32:47 +03:00
|
|
|
nconf, ok := cfg.Options().Struct.(*Cfg)
|
2020-12-04 02:28:45 +03:00
|
|
|
if !ok {
|
|
|
|
return fmt.Errorf("failed to get Struct from options: %v", cfg.Options())
|
|
|
|
}
|
2021-04-27 08:32:47 +03:00
|
|
|
nconf.StringValue = "before_load"
|
2020-12-04 02:28:45 +03:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
alfn := func(ctx context.Context, cfg config.Config) error {
|
2021-04-27 08:32:47 +03:00
|
|
|
nconf, ok := cfg.Options().Struct.(*Cfg)
|
2020-12-04 02:28:45 +03:00
|
|
|
if !ok {
|
|
|
|
return fmt.Errorf("failed to get Struct from options: %v", cfg.Options())
|
|
|
|
}
|
2021-04-27 08:32:47 +03:00
|
|
|
nconf.StringValue = "after_load"
|
2020-12-04 02:28:45 +03:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-12-08 00:41:14 +03:00
|
|
|
cfg := config.NewConfig(config.Struct(conf), config.BeforeLoad(blfn), config.AfterLoad(alfn))
|
2020-12-04 02:28:45 +03:00
|
|
|
if err := cfg.Init(); err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
if err := cfg.Load(ctx); err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
2020-12-13 13:10:04 +03:00
|
|
|
if conf.StringValue != "after_load" {
|
2020-12-04 02:28:45 +03:00
|
|
|
t.Fatal("AfterLoad option not working")
|
|
|
|
}
|
2021-08-03 00:24:40 +03:00
|
|
|
_ = conf
|
2021-09-28 23:43:43 +03:00
|
|
|
// t.Logf("%#+v\n", conf)
|
2020-12-04 02:28:45 +03:00
|
|
|
}
|