gui/pkg/window/layout_test.go
Snider e83d2559bb
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Add missing GUI unit coverage
2026-04-15 23:17:52 +01:00

59 lines
1.7 KiB
Go

package window
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestLayoutManager_SaveLayout_Good(t *testing.T) {
lm := NewLayoutManagerWithDir(t.TempDir())
windows := map[string]WindowState{
"editor": {X: 0, Y: 0, Width: 960, Height: 1080},
"terminal": {X: 960, Y: 0, Width: 960, Height: 540},
}
require.NoError(t, lm.SaveLayout("coding", windows))
layout, ok := lm.GetLayout("coding")
require.True(t, ok)
assert.Equal(t, "coding", layout.Name)
assert.Len(t, layout.Windows, 2)
assert.NotZero(t, layout.CreatedAt)
assert.NotZero(t, layout.UpdatedAt)
infos := lm.ListLayouts()
require.Len(t, infos, 1)
assert.Equal(t, "coding", infos[0].Name)
assert.Equal(t, 2, infos[0].WindowCount)
lm.DeleteLayout("coding")
_, ok = lm.GetLayout("coding")
assert.False(t, ok)
}
func TestLayoutManager_SaveLayout_Bad(t *testing.T) {
lm := NewLayoutManagerWithDir(t.TempDir())
err := lm.SaveLayout("", map[string]WindowState{"main": {Width: 1}})
require.Error(t, err)
assert.Contains(t, err.Error(), "layout name cannot be empty")
}
func TestLayoutManager_SaveLayout_Ugly(t *testing.T) {
lm := NewLayoutManagerWithDir(t.TempDir())
require.NoError(t, lm.SaveLayout("coding", map[string]WindowState{"main": {Width: 800}}))
first, ok := lm.GetLayout("coding")
require.True(t, ok)
time.Sleep(2 * time.Millisecond)
require.NoError(t, lm.SaveLayout("coding", map[string]WindowState{"main": {Width: 1024}}))
second, ok := lm.GetLayout("coding")
require.True(t, ok)
assert.Equal(t, first.CreatedAt, second.CreatedAt)
assert.Greater(t, second.UpdatedAt, first.UpdatedAt)
assert.Equal(t, 1024, second.Windows["main"].Width)
}