Files
tp/main_dc/yalarba/api_yal/tests/integration/comment_test.go
T
valitovgaziz 8dfe7e8b4a 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
2026-06-08 01:44:23 +05:00

223 lines
7.3 KiB
Go

package integration
import (
"testing"
"api_yal/tests/testutils"
)
func TestCommentEndpoints(t *testing.T) {
config := testutils.NewTestConfig()
t.Run("CreateComment", 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)
commentData := testutils.CreateCommentRequest{
FeedbackID: feedbackID,
Text: "Great review! I agree completely.",
}
resp, err := config.Request("POST", "/comments", commentData, user.Token)
if err != nil {
t.Fatalf("Failed to create comment: %v", err)
}
defer resp.Body.Close()
if resp.StatusCode != 201 {
t.Errorf("Expected status 201, got %d", resp.StatusCode)
}
var createdComment map[string]interface{}
if err := config.ParseResponse(resp, &createdComment); err != nil {
t.Fatalf("Failed to parse response: %v", err)
}
if _, ok := createdComment["id"]; !ok {
t.Error("Comment ID not found")
}
})
t.Run("GetCommentByID", 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)
// Создаем комментарий
commentData := testutils.CreateCommentRequest{
FeedbackID: feedbackID,
Text: "Test comment",
}
resp, err := config.Request("POST", "/comments", commentData, user.Token)
if err != nil {
t.Fatalf("Failed to create comment: %v", err)
}
defer resp.Body.Close()
var createdComment map[string]interface{}
if err := config.ParseResponse(resp, &createdComment); err != nil {
t.Fatalf("Failed to parse response: %v", err)
}
commentID := createdComment["id"].(float64)
getResp, err := config.Request("GET", "/comments/"+string(rune(commentID)), nil, "")
if err != nil {
t.Fatalf("Failed to get comment: %v", err)
}
defer getResp.Body.Close()
if getResp.StatusCode != 200 {
t.Errorf("Expected status 200, got %d", getResp.StatusCode)
}
})
t.Run("UpdateComment", 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)
// Создаем комментарий
commentData := testutils.CreateCommentRequest{
FeedbackID: feedbackID,
Text: "Original comment",
}
resp, err := config.Request("POST", "/comments", commentData, user.Token)
if err != nil {
t.Fatalf("Failed to create comment: %v", err)
}
defer resp.Body.Close()
var createdComment map[string]interface{}
if err := config.ParseResponse(resp, &createdComment); err != nil {
t.Fatalf("Failed to parse response: %v", err)
}
commentID := createdComment["id"].(float64)
updateData := map[string]interface{}{
"text": "Updated comment text",
}
updateResp, err := config.Request("PUT", "/comments/"+string(rune(commentID)), updateData, user.Token)
if err != nil {
t.Fatalf("Failed to update comment: %v", err)
}
defer updateResp.Body.Close()
if updateResp.StatusCode != 200 {
t.Errorf("Expected status 200, got %d", updateResp.StatusCode)
}
})
t.Run("ListComments", func(t *testing.T) {
resp, err := config.Request("GET", "/comments?page=1&page_size=20", nil, "")
if err != nil {
t.Fatalf("Failed to list comments: %v", err)
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
t.Errorf("Expected status 200, got %d", resp.StatusCode)
}
})
t.Run("MyComments", func(t *testing.T) {
user := config.CreateTestUser(t)
defer config.CleanupTestUser(t, user)
resp, err := config.Request("GET", "/comments/my", nil, user.Token)
if err != nil {
t.Fatalf("Failed to get my comments: %v", err)
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
t.Errorf("Expected status 200, got %d", resp.StatusCode)
}
})
t.Run("CommentsByFeedback", 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", "/comments/feedback/"+string(rune(feedbackID)), nil, "")
if err != nil {
t.Fatalf("Failed to get comments by feedback: %v", err)
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
t.Errorf("Expected status 200, got %d", resp.StatusCode)
}
})
t.Run("CommentStats", func(t *testing.T) {
resp, err := config.Request("GET", "/comments/stats", nil, "")
if err != nil {
t.Fatalf("Failed to get comment 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_comments", "verified_comments", "unverified_comments"}
for _, field := range expectedFields {
if _, ok := stats[field]; !ok {
t.Errorf("Expected field %s not found", field)
}
}
})
t.Run("DeleteComment", 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)
// Создаем комментарий
commentData := testutils.CreateCommentRequest{
FeedbackID: feedbackID,
Text: "Comment to delete",
}
resp, err := config.Request("POST", "/comments", commentData, user.Token)
if err != nil {
t.Fatalf("Failed to create comment: %v", err)
}
defer resp.Body.Close()
var createdComment map[string]interface{}
if err := config.ParseResponse(resp, &createdComment); err != nil {
t.Fatalf("Failed to parse response: %v", err)
}
commentID := createdComment["id"].(float64)
deleteResp, err := config.Request("DELETE", "/comments/"+string(rune(commentID)), nil, user.Token)
if err != nil {
t.Fatalf("Failed to delete comment: %v", err)
}
defer deleteResp.Body.Close()
if deleteResp.StatusCode != 200 {
t.Errorf("Expected status 200, got %d", deleteResp.StatusCode)
}
})
}