mirror of
https://github.com/Neur0toxine/demo-web-service-go.git
synced 2024-12-04 18:46:03 +03:00
tests
This commit is contained in:
parent
611a4a4f13
commit
64256a8d2f
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,5 @@
|
||||
build/app
|
||||
vendor
|
||||
.idea
|
||||
coverage.out
|
||||
test-report.txt
|
||||
|
7
Makefile
7
Makefile
@ -26,6 +26,13 @@ deps:
|
||||
@go mod tidy
|
||||
@go mod vendor
|
||||
|
||||
test: clean build
|
||||
@echo "==> Running tests"
|
||||
@go test ./... -v -cpu 2 -race -timeout=30s -coverpkg=./... -coverprofile=$(ROOT_DIR)/coverage.out | tee $(ROOT_DIR)/test-report.txt
|
||||
@cd / && go install github.com/axw/gocov/gocov@v1.0.0
|
||||
@gocov convert $(ROOT_DIR)/coverage.out | gocov report
|
||||
@go mod tidy
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
ifneq ($(wildcard $(ROOT_DIR)/vendor/.*),)
|
||||
|
0
build/.gitkeep
Normal file
0
build/.gitkeep
Normal file
@ -9,7 +9,7 @@ func Authors() (authors []model.Author) {
|
||||
authors = make([]model.Author, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
authors[i] = model.Author{
|
||||
ID: uint64(i),
|
||||
ID: uint64(i + 1),
|
||||
FirstName: gofakeit.FirstName(),
|
||||
LastName: gofakeit.LastName(),
|
||||
Books: Books(),
|
||||
|
@ -12,7 +12,7 @@ func Books() (books []model.Book) {
|
||||
books = make([]model.Book, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
books[i] = model.Book{
|
||||
ID: uint64(i),
|
||||
ID: uint64(i + 1),
|
||||
Name: gofakeit.Phrase(),
|
||||
PublicationDate: time.Now(),
|
||||
Rate: uint8(rand.Intn(5)),
|
||||
|
4
go.mod
4
go.mod
@ -5,9 +5,11 @@ go 1.17
|
||||
require (
|
||||
github.com/brianvoe/gofakeit/v6 v6.7.1
|
||||
github.com/gin-gonic/gin v1.7.4
|
||||
github.com/stretchr/testify v1.7.0
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/gin-contrib/sse v0.1.0 // indirect
|
||||
github.com/go-playground/locales v0.14.0 // indirect
|
||||
github.com/go-playground/universal-translator v0.18.0 // indirect
|
||||
@ -18,10 +20,12 @@ require (
|
||||
github.com/mattn/go-isatty v0.0.14 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/ugorji/go/codec v1.2.6 // indirect
|
||||
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 // indirect
|
||||
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069 // indirect
|
||||
golang.org/x/text v0.3.6 // indirect
|
||||
google.golang.org/protobuf v1.27.1 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
|
||||
)
|
||||
|
43
handlers_test.go
Normal file
43
handlers_test.go
Normal file
@ -0,0 +1,43 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/Neur0toxine/demo-web-service-go/data/model"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestAuthorsHandler(t *testing.T) {
|
||||
req, err := http.NewRequest(http.MethodGet, "/authors", nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
r := router()
|
||||
rec := httptest.NewRecorder()
|
||||
r.ServeHTTP(rec, req)
|
||||
|
||||
data, err := io.ReadAll(rec.Body)
|
||||
require.NoError(t, err)
|
||||
|
||||
var authors []model.Author
|
||||
require.NoError(t, json.Unmarshal(data, &authors))
|
||||
|
||||
assert.Len(t, authors, 10)
|
||||
|
||||
for _, author := range authors {
|
||||
assert.NotEmpty(t, author.ID)
|
||||
assert.NotEmpty(t, author.FirstName)
|
||||
assert.NotEmpty(t, author.LastName)
|
||||
assert.Len(t, author.Books, 10)
|
||||
|
||||
for _, book := range author.Books {
|
||||
assert.NotEmpty(t, book.ID)
|
||||
assert.NotEmpty(t, book.Name)
|
||||
assert.NotEmpty(t, book.PublicationDate)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user