github.com/cloudreve/Cloudreve/v3@v3.0.0-20240224133659-3edb00a6484c/models/node_test.go (about) 1 package model 2 3 import ( 4 "github.com/DATA-DOG/go-sqlmock" 5 "github.com/stretchr/testify/assert" 6 "testing" 7 ) 8 9 func TestGetNodeByID(t *testing.T) { 10 a := assert.New(t) 11 mock.ExpectQuery("SELECT(.+)nodes").WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(1)) 12 res, err := GetNodeByID(1) 13 a.NoError(err) 14 a.EqualValues(1, res.ID) 15 a.NoError(mock.ExpectationsWereMet()) 16 } 17 18 func TestGetNodesByStatus(t *testing.T) { 19 a := assert.New(t) 20 mock.ExpectQuery("SELECT(.+)nodes").WillReturnRows(sqlmock.NewRows([]string{"status"}).AddRow(NodeActive)) 21 res, err := GetNodesByStatus(NodeActive) 22 a.NoError(err) 23 a.Len(res, 1) 24 a.EqualValues(NodeActive, res[0].Status) 25 a.NoError(mock.ExpectationsWereMet()) 26 } 27 28 func TestNode_AfterFind(t *testing.T) { 29 a := assert.New(t) 30 node := &Node{} 31 32 // No aria2 options 33 { 34 a.NoError(node.AfterFind()) 35 } 36 37 // with aria2 options 38 { 39 node.Aria2Options = `{"timeout":1}` 40 a.NoError(node.AfterFind()) 41 a.Equal(1, node.Aria2OptionsSerialized.Timeout) 42 } 43 } 44 45 func TestNode_BeforeSave(t *testing.T) { 46 a := assert.New(t) 47 node := &Node{} 48 49 node.Aria2OptionsSerialized.Timeout = 1 50 a.NoError(node.BeforeSave()) 51 a.Contains(node.Aria2Options, "1") 52 } 53 54 func TestNode_SetStatus(t *testing.T) { 55 a := assert.New(t) 56 node := &Node{} 57 58 mock.ExpectBegin() 59 mock.ExpectExec("UPDATE(.+)nodes").WithArgs(NodeActive, sqlmock.AnyArg()).WillReturnResult(sqlmock.NewResult(1, 1)) 60 mock.ExpectCommit() 61 a.NoError(node.SetStatus(NodeActive)) 62 a.Equal(NodeActive, node.Status) 63 a.NoError(mock.ExpectationsWereMet()) 64 }