pkg/tui/config_test.go 1.1 K raw
1
package tui
2
3
import (
4
	"os"
5
	"path/filepath"
6
	"testing"
7
8
	"github.com/BurntSushi/toml"
9
)
10
11
func TestConfigTOMLRoundTrip(t *testing.T) {
12
	cfg := Config{RemoteURL: "https://example.test", APIKey: "secret"}
13
	path := filepath.Join(t.TempDir(), "config.toml")
14
	f, err := os.Create(path)
15
	if err != nil {
16
		t.Fatal(err)
17
	}
18
	if err := toml.NewEncoder(f).Encode(cfg); err != nil {
19
		t.Fatal(err)
20
	}
21
	if err := f.Close(); err != nil {
22
		t.Fatal(err)
23
	}
24
	var got Config
25
	if _, err := toml.DecodeFile(path, &got); err != nil {
26
		t.Fatal(err)
27
	}
28
	if got != cfg {
29
		t.Fatalf("got %#v want %#v", got, cfg)
30
	}
31
}
32
33
func TestLoadConfigMissingAndSaveRoundTrip(t *testing.T) {
34
	dir := t.TempDir()
35
	t.Setenv("XDG_CONFIG_HOME", dir)
36
	cfg, err := LoadConfig("testapp")
37
	if err != nil {
38
		t.Fatal(err)
39
	}
40
	if cfg != (Config{}) {
41
		t.Fatalf("missing config got %#v", cfg)
42
	}
43
44
	want := Config{RemoteURL: "http://localhost:3000", APIKey: "key"}
45
	if err := SaveConfig("testapp", want); err != nil {
46
		t.Fatal(err)
47
	}
48
	got, err := LoadConfig("testapp")
49
	if err != nil {
50
		t.Fatal(err)
51
	}
52
	if got != want {
53
		t.Fatalf("got %#v want %#v", got, want)
54
	}
55
}