1package repository
2
3import (
4 "testing"
5 "time"
6
7 "github.com/stretchr/testify/assert"
8 "github.com/stretchr/testify/require"
9)
10
11func TestMergedConfig(t *testing.T) {
12 local := NewMemConfig()
13 global := NewMemConfig()
14 merged := mergeConfig(local, global)
15
16 require.NoError(t, global.StoreBool("bool", true))
17 require.NoError(t, global.StoreString("string", "foo"))
18 require.NoError(t, global.StoreTimestamp("timestamp", time.Unix(1234, 0)))
19
20 val1, err := merged.ReadBool("bool")
21 require.NoError(t, err)
22 require.Equal(t, val1, true)
23
24 val2, err := merged.ReadString("string")
25 require.NoError(t, err)
26 require.Equal(t, val2, "foo")
27
28 val3, err := merged.ReadTimestamp("timestamp")
29 require.NoError(t, err)
30 require.Equal(t, val3, time.Unix(1234, 0))
31
32 require.NoError(t, local.StoreBool("bool", false))
33 require.NoError(t, local.StoreString("string", "bar"))
34 require.NoError(t, local.StoreTimestamp("timestamp", time.Unix(5678, 0)))
35
36 val1, err = merged.ReadBool("bool")
37 require.NoError(t, err)
38 require.Equal(t, val1, false)
39
40 val2, err = merged.ReadString("string")
41 require.NoError(t, err)
42 require.Equal(t, val2, "bar")
43
44 val3, err = merged.ReadTimestamp("timestamp")
45 require.NoError(t, err)
46 require.Equal(t, val3, time.Unix(5678, 0))
47
48 all, err := merged.ReadAll("")
49 require.NoError(t, err)
50 require.Equal(t, all, map[string]string{
51 "bool": "false",
52 "string": "bar",
53 "timestamp": "5678",
54 })
55}
56
57func TestGetDefaultString(t *testing.T) {
58 cfg := NewMemConfig()
59
60 // Test with missing key - should return default
61 val, err := GetDefaultString("missing.key", cfg, "default_value")
62 require.NoError(t, err)
63 assert.Equal(t, "default_value", val)
64
65 // Test with existing key - should return actual value
66 require.NoError(t, cfg.StoreString("existing.key", "actual_value"))
67 val, err = GetDefaultString("existing.key", cfg, "default_value")
68 require.NoError(t, err)
69 assert.Equal(t, "actual_value", val)
70
71 // Test with empty string value - should return empty string, not default
72 require.NoError(t, cfg.StoreString("empty.key", ""))
73 val, err = GetDefaultString("empty.key", cfg, "default_value")
74 require.NoError(t, err)
75 assert.Equal(t, "", val)
76
77 // Test the specific git-bug.remote case
78 val, err = GetDefaultString("git-bug.remote", cfg, "origin")
79 require.NoError(t, err)
80 assert.Equal(t, "origin", val)
81
82 require.NoError(t, cfg.StoreString("git-bug.remote", "upstream"))
83 val, err = GetDefaultString("git-bug.remote", cfg, "origin")
84 require.NoError(t, err)
85 assert.Equal(t, "upstream", val)
86}