Skip to content
Snippets Groups Projects
lighthouse_test.go 3.08 KiB
package watch

import (
	"errors"
	"os"
	"testing"

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

func TestAddWatch(t *testing.T) {
	tempDir, err := os.MkdirTemp("", "watchtest")
	assert.Nil(t, err)
	defer func() {
		_ = os.RemoveAll(tempDir) // Cleanup
	}()

	l := NewLighthouse()

	w := &Watch{Path: tempDir}
	err = l.Add(w)
	assert.Nil(t, err)

	err = l.Add(w)
	assert.True(t, errors.As(err, &AlreadyWatchedPathError{}))
}

func TestRemoveWatch(t *testing.T) {
	tempDir, err := os.MkdirTemp("", "watchtest")
	assert.Nil(t, err)
	defer func() {
		_ = os.RemoveAll(tempDir) // Cleanup
	}()

	l := NewLighthouse()

	w := &Watch{Path: tempDir}
	err = l.Add(w)
	assert.Nil(t, err)

	err = l.Remove(tempDir)
	assert.Nil(t, err)

	err = l.Remove("path/not/watched")
	assert.True(t, errors.As(err, &UnwatchedPathError{}))
}

func TestNewLighthouse(t *testing.T) {
	l := NewLighthouse()
	assert.NotNil(t, l)
	assert.True(t, l.IsActive())
}

func TestIsWatched(t *testing.T) {
	tempDir, err := os.MkdirTemp("", "watchtest")
	assert.Nil(t, err)
	defer func() {
		_ = os.RemoveAll(tempDir) // Cleanup
	}()

	l := NewLighthouse()

	w := &Watch{Path: tempDir}
	err = l.Add(w)
	assert.Nil(t, err)

	assert.True(t, l.IsWatched(tempDir))
	assert.False(t, l.IsWatched("path/not/watched"))
}