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  }