github.com/cloudreve/Cloudreve/v3@v3.0.0-20240224133659-3edb00a6484c/models/task_test.go (about) 1 package model 2 3 import ( 4 "errors" 5 "github.com/DATA-DOG/go-sqlmock" 6 "github.com/jinzhu/gorm" 7 "github.com/stretchr/testify/assert" 8 "testing" 9 ) 10 11 func TestTask_Create(t *testing.T) { 12 asserts := assert.New(t) 13 // 成功 14 { 15 mock.ExpectBegin() 16 mock.ExpectExec("INSERT(.+)").WillReturnResult(sqlmock.NewResult(1, 1)) 17 mock.ExpectCommit() 18 task := Task{Props: "1"} 19 id, err := task.Create() 20 asserts.NoError(mock.ExpectationsWereMet()) 21 asserts.NoError(err) 22 asserts.EqualValues(1, id) 23 } 24 25 // 失败 26 { 27 mock.ExpectBegin() 28 mock.ExpectExec("INSERT(.+)").WillReturnError(errors.New("error")) 29 mock.ExpectRollback() 30 task := Task{Props: "1"} 31 id, err := task.Create() 32 asserts.NoError(mock.ExpectationsWereMet()) 33 asserts.Error(err) 34 asserts.EqualValues(0, id) 35 } 36 } 37 38 func TestTask_SetError(t *testing.T) { 39 asserts := assert.New(t) 40 task := Task{ 41 Model: gorm.Model{ID: 1}, 42 } 43 mock.ExpectBegin() 44 mock.ExpectExec("UPDATE(.+)").WillReturnResult(sqlmock.NewResult(1, 1)) 45 mock.ExpectCommit() 46 asserts.NoError(task.SetError("error")) 47 asserts.NoError(mock.ExpectationsWereMet()) 48 } 49 50 func TestTask_SetStatus(t *testing.T) { 51 asserts := assert.New(t) 52 task := Task{ 53 Model: gorm.Model{ID: 1}, 54 } 55 mock.ExpectBegin() 56 mock.ExpectExec("UPDATE(.+)").WillReturnResult(sqlmock.NewResult(1, 1)) 57 mock.ExpectCommit() 58 asserts.NoError(task.SetStatus(1)) 59 asserts.NoError(mock.ExpectationsWereMet()) 60 } 61 62 func TestTask_SetProgress(t *testing.T) { 63 asserts := assert.New(t) 64 task := Task{ 65 Model: gorm.Model{ID: 1}, 66 } 67 mock.ExpectBegin() 68 mock.ExpectExec("UPDATE(.+)").WillReturnResult(sqlmock.NewResult(1, 1)) 69 mock.ExpectCommit() 70 asserts.NoError(task.SetProgress(1)) 71 asserts.NoError(mock.ExpectationsWereMet()) 72 } 73 74 func TestGetTasksByID(t *testing.T) { 75 asserts := assert.New(t) 76 mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(1)) 77 res, err := GetTasksByID(1) 78 asserts.NoError(mock.ExpectationsWereMet()) 79 asserts.NoError(err) 80 asserts.EqualValues(1, res.ID) 81 } 82 83 func TestListTasks(t *testing.T) { 84 asserts := assert.New(t) 85 86 mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"count"}).AddRow(5)) 87 mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(5)) 88 89 res, total := ListTasks(1, 1, 10, "") 90 asserts.NoError(mock.ExpectationsWereMet()) 91 asserts.EqualValues(5, total) 92 asserts.Len(res, 1) 93 } 94 95 func TestGetTasksByStatus(t *testing.T) { 96 a := assert.New(t) 97 98 mock.ExpectQuery("SELECT(.+)"). 99 WithArgs(1, 2). 100 WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(1)) 101 res := GetTasksByStatus(1, 2) 102 a.NoError(mock.ExpectationsWereMet()) 103 a.Len(res, 1) 104 }