package io

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

	"github.com/stretchr/testify/require"
)

func TestMakeDirForFile_HappyPath(t *testing.T) {
	tempDir, err := ioutil.TempDir("", "test")
	require.NoError(t, err)

	filePath := tempDir + "/testDir/testFile.test"
	err = MakeDirForFile(filePath, "test")
	t.Cleanup(func() {
		removeDir(t, tempDir)
	})
	require.NoError(t, err)

	_, errChDir := os.Create(filePath)
	require.NoError(t, errChDir)
}

func removeDir(t *testing.T, dirName string) {
	err := os.RemoveAll(dirName)
	require.NoError(t, err)
}

func TestMakeDirForFile_Negative(t *testing.T) {
	file, err := ioutil.TempFile("", "test")
	require.NoError(t, err)

	filePath := file.Name() + "/error"
	dir := path.Dir(filePath)
	err = MakeDirForFile(filePath, "test")
	t.Cleanup(func() {
		removeDir(t, dir)
	})
	require.Errorf(t, err, "could not create dir for test: mkdir %s : not a directory", filePath)
}