Files
uptimemonitor/test/home_test.go
2025-08-01 18:01:55 +02:00

63 lines
1.3 KiB
Go

package test
import (
"net/http"
"testing"
"uptimemonitor"
)
func TestHome(t *testing.T) {
t.Run("setup is required to access home page", func(t *testing.T) {
tc := NewTestCase(t)
defer tc.Close()
tc.Get("/").AssertRedirect(http.StatusSeeOther, "/setup")
})
t.Run("guests cannot access home page", func(t *testing.T) {
tc := NewTestCase(t)
defer tc.Close()
tc.CreateTestUser("test@example.com", "password")
tc.Get("/").AssertRedirect(http.StatusSeeOther, "/login")
})
t.Run("monitors are displayed on home page", func(t *testing.T) {
tc := NewTestCase(t)
defer tc.Close()
tc.Store.CreateMonitor(t.Context(), uptimemonitor.Monitor{
Url: "https://example.com",
})
tc.LogIn().
Get("/").
AssertStatusCode(http.StatusOK).
AssertElementVisible(`[hx-get="/monitors"]`)
})
t.Run("incidents are displayed on home page", func(t *testing.T) {
tc := NewTestCase(t)
defer tc.Close()
tc.Store.CreateMonitor(t.Context(), uptimemonitor.Monitor{
Url: "https://example.com",
})
tc.LogIn().
Get("/").
AssertStatusCode(http.StatusOK).
AssertElementVisible(`[hx-get="/incidents"]`)
})
t.Run("if there are no monitors, user is redirected to the new page", func(t *testing.T) {
tc := NewTestCase(t)
defer tc.Close()
tc.LogIn().
Get("/").
AssertRedirect(http.StatusSeeOther, "/new")
})
}