github.com/abolfazlbeh/zhycan@v0.0.0-20230819144214-24cf38237387/internal/config/manager_test.go (about) 1 package config 2 3 import ( 4 "reflect" 5 "testing" 6 "time" 7 ) 8 9 func TestCreateManager(t *testing.T) { 10 err := createManager() 11 if err != nil { 12 t.Errorf("There is an error in creating manager: %v", err) 13 } 14 } 15 16 func TestAllModuleIsInitialized(t *testing.T) { 17 err := createManager() 18 if err == nil { 19 time.Sleep(2 * time.Second) 20 21 expectedFlag := true 22 actualFlag := GetManager().IsInitialized() 23 if expectedFlag != actualFlag { 24 t.Errorf("Manager initialization status --> expected: %v, got %v", expectedFlag, actualFlag) 25 } else { 26 expectedInitializedModules := []string{"logger"} 27 actualInitializedModules := GetManager().GetAllInitializedModuleList() 28 if !reflect.DeepEqual(actualInitializedModules, expectedInitializedModules) { 29 t.Errorf("Config Initialized Modules --> expected: %v, got %v", expectedInitializedModules, actualInitializedModules) 30 } 31 } 32 } 33 } 34 35 func TestGetWrapperInstance(t *testing.T) { 36 err := createManager() 37 if err == nil { 38 time.Sleep(3 * time.Second) 39 40 expectedWrapper := &ViperWrapper{ 41 ConfigPath: []string{"../../configs/test/"}, 42 ConfigName: "logger", 43 ConfigEnvPrefix: "", 44 ConfigResourcePlace: "", 45 } 46 _ = expectedWrapper.Load() 47 48 actualWrapper, err := GetManager().GetConfigWrapper("logger") 49 if err != nil { 50 t.Errorf("Get Warpper Object --> Got Error --> Expected: %v, but got, %v", nil, err) 51 } 52 53 if !reflect.DeepEqual(expectedWrapper, actualWrapper) { 54 t.Errorf("Get Warpper Object --> Expected: %v, but got %v", expectedWrapper, actualWrapper) 55 } 56 } 57 } 58 59 func TestGetDifferentConfigs(t *testing.T) { 60 expectedValues := []struct { 61 key string 62 expectedVal interface{} 63 }{ 64 {key: "type", expectedVal: "zap"}, 65 {key: "typ2", expectedVal: KeyNotExistErr{ 66 Key: "typ2", Category: "logger", 67 }}, 68 } 69 70 err := createManager() 71 if err != nil { 72 t.Errorf("Creating Config Manager Caused Error --> Expected: %v, but got %v", nil, err) 73 } 74 75 actualVal, _ := GetManager().Get("logger", expectedValues[0].key) 76 if expectedValues[0].expectedVal != actualVal { 77 t.Errorf("Get the key for the `type` --> Expected: %v, got %v", expectedValues[0].expectedVal, actualVal) 78 } 79 80 _, err = GetManager().Get("logger", expectedValues[1].key) 81 if reflect.DeepEqual(expectedValues[1].expectedVal, err) { 82 t.Errorf("Get the key for the `type` --> Expected: %v, got %v", expectedValues[1].expectedVal, err) 83 } 84 } 85 86 func TestManager_ManualLoadConfig(t *testing.T) { 87 err := createManager() 88 if err != nil { 89 t.Errorf("Creating Config Manager Caused Error --> Expected: %v, but got %v", nil, err) 90 } 91 92 // add logger to the manager 93 err = GetManager().ManualLoadConfig("/tmp/", "zh") 94 if err != nil { 95 t.Errorf("Manual loading config file --> Expected: %v, but got %v", nil, err) 96 } 97 98 expectedValue := "founded" 99 val, err := GetManager().Get("zh", "test") 100 if err != nil { 101 t.Errorf("Get config value from manual file the key is `test`, got error --> Expected: %v, but got %v", nil, err) 102 } 103 104 if !reflect.DeepEqual(expectedValue, val) { 105 t.Errorf("Expected the value of key `test` to be `%v`, but got `%v`", expectedValue, val) 106 } 107 } 108 109 func createManager() error { 110 path := "../.." 111 initialMode := "test" 112 prefix := "ZHYCAN" 113 114 return CreateManager(path, initialMode, prefix) 115 }