feat: save hosts file

This commit is contained in:
Philip Henning 2025-08-14 10:09:30 +02:00
parent e59af1cb02
commit e813704f81
6 changed files with 60 additions and 23 deletions

View file

@ -1,6 +1,7 @@
package tests
import (
"os"
"strings"
"testing"
@ -19,7 +20,7 @@ func TestModelSelection(t *testing.T) {
hf, _, err := core.ParseHostsContent(lines)
require.NoError(t, err)
m := tui.NewModel(hf)
m := tui.NewModel(hf, "")
require.NotNil(t, m.SelectedEntry())
assert.Equal(t, "localhost", m.SelectedEntry().Hostname)
@ -36,7 +37,7 @@ func TestViewModeStatusBar(t *testing.T) {
hf, _, err := core.ParseHostsContent(lines)
require.NoError(t, err)
m := tui.NewModel(hf)
m := tui.NewModel(hf, "")
nm, _ := m.Update(tea.WindowSizeMsg{Width: 80, Height: 20})
m = nm.(tui.Model)
view := m.View()
@ -52,7 +53,7 @@ func TestPaneSwitching(t *testing.T) {
hf, _, err := core.ParseHostsContent(lines)
require.NoError(t, err)
m := tui.NewModel(hf)
m := tui.NewModel(hf, "")
// Switch focus to detail pane
nm, _ := m.Update(tea.KeyMsg{Type: tea.KeyTab})
m = nm.(tui.Model)
@ -69,7 +70,7 @@ func TestEditModeToggleAndActivation(t *testing.T) {
hf, _, err := core.ParseHostsContent(lines)
require.NoError(t, err)
m := tui.NewModel(hf)
m := tui.NewModel(hf, "")
// enter edit mode
nm, _ := m.Update(tea.KeyMsg{Type: tea.KeyCtrlE})
@ -85,3 +86,27 @@ func TestEditModeToggleAndActivation(t *testing.T) {
view := m.View()
assert.Contains(t, view, "EDIT MODE")
}
func TestSaveWritesToFile(t *testing.T) {
content := "127.0.0.1 localhost\n192.168.1.10 example.com\n"
tmp, err := os.CreateTemp(t.TempDir(), "hosts")
require.NoError(t, err)
_, err = tmp.WriteString(content)
require.NoError(t, err)
require.NoError(t, tmp.Close())
hf, _, err := core.ParseHostsFile(tmp.Name())
require.NoError(t, err)
m := tui.NewModel(hf, tmp.Name())
nm, _ := m.Update(tea.KeyMsg{Type: tea.KeyCtrlE})
m = nm.(tui.Model)
nm, _ = m.Update(tea.KeyMsg{Type: tea.KeySpace})
m = nm.(tui.Model)
_, _ = m.Update(tea.KeyMsg{Type: tea.KeyCtrlS})
saved, _, err := core.ParseHostsFile(tmp.Name())
require.NoError(t, err)
assert.False(t, saved.Entries[0].Active)
}