On branch main
new file: main_dc/yalarba/api_yal/cmd/testrunner/README.md new file: main_dc/yalarba/api_yal/cmd/testrunner/main.go new file: main_dc/yalarba/api_yal/cmd/testrunner/runner.go deleted: main_dc/yalarba/api_yal/test/intergration/auth_integration_test.go deleted: main_dc/yalarba/api_yal/test/intergration/objects_integration_test.go deleted: main_dc/yalarba/api_yal/test/intergration/setup_test.go deleted: main_dc/yalarba/api_yal/test/setup_test.go new file: main_dc/yalarba/api_yal/tests/integration/account_test.go new file: main_dc/yalarba/api_yal/tests/integration/appeal_test.go new file: main_dc/yalarba/api_yal/tests/integration/auth_test.go new file: main_dc/yalarba/api_yal/tests/integration/comment_test.go new file: main_dc/yalarba/api_yal/tests/integration/feedback_test.go new file: main_dc/yalarba/api_yal/tests/integration/object_test.go new file: main_dc/yalarba/api_yal/tests/integration/rating_test.go new file: main_dc/yalarba/api_yal/tests/testutils/client.go new file: main_dc/yalarba/api_yal/tests/testutils/fixtures.go new file: main_dc/yalarba/api_yal/tests/testutils/setup.go write tests
This commit is contained in:
@@ -0,0 +1,217 @@
|
||||
package integration
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"api_yal/tests/testutils"
|
||||
)
|
||||
|
||||
func TestFeedbackEndpoints(t *testing.T) {
|
||||
config := testutils.NewTestConfig()
|
||||
|
||||
t.Run("CreateFeedback", func(t *testing.T) {
|
||||
user := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user)
|
||||
|
||||
objectID := config.CreateTestObject(t, user.Token)
|
||||
|
||||
feedbackData := testutils.CreateFeedbackRequest{
|
||||
ObjectID: objectID,
|
||||
Rating: 5,
|
||||
Text: "Excellent place! Very recommended.",
|
||||
Platform: "tourist",
|
||||
}
|
||||
|
||||
resp, err := config.Request("POST", "/feedbacks", feedbackData, user.Token)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create feedback: %v", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != 201 {
|
||||
t.Errorf("Expected status 201, got %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
var createdFeedback map[string]interface{}
|
||||
if err := config.ParseResponse(resp, &createdFeedback); err != nil {
|
||||
t.Fatalf("Failed to parse response: %v", err)
|
||||
}
|
||||
|
||||
if _, ok := createdFeedback["id"]; !ok {
|
||||
t.Error("Feedback ID not found")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("GetFeedbackByID", func(t *testing.T) {
|
||||
user := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user)
|
||||
|
||||
objectID := config.CreateTestObject(t, user.Token)
|
||||
feedbackID := config.CreateTestFeedback(t, user.Token, objectID)
|
||||
|
||||
resp, err := config.Request("GET", "/feedbacks/"+string(rune(feedbackID)), nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get feedback: %v", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != 200 {
|
||||
t.Errorf("Expected status 200, got %d", resp.StatusCode)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("UpdateFeedback", func(t *testing.T) {
|
||||
user := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user)
|
||||
|
||||
objectID := config.CreateTestObject(t, user.Token)
|
||||
feedbackID := config.CreateTestFeedback(t, user.Token, objectID)
|
||||
|
||||
updateData := map[string]interface{}{
|
||||
"rating": 4,
|
||||
"text": "Updated feedback text",
|
||||
}
|
||||
|
||||
resp, err := config.Request("PUT", "/feedbacks/"+string(rune(feedbackID)), updateData, user.Token)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to update feedback: %v", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != 200 {
|
||||
t.Errorf("Expected status 200, got %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
var updatedFeedback map[string]interface{}
|
||||
if err := config.ParseResponse(resp, &updatedFeedback); err != nil {
|
||||
t.Fatalf("Failed to parse response: %v", err)
|
||||
}
|
||||
|
||||
if text, ok := updatedFeedback["text"].(string); !ok || text != "Updated feedback text" {
|
||||
t.Error("Feedback text not updated")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("ListFeedbacks", func(t *testing.T) {
|
||||
user := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user)
|
||||
|
||||
resp, err := config.Request("GET", "/feedbacks?offset=0&limit=20", nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to list feedbacks: %v", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != 200 {
|
||||
t.Errorf("Expected status 200, got %d", resp.StatusCode)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("MyFeedbacks", func(t *testing.T) {
|
||||
user := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user)
|
||||
|
||||
resp, err := config.Request("GET", "/feedbacks/my", nil, user.Token)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get my feedbacks: %v", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != 200 {
|
||||
t.Errorf("Expected status 200, got %d", resp.StatusCode)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("FeedbacksByObject", func(t *testing.T) {
|
||||
user := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user)
|
||||
|
||||
objectID := config.CreateTestObject(t, user.Token)
|
||||
|
||||
resp, err := config.Request("GET", "/feedbacks/object/"+string(rune(objectID)), nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get object feedbacks: %v", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != 200 {
|
||||
t.Errorf("Expected status 200, got %d", resp.StatusCode)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("FeedbacksByPlatform", func(t *testing.T) {
|
||||
resp, err := config.Request("GET", "/feedbacks/platform/tourist", nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get platform feedbacks: %v", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != 200 {
|
||||
t.Errorf("Expected status 200, got %d", resp.StatusCode)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("SearchFeedbacks", func(t *testing.T) {
|
||||
resp, err := config.Request("GET", "/feedbacks/search?q=excellent", nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to search feedbacks: %v", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != 200 {
|
||||
t.Errorf("Expected status 200, got %d", resp.StatusCode)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("FeedbackStats", func(t *testing.T) {
|
||||
resp, err := config.Request("GET", "/feedbacks/stats", nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get feedback stats: %v", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != 200 {
|
||||
t.Errorf("Expected status 200, got %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
var stats map[string]interface{}
|
||||
if err := config.ParseResponse(resp, &stats); err != nil {
|
||||
t.Fatalf("Failed to parse response: %v", err)
|
||||
}
|
||||
|
||||
expectedFields := []string{"total_feedbacks", "average_rating", "rating_distribution", "platform_stats"}
|
||||
for _, field := range expectedFields {
|
||||
if _, ok := stats[field]; !ok {
|
||||
t.Errorf("Expected field %s not found", field)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("DeleteFeedback", func(t *testing.T) {
|
||||
user := config.CreateTestUser(t)
|
||||
defer config.CleanupTestUser(t, user)
|
||||
|
||||
objectID := config.CreateTestObject(t, user.Token)
|
||||
feedbackID := config.CreateTestFeedback(t, user.Token, objectID)
|
||||
|
||||
resp, err := config.Request("DELETE", "/feedbacks/"+string(rune(feedbackID)), nil, user.Token)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to delete feedback: %v", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != 204 {
|
||||
t.Errorf("Expected status 204, got %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
// Проверяем, что отзыв удален
|
||||
getResp, err := config.Request("GET", "/feedbacks/"+string(rune(feedbackID)), nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get feedback: %v", err)
|
||||
}
|
||||
defer getResp.Body.Close()
|
||||
|
||||
if getResp.StatusCode != 404 {
|
||||
t.Errorf("Expected status 404 for deleted feedback, got %d", getResp.StatusCode)
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user