zord-tree/tree_test.go

163 lines
4.2 KiB
Go
Raw Normal View History

2021-05-04 20:26:41 +00:00
package zord_tree
import (
cp "github.com/otiai10/copy"
2021-05-12 04:56:36 +00:00
"io/ioutil"
2021-05-04 20:26:41 +00:00
"os"
2021-05-12 04:56:36 +00:00
"strings"
2021-05-04 20:26:41 +00:00
"testing"
)
func TestFromNotExistingDirectory(t *testing.T) {
2021-05-09 18:17:07 +00:00
_, err := BuildTree("./testing/i_dont_exist", []string{})
2021-05-04 20:26:41 +00:00
if err == nil {
t.Error("Not existing directory should return error, got NIL.")
}
}
func TestSunny(t *testing.T) {
err := os.Remove("./testdata/sunny1")
if err != nil {
}
err = cp.Copy("./testdata/sunny", "./testdata/sunny1")
if err != nil {
t.Fatal("Couldn't prepare data for testing")
}
2021-05-09 18:17:07 +00:00
tree, err := BuildTree("./testdata/sunny1", []string{})
2021-05-04 20:26:41 +00:00
if err != nil {
t.Errorf("Got error: %v", err)
}
if len(tree.dirs) != 1 {
t.Errorf("Should be 1 subdirectory, got %v", len(tree.dirs))
}
if tree.dirs[0].files[0].name != "file3.md" {
t.Errorf("File should be 'file3.md', got %v", tree.dirs[0].files[0].name)
}
if tree.files[0].name != "file1.md" {
t.Errorf("File should be 'file1.md', got %v", tree.files[0].name)
}
if len(tree.files[0].tags) != 2 {
t.Errorf("File 'file1.md' should have 2 tags, got %v", len(tree.files[0].tags))
}
if tree.files[0].tags[1] != "t2" {
t.Errorf("File 'file1.md' 2nd tag 't2', got %v", tree.files[0].tags[1])
}
t.Log(tree)
2021-05-09 18:17:07 +00:00
}
func TestMeta(t *testing.T) {
err := os.Remove("./testdata/sunny1")
if err != nil {
}
err = cp.Copy("./testdata/sunny", "./testdata/sunny1")
if err != nil {
t.Fatal("Couldn't prepare data for testing")
}
meta := []string{"option1", "option2"}
tree, err := BuildTree("./testdata/sunny1", meta)
if err != nil {
t.Errorf("Got error: %v", err)
}
if tree.files[0].name != "file1.md" {
t.Errorf("File should be 'file1.md', got %v", tree.files[0].name)
}
if tree.files[0].meta["option1"] != "test option" {
t.Error("File 'file1.md' should have 'option1' with value 'test option'")
}
2021-05-11 22:10:18 +00:00
}
func TestId(t *testing.T) {
err := os.Remove("./testdata/sunny1")
if err != nil {
}
err = os.Remove("./testdata/sunny2")
if err != nil {
}
err = cp.Copy("./testdata/sunny", "./testdata/sunny1")
if err != nil {
t.Fatal("Couldn't prepare data for testing")
}
2021-05-12 04:56:36 +00:00
err = PopulateTree("./testdata/sunny1", "./testdata/sunny2", []string{})
if err != nil {
t.Fatal("Population ended in err:", err)
}
b, err := ioutil.ReadFile("./testdata/sunny2/file1.md")
if err != nil {
t.Fatal("No destination file 'file1.md'.")
}
str := string(b)
if !strings.Contains(str, "\nid: 1\n") {
t.Fatal("No id in file 'file1.md'.")
}
b, err = ioutil.ReadFile("./testdata/sunny2/subcategory/file3.md")
if err != nil {
t.Fatal("No destination file 'substring/file3.md'.")
}
str = string(b)
if !strings.Contains(str, "\nid: 3\n") {
t.Fatal("No id in file 'file3.md'.")
}
2021-05-11 22:10:18 +00:00
}
func TestMissingOptions(t *testing.T) {
err := os.Remove("./testdata/sunny1")
if err != nil {
}
err = os.Remove("./testdata/sunny2")
if err != nil {
}
err = cp.Copy("./testdata/sunny", "./testdata/sunny1")
if err != nil {
t.Fatal("Couldn't prepare data for testing")
}
2021-05-12 04:56:36 +00:00
err = PopulateTree("./testdata/sunny1", "./testdata/sunny2", []string{"option1", "option2"})
if err != nil {
t.Fatal("Population ended in err:", err)
}
b, err := ioutil.ReadFile("./testdata/sunny2/file1.md")
if err != nil {
t.Fatal("No destination file 'file1.md'.")
}
str := string(b)
if !strings.Contains(str, "\noption1: test option\n") {
t.Fatal("Changed old value for 'option1' in file 'file1.md'.")
}
if !strings.Contains(str, "\noption2: \n") {
t.Fatal("'option2' has not been added to file 'file1.md'.")
}
b, err = ioutil.ReadFile("./testdata/sunny2/file2.md")
if err != nil {
t.Fatal("No destination file 'file2.md'.")
}
str = string(b)
if !strings.Contains(str, "\noption1: \n") {
t.Fatal("'option1' has not been added to file 'file2.md'.")
}
if !strings.Contains(str, "\noption2: \n") {
t.Fatal("'option2' has not been added to file 'file2.md'.")
}
b, err = ioutil.ReadFile("./testdata/sunny2/subcategory/file3.md")
if err != nil {
t.Fatal("No destination file 'substring/file3.md'.")
}
str = string(b)
if !strings.Contains(str, "\noption1: \n") {
t.Fatal("'option1' has not been added to file 'file3.md'.")
}
if !strings.Contains(str, "\noption2: it exists\n") {
t.Fatal("Changed old value for 'option2' in file 'file3.md'.")
}
2021-05-11 22:10:18 +00:00
}