docs: add integration test run instructions to README.md
- Added section 8 'Тестирование' with run instructions, structure, features, and diagnostics - Also includes test file route path adjustments and import reordering
This commit is contained in:
@@ -1,16 +1,14 @@
|
||||
package integration
|
||||
|
||||
import (
|
||||
"api_yal/tests/testutils"
|
||||
"fmt"
|
||||
"testing"
|
||||
"api_yal/tests/testutils"
|
||||
)
|
||||
|
||||
// TestObjectEndpoints тестирует все эндпоинты для работы с объектами (местами, заведениями)
|
||||
// Включает создание, получение, обновление, удаление объектов, поиск и геопоиск
|
||||
func TestObjectEndpoints(t *testing.T) {
|
||||
config := testutils.NewTestConfig()
|
||||
|
||||
// CreateObject тестирует создание нового объекта пользователем
|
||||
t.Run("CreateObject", func(t *testing.T) {
|
||||
user := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user)
|
||||
@@ -55,14 +53,13 @@ func TestObjectEndpoints(t *testing.T) {
|
||||
}
|
||||
})
|
||||
|
||||
// GetObjectByID тестирует получение объекта по ID
|
||||
t.Run("GetObjectByID", func(t *testing.T) {
|
||||
user := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user)
|
||||
|
||||
objectID := config.CreateTestObject(t, user.Token)
|
||||
|
||||
resp, err := config.Request("GET", "/objects/"+string(rune(objectID)), nil, "")
|
||||
resp, err := config.Request("GET", "/objects/"+fmt.Sprintf("%d", objectID), nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get object: %v", err)
|
||||
}
|
||||
@@ -82,7 +79,6 @@ func TestObjectEndpoints(t *testing.T) {
|
||||
}
|
||||
})
|
||||
|
||||
// GetNonExistentObject тестирует получение несуществующего объекта
|
||||
t.Run("GetNonExistentObject", func(t *testing.T) {
|
||||
resp, err := config.Request("GET", "/objects/999999", nil, "")
|
||||
if err != nil {
|
||||
@@ -95,7 +91,6 @@ func TestObjectEndpoints(t *testing.T) {
|
||||
}
|
||||
})
|
||||
|
||||
// UpdateObject тестирует обновление объекта его владельцем
|
||||
t.Run("UpdateObject", func(t *testing.T) {
|
||||
user := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user)
|
||||
@@ -108,7 +103,7 @@ func TestObjectEndpoints(t *testing.T) {
|
||||
"short_description": "Updated short desc",
|
||||
}
|
||||
|
||||
resp, err := config.Request("PUT", "/objects/"+string(rune(objectID)), updateData, user.Token)
|
||||
resp, err := config.Request("PUT", "/objects/"+fmt.Sprintf("%d", objectID), updateData, user.Token)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to update object: %v", err)
|
||||
}
|
||||
@@ -128,7 +123,6 @@ func TestObjectEndpoints(t *testing.T) {
|
||||
}
|
||||
})
|
||||
|
||||
// UpdateObjectUnauthorized тестирует попытку обновления чужого объекта
|
||||
t.Run("UpdateObjectUnauthorized", func(t *testing.T) {
|
||||
user1 := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user1)
|
||||
@@ -138,8 +132,7 @@ func TestObjectEndpoints(t *testing.T) {
|
||||
|
||||
objectID := config.CreateTestObject(t, user1.Token)
|
||||
|
||||
// Пользователь user2 пытается обновить объект user1
|
||||
resp, err := config.Request("PUT", "/objects/"+string(rune(objectID)), map[string]interface{}{
|
||||
resp, err := config.Request("PUT", "/objects/"+fmt.Sprintf("%d", objectID), map[string]interface{}{
|
||||
"short_name": "Hacked Name",
|
||||
}, user2.Token)
|
||||
if err != nil {
|
||||
@@ -147,18 +140,15 @@ func TestObjectEndpoints(t *testing.T) {
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// Ожидаем ошибку 403 Forbidden
|
||||
if resp.StatusCode != 403 {
|
||||
t.Errorf("Expected status 403, got %d", resp.StatusCode)
|
||||
}
|
||||
})
|
||||
|
||||
// ListObjects тестирует получение списка объектов с пагинацией
|
||||
t.Run("ListObjects", func(t *testing.T) {
|
||||
user := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user)
|
||||
|
||||
// Создаем несколько объектов
|
||||
for i := 0; i < 3; i++ {
|
||||
config.CreateTestObject(t, user.Token)
|
||||
}
|
||||
@@ -183,12 +173,11 @@ func TestObjectEndpoints(t *testing.T) {
|
||||
}
|
||||
})
|
||||
|
||||
// SearchObjects тестирует поиск объектов по тексту
|
||||
t.Run("SearchObjects", func(t *testing.T) {
|
||||
user := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user)
|
||||
|
||||
objectID := config.CreateTestObject(t, user.Token)
|
||||
config.CreateTestObject(t, user.Token)
|
||||
|
||||
resp, err := config.Request("GET", "/objects/search?q=Test", nil, "")
|
||||
if err != nil {
|
||||
@@ -206,10 +195,8 @@ func TestObjectEndpoints(t *testing.T) {
|
||||
}
|
||||
|
||||
t.Logf("Search results: %+v", searchResults)
|
||||
_ = objectID // Используем переменную для избежания предупреждения
|
||||
})
|
||||
|
||||
// NearbyObjects тестирует поиск объектов рядом с заданными координатами
|
||||
t.Run("NearbyObjects", func(t *testing.T) {
|
||||
user := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user)
|
||||
@@ -225,14 +212,13 @@ func TestObjectEndpoints(t *testing.T) {
|
||||
}
|
||||
})
|
||||
|
||||
// DeleteObject тестирует удаление объекта
|
||||
t.Run("DeleteObject", func(t *testing.T) {
|
||||
user := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user)
|
||||
|
||||
objectID := config.CreateTestObject(t, user.Token)
|
||||
|
||||
resp, err := config.Request("DELETE", "/objects/"+string(rune(objectID)), nil, user.Token)
|
||||
resp, err := config.Request("DELETE", "/objects/"+fmt.Sprintf("%d", objectID), nil, user.Token)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to delete object: %v", err)
|
||||
}
|
||||
@@ -242,8 +228,7 @@ func TestObjectEndpoints(t *testing.T) {
|
||||
t.Errorf("Expected status 204, got %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
// Проверяем, что объект удален - должен вернуть 404
|
||||
getResp, err := config.Request("GET", "/objects/"+string(rune(objectID)), nil, "")
|
||||
getResp, err := config.Request("GET", "/objects/"+fmt.Sprintf("%d", objectID), nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get object: %v", err)
|
||||
}
|
||||
@@ -253,4 +238,4 @@ func TestObjectEndpoints(t *testing.T) {
|
||||
t.Errorf("Expected status 404 for deleted object, got %d", getResp.StatusCode)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user