d1e45c7686
modified: main_dc/yalarba/api_yal/cmd/testrunner/main.go modified: main_dc/yalarba/api_yal/cmd/testrunner/runner.go modified: main_dc/yalarba/api_yal/tests/integration/account_test.go modified: main_dc/yalarba/api_yal/tests/integration/appeal_test.go modified: main_dc/yalarba/api_yal/tests/integration/auth_test.go modified: main_dc/yalarba/api_yal/tests/integration/comment_test.go modified: main_dc/yalarba/api_yal/tests/integration/feedback_test.go modified: main_dc/yalarba/api_yal/tests/integration/object_test.go modified: main_dc/yalarba/api_yal/tests/integration/rating_test.go deleted: main_dc/yalarba/api_yal/tests/testutils/client.go modified: main_dc/yalarba/api_yal/tests/testutils/fixtures.go modified: main_dc/yalarba/api_yal/tests/testutils/setup.go write comments for and into test's functions
111 lines
5.2 KiB
Go
111 lines
5.2 KiB
Go
package testutils
|
|
|
|
import "testing"
|
|
|
|
// CreateObjectRequest представляет структуру запроса для создания объекта
|
|
// Используется в тестах для передачи данных при создании нового объекта
|
|
type CreateObjectRequest struct {
|
|
ShortName string `json:"short_name"` // Короткое название объекта
|
|
LongName string `json:"long_name"` // Полное название объекта
|
|
Type string `json:"type"` // Тип объекта (cafe, restaurant, museum и т.д.)
|
|
Phone string `json:"phone"` // Контактный телефон
|
|
Email string `json:"email"` // Email для связи
|
|
Site string `json:"site"` // Веб-сайт объекта
|
|
ShortDescription string `json:"short_description"` // Краткое описание
|
|
Description string `json:"description"` // Полное описание
|
|
Address string `json:"address"` // Физический адрес
|
|
Latitude float64 `json:"latitude"` // Географическая широта
|
|
Longitude float64 `json:"longitude"` // Географическая долгота
|
|
IsActive bool `json:"is_active"` // Активен ли объект
|
|
IsVerified bool `json:"is_verified"` // Подтвержден ли объект
|
|
}
|
|
|
|
// CreateFeedbackRequest представляет структуру запроса для создания отзыва
|
|
type CreateFeedbackRequest struct {
|
|
ObjectID uint `json:"object_id"` // ID объекта, на который оставляется отзыв
|
|
Rating int `json:"rating"` // Оценка от 1 до 5
|
|
Text string `json:"text"` // Текст отзыва
|
|
Platform string `json:"platform"` // Платформа, с которой оставлен отзыв (tourist, expert, local)
|
|
MediaURLs []string `json:"media_urls"` // Ссылки на медиафайлы (фото, видео)
|
|
}
|
|
|
|
// CreateCommentRequest представляет структуру запроса для создания комментария
|
|
type CreateCommentRequest struct {
|
|
FeedbackID uint `json:"feedback_id"` // ID отзыва, к которому оставляется комментарий
|
|
Text string `json:"text"` // Текст комментария
|
|
ParentID *uint `json:"parent_id"` // ID родительского комментария (для вложенных комментариев)
|
|
}
|
|
|
|
// CreateTestObject создает тестовый объект и возвращает его ID
|
|
// Используется в тестах для подготовки тестовых данных
|
|
// Параметры:
|
|
// - t: указатель на тест для логирования ошибок
|
|
// - token: JWT токен авторизованного пользователя
|
|
// Возвращает: ID созданного объекта
|
|
func (c *TestConfig) CreateTestObject(t *testing.T, token string) uint {
|
|
req := CreateObjectRequest{
|
|
ShortName: "Test Object",
|
|
LongName: "Test Object for Testing",
|
|
Type: "cafe",
|
|
Phone: "+71234567890",
|
|
Email: "test@object.com",
|
|
Site: "https://test.com",
|
|
ShortDescription: "Test description",
|
|
Description: "Full test description",
|
|
Address: "Test Address 123",
|
|
Latitude: 55.751244,
|
|
Longitude: 37.618423,
|
|
IsActive: true,
|
|
IsVerified: false,
|
|
}
|
|
|
|
resp, err := c.Request("POST", "/objects", req, token)
|
|
if err != nil {
|
|
t.Fatalf("Failed to create test object: %v", err)
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
var result map[string]interface{}
|
|
if err := c.ParseResponse(resp, &result); err != nil {
|
|
t.Fatalf("Failed to parse response: %v", err)
|
|
}
|
|
|
|
if id, ok := result["id"].(float64); ok {
|
|
return uint(id)
|
|
}
|
|
t.Fatal("Failed to get object ID")
|
|
return 0
|
|
}
|
|
|
|
// CreateTestFeedback создает тестовый отзыв и возвращает его ID
|
|
// Используется в тестах для подготовки тестовых данных
|
|
// Параметры:
|
|
// - t: указатель на тест для логирования ошибок
|
|
// - token: JWT токен авторизованного пользователя
|
|
// - objectID: ID объекта, к которому создается отзыв
|
|
// Возвращает: ID созданного отзыва
|
|
func (c *TestConfig) CreateTestFeedback(t *testing.T, token string, objectID uint) uint {
|
|
req := CreateFeedbackRequest{
|
|
ObjectID: objectID,
|
|
Rating: 5,
|
|
Text: "Test feedback content",
|
|
Platform: "tourist",
|
|
}
|
|
|
|
resp, err := c.Request("POST", "/feedbacks", req, token)
|
|
if err != nil {
|
|
t.Fatalf("Failed to create test feedback: %v", err)
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
var result map[string]interface{}
|
|
if err := c.ParseResponse(resp, &result); err != nil {
|
|
t.Fatalf("Failed to parse response: %v", err)
|
|
}
|
|
|
|
if id, ok := result["id"].(float64); ok {
|
|
return uint(id)
|
|
}
|
|
t.Fatal("Failed to get feedback ID")
|
|
return 0
|
|
} |