config_test.go

 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}