review, next deleteQuizRequest
This commit is contained in:
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()
|
||||
}
|
||||
}()
|
||||
|
Loading…
Reference in New Issue
Block a user