package filemanager

import (
	"io/ioutil"
	"os"
	"path/filepath"
	"testing"

	"github.com/hacdias/fileutils"
)

type test struct {
	*FileManager
	Temp string
}

func (t test) Clean() {
	t.db.Close()
	os.RemoveAll(t.Temp)
}

func newTest(t *testing.T) *test {
	temp, err := ioutil.TempDir("", t.Name())
	if err != nil {
		t.Fatalf("Error creating temporary directory: %v", err)
	}

	scope := filepath.Join(temp, "scope")
	database := filepath.Join(temp, "database.db")

	err = fileutils.CopyDir("./testdata", scope)
	if err != nil {
		t.Fatalf("Error copying the test data: %v", err)
	}

	user := DefaultUser
	user.FileSystem = fileutils.Dir(scope)

	fm, err := New(database, user)

	if err != nil {
		t.Fatalf("Error creating a file manager instance: %v", err)
	}

	return &test{
		FileManager: fm,
		Temp:        temp,
	}
}