Quellcode durchsuchen

Added test coverage for cmd/pingo.go

arianagiroux vor 1 Woche
Ursprung
Commit
41a3dcd277
2 geänderte Dateien mit 92 neuen und 1 gelöschten Zeilen
  1. 1 1
      cmd/pingo.go
  2. 91 0
      cmd/pingo_test.go

+ 1 - 1
cmd/pingo.go

@@ -93,7 +93,7 @@ func (m md) View() tea.View {
 func (m md) header() string { return titleStyle.Width(m.viewport.Width()).Render("pingo v0") }
 
 func (m md) footer() string {
-	return footerStyle.Width(m.viewport.Width()).Render("j/k: down/up\t|\tq/ctrl-c/esc: quit")
+	return footerStyle.Width(m.viewport.Width()).Render("j/k: down/up\t|\tctrl+c: quit")
 }
 
 func (m md) getVerticalMargin() int { return lipgloss.Height(m.header() + m.footer()) }

+ 91 - 0
cmd/pingo_test.go

@@ -0,0 +1,91 @@
+package main
+
+import (
+	"pingo"
+	"strings"
+	"testing"
+	"time"
+
+	tea "charm.land/bubbletea/v2"
+	"charm.land/lipgloss/v2"
+	"github.com/stretchr/testify/assert"
+)
+
+func spawnMD(hosts []string, width, height, chartHeight int) md {
+	return md{p: pingo.InitialModel(hosts, width, height, chartHeight)}
+}
+
+func Test_md_Init(t *testing.T) {
+	testMD := spawnMD([]string{"127.0.0.1"}, 40, 20, 10)
+	cmd := testMD.Init()
+	assert.IsType(t, *new(timingMsg), cmd())
+}
+
+func Test_md_Update_handle_windowsize(t *testing.T) {
+	testMsg := tea.WindowSizeMsg{Width: 80, Height: 80}
+	testMD := spawnMD([]string{"127.0.0.1"}, 40, 20, 10)
+
+	assert.Equal(t, 40, testMD.p.Width)
+	assert.Equal(t, 20, testMD.p.Height)
+	assert.Equal(t, 0, testMD.viewport.Width())
+	assert.Equal(t, 0, testMD.viewport.Height())
+
+	model, cmd := testMD.Update(testMsg)
+	assert.Nil(t, cmd)
+	assert.Equal(t, 80, model.(md).p.Width)
+	assert.Equal(t, 80-2, model.(md).p.Height)
+}
+
+func Test_md_Update_handle_keymsg(t *testing.T) {
+	testKeyMsg := tea.KeyPressMsg(tea.Key{Text: "ctrl+c"})
+	// getTestKey := func() tea.Msg { return testKey }
+	testMD := spawnMD([]string{"127.0.0.1"}, 40, 20, 10)
+
+	var cmd tea.Cmd
+	_, cmd = testMD.Update(testKeyMsg)
+	assert.NotNil(t, cmd)
+	assert.IsType(t, *new(tea.QuitMsg), cmd())
+}
+func Test_md_Update_handle_timing(t *testing.T) {
+	testMD := spawnMD([]string{"127.0.0.1"}, 40, 20, 10)
+	_, cmd := testMD.Update(tea.Msg(timingMsg{}))
+	assert.NotNil(t, cmd)
+	assert.IsType(t, *new(tea.BatchMsg), cmd())
+
+	batch := []tea.Cmd(cmd().(tea.BatchMsg))
+	assert.True(t, len(batch) == 2)
+	for _, cmd := range batch {
+		if value, ok := cmd().(timingMsg); ok {
+			assert.WithinDuration(t, time.Now(), time.Time(value), time.Second*1)
+		}
+	}
+}
+
+func Test_md_View(t *testing.T) {
+	testMD := spawnMD([]string{"127.0.0.1"}, 40, 20, 10)
+	view := testMD.View()
+
+	assert.True(t, strings.Contains(view.Content, testMD.header()))
+	assert.True(t, strings.Contains(view.Content, testMD.footer()))
+	assert.True(t, strings.Contains(view.Content, testMD.viewport.GetContent()))
+}
+
+func Test_md_header(t *testing.T) {
+	testMD := spawnMD([]string{"127.0.0.1"}, 40, 20, 10)
+	testData := testMD.header()
+	assert.IsType(t, *new(string), testData)
+	assert.True(t, lipgloss.Width(testData) > 1)
+	assert.True(t, strings.Contains(testData, "pingo"))
+}
+func Test_md_footer(t *testing.T) {
+	testMD := spawnMD([]string{"127.0.0.1"}, 40, 20, 10)
+	testData := testMD.footer()
+	assert.IsType(t, *new(string), testData)
+	assert.True(t, lipgloss.Width(testData) > 1)
+	assert.True(t, strings.Contains(testData, "j/k: down/up"), testData)
+	assert.True(t, strings.Contains(testData, "ctrl+c: quit"), testData)
+}
+func Test_md_getVerticalMargin(t *testing.T) {
+	testMD := spawnMD([]string{"127.0.0.1"}, 40, 20, 10)
+	assert.Equal(t, lipgloss.Height(testMD.header()+testMD.footer()), testMD.getVerticalMargin())
+}