From 64a076a2997d4eaca6fd1ab18d113a86b6ffa7ad Mon Sep 17 00:00:00 2001 From: pasha1coil Date: Thu, 17 Jul 2025 18:41:56 +0300 Subject: [PATCH] review, next deleteQuizRequest --- tests/main_test.go | 113 ++++++++++++++++++++++----------------------- 1 file changed, 55 insertions(+), 58 deletions(-) diff --git a/tests/main_test.go b/tests/main_test.go index e4cfd43..802a759 100644 --- a/tests/main_test.go +++ b/tests/main_test.go @@ -5739,6 +5739,7 @@ func copyQuizRequest(token string, body map[string]interface{}) (*http.Response, return http.DefaultClient.Do(req) } +// отсмотрено func TestCopyQuiz_Success(t *testing.T) { createResp, err := createQuizRequest(validToken, map[string]interface{}{ "name": "Оригинальный квиз для копирования", @@ -5749,38 +5750,25 @@ func TestCopyQuiz_Success(t *testing.T) { }) assert.NoError(t, err) defer createResp.Body.Close() - var createResult map[string]interface{} + var createResult model.Quiz err = json.NewDecoder(createResp.Body).Decode(&createResult) assert.NoError(t, err) - origID := createResult["id"] - origName := createResult["name"] resp, err := copyQuizRequest(validToken, map[string]interface{}{ - "id": origID, + "id": createResult.Id, }) assert.NoError(t, err) defer resp.Body.Close() assert.Equal(t, http.StatusOK, resp.StatusCode) assert.Equal(t, "application/json", resp.Header.Get("Content-Type")) - var result map[string]interface{} + var result quiz.UpdateResp err = json.NewDecoder(resp.Body).Decode(&result) assert.NoError(t, err) - assert.NotEqual(t, origID, result["id"]) - assert.NotEmpty(t, result["qid"]) - assert.Equal(t, origName, result["name"]) - assert.Equal(t, false, result["deleted"]) - assert.Equal(t, false, result["archived"]) - assert.Equal(t, "draft", result["status"]) - assert.Equal(t, float64(1), result["version"]) - assert.Equal(t, nil, result["version_comment"]) - assert.Equal(t, float64(0), result["session_count"]) - assert.Equal(t, float64(0), result["passed_count"]) - assert.Equal(t, float64(0), result["average_time"]) - assert.NotEmpty(t, result["created_at"]) - assert.NotEmpty(t, result["updated_at"]) + assert.NotEqual(t, createResult.Id, result.Updated) } +// отсмотрено func TestCopyQuiz_Auth(t *testing.T) { t.Run("NoToken", func(t *testing.T) { payload, err := json.Marshal(map[string]interface{}{ @@ -5814,12 +5802,13 @@ func TestCopyQuiz_Auth(t *testing.T) { }) } +// отсмотрено func TestCopyQuiz_InputValidation(t *testing.T) { t.Run("MissingID", func(t *testing.T) { resp, err := copyQuizRequest(validToken, map[string]interface{}{}) assert.NoError(t, err) defer resp.Body.Close() - assert.Equal(t, http.StatusBadRequest, resp.StatusCode) + assert.Equal(t, http.StatusFailedDependency, resp.StatusCode) }) t.Run("InvalidID", func(t *testing.T) { @@ -5830,7 +5819,7 @@ func TestCopyQuiz_InputValidation(t *testing.T) { defer resp.Body.Close() assert.Equal(t, http.StatusBadRequest, resp.StatusCode) }) - + // todo 404 t.Run("NonExistentID", func(t *testing.T) { resp, err := copyQuizRequest(validToken, map[string]interface{}{ "id": 99999, @@ -5841,6 +5830,7 @@ func TestCopyQuiz_InputValidation(t *testing.T) { }) } +// отсмотрено func TestCopyQuiz_Performance(t *testing.T) { createResp, err := createQuizRequest(validToken, map[string]interface{}{ "name": "Квиз для копирования (перфоманс)", @@ -5848,15 +5838,14 @@ func TestCopyQuiz_Performance(t *testing.T) { }) assert.NoError(t, err) defer createResp.Body.Close() - var createResult map[string]interface{} + var createResult model.Quiz err = json.NewDecoder(createResp.Body).Decode(&createResult) assert.NoError(t, err) - origID := createResult["id"] t.Run("ResponseTime", func(t *testing.T) { start := time.Now() resp, err := copyQuizRequest(validToken, map[string]interface{}{ - "id": origID, + "id": createResult.Id, }) duration := time.Since(start) assert.NoError(t, err) @@ -5871,7 +5860,7 @@ func TestCopyQuiz_Performance(t *testing.T) { go func() { defer wg.Done() resp, err := copyQuizRequest(validToken, map[string]interface{}{ - "id": origID, + "id": createResult.Id, }) if err == nil && resp != nil { resp.Body.Close() @@ -5896,6 +5885,7 @@ func getQuizHistoryRequest(token string, body map[string]interface{}) (*http.Res return http.DefaultClient.Do(req) } +// отсмотрено func TestGetQuizHistory_Success(t *testing.T) { createResp, err := createQuizRequest(validToken, map[string]interface{}{ "name": "Квиз для истории", @@ -5903,14 +5893,13 @@ func TestGetQuizHistory_Success(t *testing.T) { }) assert.NoError(t, err) defer createResp.Body.Close() - var createResult map[string]interface{} + var createResult model.Quiz err = json.NewDecoder(createResp.Body).Decode(&createResult) assert.NoError(t, err) - quizID := createResult["id"] for i := 1; i <= 3; i++ { editResp, err := editQuizRequest(validToken, map[string]interface{}{ - "id": quizID, + "id": createResult.Id, "name": fmt.Sprintf("Обновленный квиз версия %d", i), "status": "start", }) @@ -5919,31 +5908,30 @@ func TestGetQuizHistory_Success(t *testing.T) { } resp, err := getQuizHistoryRequest(validToken, map[string]interface{}{ - "id": quizID, + "id": createResult.Id, "l": 5, - "p": 1, + "p": 0, }) assert.NoError(t, err) defer resp.Body.Close() - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode) assert.Equal(t, "application/json", resp.Header.Get("Content-Type")) - var result []map[string]interface{} + var result []model.Quiz err = json.NewDecoder(resp.Body).Decode(&result) assert.NoError(t, err) + fmt.Println(result) assert.LessOrEqual(t, len(result), 5) assert.Greater(t, len(result), 0) if len(result) > 0 { firstItem := result[0] - assert.Equal(t, quizID, firstItem["id"]) - assert.NotEmpty(t, firstItem["version"]) - assert.NotEmpty(t, firstItem["created_at"]) - assert.NotEmpty(t, firstItem["updated_at"]) + assert.Equal(t, createResult.Id, firstItem.Id) } } +// отсмотрено func TestGetQuizHistory_Auth(t *testing.T) { t.Run("NoToken", func(t *testing.T) { payload, err := json.Marshal(map[string]interface{}{ @@ -5983,6 +5971,7 @@ func TestGetQuizHistory_Auth(t *testing.T) { }) } +// отсмотрено func TestGetQuizHistory_InputValidation(t *testing.T) { t.Run("MissingID", func(t *testing.T) { resp, err := getQuizHistoryRequest(validToken, map[string]interface{}{ @@ -5991,7 +5980,7 @@ func TestGetQuizHistory_InputValidation(t *testing.T) { }) assert.NoError(t, err) defer resp.Body.Close() - assert.Equal(t, http.StatusBadRequest, resp.StatusCode) + assert.Equal(t, http.StatusFailedDependency, resp.StatusCode) }) t.Run("InvalidID", func(t *testing.T) { @@ -6035,15 +6024,16 @@ func TestGetQuizHistory_InputValidation(t *testing.T) { }) assert.NoError(t, err) defer resp.Body.Close() - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode) - var result []map[string]interface{} + var result []model.Quiz err = json.NewDecoder(resp.Body).Decode(&result) assert.NoError(t, err) assert.Empty(t, result) }) } +// отсмотрено func TestGetQuizHistory_Pagination(t *testing.T) { createResp, err := createQuizRequest(validToken, map[string]interface{}{ "name": "Квиз для пагинации истории", @@ -6051,10 +6041,10 @@ func TestGetQuizHistory_Pagination(t *testing.T) { }) assert.NoError(t, err) defer createResp.Body.Close() - var createResult map[string]interface{} + var createResult model.Quiz err = json.NewDecoder(createResp.Body).Decode(&createResult) assert.NoError(t, err) - quizID := createResult["id"] + quizID := createResult.Id for i := 1; i <= 15; i++ { editResp, err := editQuizRequest(validToken, map[string]interface{}{ @@ -6069,13 +6059,13 @@ func TestGetQuizHistory_Pagination(t *testing.T) { resp, err := getQuizHistoryRequest(validToken, map[string]interface{}{ "id": quizID, "l": 5, - "p": 1, + "p": 0, }) assert.NoError(t, err) defer resp.Body.Close() - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode) - var result []map[string]interface{} + var result []model.Quiz err = json.NewDecoder(resp.Body).Decode(&result) assert.NoError(t, err) assert.LessOrEqual(t, len(result), 5) @@ -6085,13 +6075,13 @@ func TestGetQuizHistory_Pagination(t *testing.T) { resp, err := getQuizHistoryRequest(validToken, map[string]interface{}{ "id": quizID, "l": 5, - "p": 2, + "p": 1, }) assert.NoError(t, err) defer resp.Body.Close() - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode) - var result []map[string]interface{} + var result []model.Quiz err = json.NewDecoder(resp.Body).Decode(&result) assert.NoError(t, err) assert.LessOrEqual(t, len(result), 5) @@ -6105,15 +6095,16 @@ func TestGetQuizHistory_Pagination(t *testing.T) { }) assert.NoError(t, err) defer resp.Body.Close() - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode) - var result []map[string]interface{} + var result []model.Quiz err = json.NewDecoder(resp.Body).Decode(&result) assert.NoError(t, err) assert.Empty(t, result) }) } +// отсмотрено func TestGetQuizHistory_NewQuiz(t *testing.T) { createResp, err := createQuizRequest(validToken, map[string]interface{}{ "name": "Новый квиз для истории", @@ -6121,42 +6112,45 @@ func TestGetQuizHistory_NewQuiz(t *testing.T) { }) assert.NoError(t, err) defer createResp.Body.Close() - var createResult map[string]interface{} + var createResult model.Quiz err = json.NewDecoder(createResp.Body).Decode(&createResult) assert.NoError(t, err) - quizID := createResult["id"] + quizID := createResult.Id resp, err := getQuizHistoryRequest(validToken, map[string]interface{}{ "id": quizID, + "l": 5, + "p": 0, }) assert.NoError(t, err) defer resp.Body.Close() - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode) - var result []map[string]interface{} + var result []model.Quiz err = json.NewDecoder(resp.Body).Decode(&result) assert.NoError(t, err) assert.Len(t, result, 1) // Должна быть только одна запись для нового квиза if len(result) > 0 { firstItem := result[0] - assert.Equal(t, quizID, firstItem["id"]) - assert.Equal(t, float64(1), firstItem["version"]) + assert.Equal(t, quizID, firstItem.Id) } } +// отсмотрено func TestGetQuizHistory_Performance(t *testing.T) { createResp, err := createQuizRequest(validToken, map[string]interface{}{ "name": "Квиз для теста производительности истории", "status": "draft", }) assert.NoError(t, err) + assert.Equal(t, http.StatusCreated, createResp.StatusCode) defer createResp.Body.Close() - var createResult map[string]interface{} + var createResult model.Quiz err = json.NewDecoder(createResp.Body).Decode(&createResult) assert.NoError(t, err) - quizID := createResult["id"] + quizID := createResult.Id for i := 1; i <= 5; i++ { editResp, err := editQuizRequest(validToken, map[string]interface{}{ @@ -6164,6 +6158,7 @@ func TestGetQuizHistory_Performance(t *testing.T) { "name": fmt.Sprintf("Версия %d", i), }) assert.NoError(t, err) + assert.Equal(t, http.StatusOK, editResp.StatusCode) editResp.Body.Close() } @@ -6172,11 +6167,12 @@ func TestGetQuizHistory_Performance(t *testing.T) { resp, err := getQuizHistoryRequest(validToken, map[string]interface{}{ "id": quizID, "l": 10, - "p": 1, + "p": 0, }) duration := time.Since(start) assert.NoError(t, err) + assert.Equal(t, http.StatusCreated, resp.StatusCode) defer resp.Body.Close() assert.Less(t, duration.Milliseconds(), int64(500)) }) @@ -6190,9 +6186,10 @@ func TestGetQuizHistory_Performance(t *testing.T) { resp, err := getQuizHistoryRequest(validToken, map[string]interface{}{ "id": quizID, "l": 5, - "p": 1, + "p": 0, }) if err == nil && resp != nil { + assert.Equal(t, http.StatusCreated, resp.StatusCode) resp.Body.Close() } }()