diff options
| author | mo khan <mo@mokhan.ca> | 2025-04-10 17:35:46 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-04-10 17:35:46 -0600 |
| commit | d8fd76b1c0c0bd86b2114dcf6af0b6e34d4783f3 (patch) | |
| tree | 32d71c0e6a9a0c25789ab90a29ef742001898afc /pkg/web/server_test.go | |
| parent | a722bd0ef4f69547229921eb0fe2eefce3ed6397 (diff) | |
feat: add a single API endpoint to return a list of sparkles
Diffstat (limited to 'pkg/web/server_test.go')
| -rw-r--r-- | pkg/web/server_test.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/pkg/web/server_test.go b/pkg/web/server_test.go new file mode 100644 index 0000000..0281867 --- /dev/null +++ b/pkg/web/server_test.go @@ -0,0 +1,37 @@ +package web + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/xlgmokha/x/pkg/serde" + "gitlab.com/mokhax/sparkled/pkg/db" + "gitlab.com/mokhax/sparkled/pkg/domain" +) + +func TestServer(t *testing.T) { + t.Run("GET /sparkles.json", func(t *testing.T) { + t.Run("returns the list of sparkles", func(t *testing.T) { + sparkle, _ := domain.NewSparkle("@tanuki for helping me") + store := db.NewRepository() + store.Save(sparkle) + + response := httptest.NewRecorder() + request, err := http.NewRequest("GET", "/sparkles.json", nil) + require.NoError(t, err) + NewServer(store).ServeHTTP(response, request) + + assert.Equal(t, http.StatusOK, response.Code) + + items, err := serde.FromJSONAPI[[]*domain.Sparkle](response.Body) + require.NoError(t, err) + + assert.Equal(t, 1, len(items)) + assert.Equal(t, "@tanuki", items[0].Sparklee) + assert.Equal(t, "for helping me", items[0].Reason) + }) + }) +} |
