review, next deleteQuizRequest

This commit is contained in:
pasha1coil 2025-07-17 18:41:56 +03:00
parent 77eb56a807
commit 64a076a299

@ -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()
}
}()