fixed filtering on connected user

added tests and updated demo data
This commit is contained in:
2025-10-08 15:55:25 +02:00
parent c9991118ee
commit 1cc7881ff0
3 changed files with 41 additions and 8 deletions

View File

@@ -31,6 +31,19 @@ func connectDemoUser(router *gin.Engine) string {
"username": "demo", "username": "demo",
"password":"demopw" "password":"demopw"
}` }`
return connectUser(router, loginJson)
}
func connectDemo2User(router *gin.Engine) string {
loginJson :=
`{
"username": "demo2",
"password":"demopw"
}`
return connectUser(router, loginJson)
}
func connectUser(router *gin.Engine, loginJson string) string {
w := httptest.NewRecorder() w := httptest.NewRecorder()
req, _ := http.NewRequest("POST", "/auth/login", strings.NewReader(loginJson)) req, _ := http.NewRequest("POST", "/auth/login", strings.NewReader(loginJson))
router.ServeHTTP(w, req) router.ServeHTTP(w, req)
@@ -48,13 +61,27 @@ type bookUserGet struct {
Rating int `json:"rating" binding:"min=0,max=10"` Rating int `json:"rating" binding:"min=0,max=10"`
} }
func TestGetBooksHandler(t *testing.T) { func TestGetBooksHandler_Demo(t *testing.T) {
router := testSetup() router := testSetup()
w := httptest.NewRecorder()
token := connectDemoUser(router) token := connectDemoUser(router)
books := testGetbooksHandler(t, router, token, 200)
assert.Equal(t, 26, len(books))
}
func TestGetBooksHandler_Demo2(t *testing.T) {
router := testSetup()
token := connectDemo2User(router)
books := testGetbooksHandler(t, router, token, 200)
assert.Equal(t, 2, len(books))
}
func testGetbooksHandler(t *testing.T, router *gin.Engine, userToken string, expectedCode int) []bookUserGet {
req, _ := http.NewRequest("GET", "/mybooks", nil) req, _ := http.NewRequest("GET", "/mybooks", nil)
req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", token)) req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", userToken))
w := httptest.NewRecorder()
router.ServeHTTP(w, req) router.ServeHTTP(w, req)
var parsedResponse []bookUserGet var parsedResponse []bookUserGet
@@ -62,8 +89,8 @@ func TestGetBooksHandler(t *testing.T) {
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
assert.Equal(t, 200, w.Code) assert.Equal(t, expectedCode, w.Code)
assert.Equal(t, 28, len(parsedResponse)) return parsedResponse
} }
func TestPostBookHandler_Ok(t *testing.T) { func TestPostBookHandler_Ok(t *testing.T) {

View File

@@ -1,4 +1,5 @@
INSERT INTO users(created_at, name, password) VALUES ('NOW', 'demo','$2a$10$7mfCBxBwIzXDU6r9az26o.zPX/r6IlNZVfU9zxSoLVtc0kRPimzba'); INSERT INTO users(created_at, name, password) VALUES ('NOW', 'demo','$2a$10$7mfCBxBwIzXDU6r9az26o.zPX/r6IlNZVfU9zxSoLVtc0kRPimzba');
INSERT INTO users(created_at, name, password) VALUES ('NOW', 'demo2','$2a$10$7mfCBxBwIzXDU6r9az26o.zPX/r6IlNZVfU9zxSoLVtc0kRPimzba');
INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'O dingos, o chateaux!','Jean-Patrick Manchette', (SELECT id FROM users WHERE name = 'demo')); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'O dingos, o chateaux!','Jean-Patrick Manchette', (SELECT id FROM users WHERE name = 'demo'));
INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'O dingos, o chateaux!') ,7); INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'O dingos, o chateaux!') ,7);
INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Le petit bleu de la côte Ouest','Jean-Patrick Manchette', (SELECT id FROM users WHERE name = 'demo')); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Le petit bleu de la côte Ouest','Jean-Patrick Manchette', (SELECT id FROM users WHERE name = 'demo'));
@@ -34,13 +35,13 @@ INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELE
INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Le coup de pistolet','Alexandre Pouchkine', (SELECT id FROM users WHERE name = 'demo')); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Le coup de pistolet','Alexandre Pouchkine', (SELECT id FROM users WHERE name = 'demo'));
INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Le coup de pistolet'),8); INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Le coup de pistolet'),8);
INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'De sang-froid','Truman Capote', (SELECT id FROM users WHERE name = 'demo')); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'De sang-froid','Truman Capote', (SELECT id FROM users WHERE name = 'demo'));
INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'De sang-froid'),6); INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo2'),(SELECT id FROM books WHERE title = 'De sang-froid'),6);
INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'La position du tireur couché','Jean-Patrick Manchette', (SELECT id FROM users WHERE name = 'demo')); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'La position du tireur couché','Jean-Patrick Manchette', (SELECT id FROM users WHERE name = 'demo'));
INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'La position du tireur couché'),6); INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'La position du tireur couché'),6);
INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Vers le Phare','Virginia Woolf', (SELECT id FROM users WHERE name = 'demo')); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Vers le Phare','Virginia Woolf', (SELECT id FROM users WHERE name = 'demo'));
INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Vers le Phare'),6); INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Vers le Phare'),6);
INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'L''insoutenable légèreté de l''être', 'Milan Kundera', (SELECT id FROM users WHERE name = 'demo')); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'L''insoutenable légèreté de l''être', 'Milan Kundera', (SELECT id FROM users WHERE name = 'demo'));
INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'L''insoutenable légèreté de l''être') ,8); INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo2'),(SELECT id FROM books WHERE title = 'L''insoutenable légèreté de l''être') ,8);
INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Le complot contre l''Amérique','Philip Roth', (SELECT id FROM users WHERE name = 'demo')); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Le complot contre l''Amérique','Philip Roth', (SELECT id FROM users WHERE name = 'demo'));
INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Le complot contre l''Amérique'),6); INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Le complot contre l''Amérique'),6);
INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Nord','Louis-Ferdinand Céline', (SELECT id FROM users WHERE name = 'demo')); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Nord','Louis-Ferdinand Céline', (SELECT id FROM users WHERE name = 'demo'));

View File

@@ -15,7 +15,12 @@ import (
func GetMyBooksHanderl(c *gin.Context, db *gorm.DB) { func GetMyBooksHanderl(c *gin.Context, db *gorm.DB) {
var userbooks []model.UserBook var userbooks []model.UserBook
db.Preload("Book").Find(&userbooks) user, err := getAuthenticatedUser(c, db)
if err != nil {
manageDefaultError(c, err)
return
}
db.Preload("Book").Where("user_id = ?", user.ID).Find(&userbooks)
var booksDto []bookUserGet var booksDto []bookUserGet
for _, userbook := range userbooks { for _, userbook := range userbooks {
booksDto = append(booksDto, fromUserBookDb(&userbook)) booksDto = append(booksDto, fromUserBookDb(&userbook))