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 }