From 1dd8eb0cd7acbd33fdddc48c2a9ffabe208f3ddf Mon Sep 17 00:00:00 2001 From: mikestefanello Date: Fri, 24 Dec 2021 09:03:10 -0500 Subject: [PATCH] Added tests or htmx package. --- htmx/htmx.go | 4 ++++ htmx/htmx_test.go | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 htmx/htmx_test.go diff --git a/htmx/htmx.go b/htmx/htmx.go index cb78910..3ecc2fd 100644 --- a/htmx/htmx.go +++ b/htmx/htmx.go @@ -22,6 +22,7 @@ const ( ) type ( + // Request contains data that HTMX provides during requests Request struct { Enabled bool Boosted bool @@ -31,6 +32,7 @@ type ( Prompt string } + // Response contain data that the server can communicate back to HTMX Response struct { Push string Redirect string @@ -42,6 +44,7 @@ type ( } ) +// GetRequest extracts HTMX data from the request func GetRequest(ctx echo.Context) Request { return Request{ Enabled: ctx.Request().Header.Get(HeaderRequest) == "true", @@ -53,6 +56,7 @@ func GetRequest(ctx echo.Context) Request { } } +// Apply applies data from a Response to a server response func (r Response) Apply(ctx echo.Context) { if r.Push != "" { ctx.Response().Header().Set(HeaderPush, r.Push) diff --git a/htmx/htmx_test.go b/htmx/htmx_test.go new file mode 100644 index 0000000..09a957f --- /dev/null +++ b/htmx/htmx_test.go @@ -0,0 +1,52 @@ +package htmx + +import ( + "net/http" + "testing" + + "goweb/tests" + + "github.com/stretchr/testify/assert" + + "github.com/labstack/echo/v4" +) + +func TestSetRequest(t *testing.T) { + ctx, _ := tests.NewContext(echo.New(), "/") + ctx.Request().Header.Set(HeaderRequest, "true") + ctx.Request().Header.Set(HeaderBoosted, "true") + ctx.Request().Header.Set(HeaderTrigger, "a") + ctx.Request().Header.Set(HeaderTriggerName, "b") + ctx.Request().Header.Set(HeaderTarget, "c") + ctx.Request().Header.Set(HeaderPrompt, "d") + + r := GetRequest(ctx) + assert.Equal(t, true, r.Enabled) + assert.Equal(t, true, r.Boosted) + assert.Equal(t, "a", r.Trigger) + assert.Equal(t, "b", r.TriggerName) + assert.Equal(t, "c", r.Target) + assert.Equal(t, "d", r.Prompt) +} + +func TestResponse_Apply(t *testing.T) { + ctx, _ := tests.NewContext(echo.New(), "/") + r := Response{ + Push: "a", + Redirect: "b", + Refresh: true, + Trigger: "c", + TriggerAfterSwap: "d", + TriggerAfterSettle: "e", + NoContent: true, + } + r.Apply(ctx) + + assert.Equal(t, "a", ctx.Response().Header().Get(HeaderPush)) + assert.Equal(t, "b", ctx.Response().Header().Get(HeaderRedirect)) + assert.Equal(t, "true", ctx.Response().Header().Get(HeaderRefresh)) + assert.Equal(t, "c", ctx.Response().Header().Get(HeaderTrigger)) + assert.Equal(t, "d", ctx.Response().Header().Get(HeaderTriggerAfterSwap)) + assert.Equal(t, "e", ctx.Response().Header().Get(HeaderTriggerAfterSettle)) + assert.Equal(t, http.StatusNoContent, ctx.Response().Status) +}