115 lines
3.2 KiB
Go
115 lines
3.2 KiB
Go
package apitest
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
|
|
"git.artlef.fr/bibliomane/internal/testutils"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestPostCollectionChangePositionHandler_PositionOk(t *testing.T) {
|
|
payload :=
|
|
`{
|
|
"itemId": 14,
|
|
"position": 2
|
|
}`
|
|
collectionId := "5"
|
|
status := testPostCollectionChangePositionHandler(collectionId, payload)
|
|
assert.Equal(t, http.StatusOK, status)
|
|
_, collection := testGetCollection(t, collectionId, "10", "0")
|
|
assert.Equal(t, uint(1), collection.Items[0].Position)
|
|
assert.Equal(t, uint(2), collection.Items[1].Position)
|
|
assert.Equal(t, uint(3), collection.Items[2].Position)
|
|
assert.Equal(t, uint(4), collection.Items[3].Position)
|
|
}
|
|
|
|
func TestPostCollectionChangePositionHandler_ChangeOtherElement(t *testing.T) {
|
|
payload :=
|
|
`{
|
|
"itemId": 17,
|
|
"position": 3
|
|
}`
|
|
collectionId := "5"
|
|
status := testPostCollectionChangePositionHandler(collectionId, payload)
|
|
assert.Equal(t, http.StatusOK, status)
|
|
_, collection := testGetCollection(t, collectionId, "10", "0")
|
|
assert.Equal(t, "Duo", collection.Items[3].Book.Title)
|
|
}
|
|
|
|
func TestPostCollectionChangePositionHandler_LastPosition(t *testing.T) {
|
|
payload :=
|
|
`{
|
|
"itemId": 19,
|
|
"position": 546
|
|
}`
|
|
collectionId := "5"
|
|
status := testPostCollectionChangePositionHandler(collectionId, payload)
|
|
assert.Equal(t, http.StatusOK, status)
|
|
_, collection := testGetCollection(t, collectionId, "10", "0")
|
|
assert.Equal(t, "Recherches philosophiques", collection.Items[7].Book.Title)
|
|
assert.Equal(t, "Le château", collection.Items[6].Book.Title)
|
|
assert.Equal(t, uint(8), collection.Items[7].Position)
|
|
}
|
|
|
|
func TestPostCollectionChangePositionHandler_FirstPosition(t *testing.T) {
|
|
payload :=
|
|
`{
|
|
"itemId": 16,
|
|
"position": 1
|
|
}`
|
|
collectionId := "5"
|
|
status := testPostCollectionChangePositionHandler(collectionId, payload)
|
|
assert.Equal(t, http.StatusOK, status)
|
|
_, collection := testGetCollection(t, collectionId, "10", "0")
|
|
assert.Equal(t, "Duo", collection.Items[0].Book.Title)
|
|
}
|
|
|
|
func TestPostCollectionChangePositionHandler_WrongPosition(t *testing.T) {
|
|
payload :=
|
|
`{
|
|
"itemId": 9,
|
|
"position": 0
|
|
}`
|
|
collectionId := "5"
|
|
status := testPostCollectionChangePositionHandler(collectionId, payload)
|
|
assert.Equal(t, http.StatusBadRequest, status)
|
|
}
|
|
|
|
func TestPostCollectionChangePositionHandler_MissingPosition(t *testing.T) {
|
|
payload :=
|
|
`{
|
|
"itemId": 9
|
|
}`
|
|
collectionId := "5"
|
|
status := testPostCollectionChangePositionHandler(collectionId, payload)
|
|
assert.Equal(t, http.StatusBadRequest, status)
|
|
}
|
|
|
|
func TestPostCollectionChangePositionWrongCollection(t *testing.T) {
|
|
payload :=
|
|
`{
|
|
"itemId": 1,
|
|
"position": 9
|
|
}`
|
|
collectionId := "5"
|
|
status := testPostCollectionChangePositionHandler(collectionId, payload)
|
|
assert.Equal(t, http.StatusInternalServerError, status)
|
|
}
|
|
|
|
func testPostCollectionChangePositionHandler(collectionId string, payload string) int {
|
|
router := testutils.TestSetup()
|
|
w := httptest.NewRecorder()
|
|
|
|
token := testutils.ConnectDemoUser(router)
|
|
req, _ := http.NewRequest("POST", "/ws/collection/"+collectionId+"/changeposition",
|
|
strings.NewReader(payload))
|
|
req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", token))
|
|
router.ServeHTTP(w, req)
|
|
|
|
return w.Code
|
|
}
|