1package tree
2
3import (
4	"testing"
5
6	"github.com/fatih/color"
7	"github.com/stretchr/testify/assert"
8)
9
10func TestRoot(t *testing.T) {
11	color.NoColor = true
12
13	r := New("gopass")
14	r.AddTemplate("foo")
15	r.AddFile("foo/bar/baz", "")
16	r.AddFile("foo/bar/zab", "")
17	r.AddMount("mnt/m1", "/tmp/m1")
18	r.AddFile("mnt/m1/foo", "")
19	r.AddFile("mnt/m1/foo/bar", "")
20	t.Logf("%+#v", r)
21	assert.Equal(t, `gopass
22├── foo/ (template)
23│   └── bar/
24│       ├── baz
25│       └── zab
26└── mnt/
27    └── m1 (/tmp/m1)
28        └── foo/
29            └── bar
30`, r.Format(INF))
31
32	assert.Equal(t, []string{
33		"foo/bar/baz",
34		"foo/bar/zab",
35		"mnt/m1/foo/bar",
36	}, r.List(INF))
37	assert.Equal(t, []string{
38		"foo/",
39		"foo/bar/",
40		"mnt/",
41		"mnt/m1/",
42		"mnt/m1/foo/",
43	}, r.ListFolders(INF))
44	f, err := r.FindFolder("mnt/m1")
45	assert.NoError(t, err)
46	assert.Equal(t, `gopass
47└── foo/
48    └── bar
49`, f.Format(INF))
50}
51
52func TestMountShadow(t *testing.T) {
53	color.NoColor = true
54
55	r := New("gopass")
56	r.AddTemplate("foo")
57	r.AddFile("foo/bar/baz", "")
58	r.AddFile("foo/bar/zab", "")
59	r.AddMount("foo", "/tmp/m1")
60	r.AddFile("foo/zab", "")
61	r.AddFile("foo/baz", "")
62	t.Logf("%+#v", r)
63	assert.Equal(t, `gopass
64└── foo (/tmp/m1)
65    ├── baz
66    └── zab
67`, r.Format(INF))
68
69	assert.Equal(t, []string{
70		"foo/baz",
71		"foo/zab",
72	}, r.List(INF))
73	assert.Equal(t, []string{
74		"foo/",
75	}, r.ListFolders(INF))
76	_, err := r.FindFolder("mnt/m1")
77	assert.Error(t, err)
78}
79