Skip to content

Commit

Permalink
in-progress, refactor db files and integration tests (#141)
Browse files Browse the repository at this point in the history
Co-authored-by: Leland Garofalo <[email protected]>
  • Loading branch information
lgarofalo and Leland Garofalo authored Sep 25, 2024
1 parent 68541dc commit ef6b089
Show file tree
Hide file tree
Showing 26 changed files with 1,758 additions and 1,569 deletions.
81 changes: 81 additions & 0 deletions cmd/sheltertech-go/bookmarks_integration_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
//go:build integration
// +build integration

// go test -tags=integration

package main

import (
"encoding/json"
"io/ioutil"
"net/http"
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/sheltertechsf/sheltertech-go/internal/common"
)

func init() {
setIntegrationTestEnv()
go main()
}

const bookmarkUrl = "http://localhost:3001/api/bookmarks"

func TestGetBookmarksBadRequest(t *testing.T) {
res, err := http.Get(bookmarkUrl + "?user_id=a")
require.NoError(t, err)
defer res.Body.Close()

body, err := ioutil.ReadAll(res.Body)
require.NoError(t, err)

serviceResponse := new(common.Error)
err = json.Unmarshal(body, serviceResponse)
require.NoError(t, err)

assert.Equal(t, serviceResponse.StatusCode, http.StatusBadRequest, "Response contains a 400")
assert.NotEmpty(t, serviceResponse.Error, "Response has some error message")
}

func TestGetBookmarkByIDError(t *testing.T) {
res, err := http.Get(bookmarkUrl + "/0")
require.NoError(t, err)
defer res.Body.Close()

body, err := ioutil.ReadAll(res.Body)
require.NoError(t, err)

serviceResponse := new(common.Error)
err = json.Unmarshal(body, serviceResponse)
require.NoError(t, err)

assert.Equal(t, serviceResponse.StatusCode, http.StatusInternalServerError, "Response contains a 400")
assert.Equal(t, serviceResponse.Error, common.InternalServerErrorMessage)
}

func TestUnauthorized(t *testing.T) {
t.Skip("skipping until this is supported in dev")

res, err := http.Get(bookmarkUrl)
require.NoError(t, err)
defer res.Body.Close()

require.Equal(t, http.StatusUnauthorized, res.StatusCode)
}

func TestAuthorized(t *testing.T) {
t.Skip("skipping until this is supported in dev")

req, err := http.NewRequest(http.MethodGet, bookmarkUrl, nil)
require.NoError(t, err)
req.Header.Set("Authorization", "Bearer k")

res, err := http.DefaultClient.Do(req)
require.NoError(t, err)
defer res.Body.Close()

require.Equal(t, http.StatusOK, res.StatusCode)
}
92 changes: 92 additions & 0 deletions cmd/sheltertech-go/categories_integration_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
//go:build integration
// +build integration

// go test -tags=integration

package main

import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/sheltertechsf/sheltertech-go/internal/categories"
)

func init() {
setIntegrationTestEnv()
go main()
}

const categoryUrl = "http://localhost:3001/api/categories"

func TestGetCategoriesFeatured(t *testing.T) {
url := categoryUrl + "/featured"

req, err := http.NewRequest("GET", url, nil)
require.NoError(t, err)

res, err := http.DefaultClient.Do(req)
require.NoError(t, err)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

categoriesResponse := new(categories.Categories)

err = json.Unmarshal(body, categoriesResponse)
require.NoError(t, err)

assert.True(t, len(categoriesResponse.Categories) > 0)
}

func TestGetCategories(t *testing.T) {
req, err := http.NewRequest("GET", categoryUrl, nil)
require.NoError(t, err)

res, err := http.DefaultClient.Do(req)
require.NoError(t, err)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

categoriesResponse := &categories.Categories{}

err = json.Unmarshal(body, categoriesResponse)
require.NoError(t, err)

assert.Equal(t, 121, (*categoriesResponse).Categories[0].Id, "12-step ID 121")
assert.Equal(t, "12-Step", (*categoriesResponse).Categories[0].Name, "12-step is the first category ordered by Name")
}

func TestGetCategoryByID(t *testing.T) {
res, err := http.Get(categoryUrl)
require.NoError(t, err)
defer res.Body.Close()

body, err := ioutil.ReadAll(res.Body)
require.NoError(t, err)

categoriesResponse := new(categories.Categories)
err = json.Unmarshal(body, categoriesResponse)
require.NoError(t, err)
require.NotEmpty(t, categoriesResponse.Categories, "Nothing found. Check database connection and baseUrl")

categoryId := categoriesResponse.Categories[0].Id

res, err = http.Get(categoryUrl + "/" + fmt.Sprintf("%d", categoryId))
require.NoError(t, err)
defer res.Body.Close()

body, err = ioutil.ReadAll(res.Body)
require.NoError(t, err)

categoryResponse := new(categories.Category)
err = json.Unmarshal(body, categoryResponse)
require.NoError(t, err)

assert.Equal(t, categoryResponse.Id, categoryId, "Category Id is a match")
}
Loading

0 comments on commit ef6b089

Please sign in to comment.