github.com/cloudreve/Cloudreve/v3@v3.0.0-20240224133659-3edb00a6484c/pkg/serializer/share_test.go (about)

     1  package serializer
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	model "github.com/cloudreve/Cloudreve/v3/models"
     8  	"github.com/jinzhu/gorm"
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestBuildShareList(t *testing.T) {
    13  	asserts := assert.New(t)
    14  	timeNow := time.Now()
    15  
    16  	shares := []model.Share{
    17  		{
    18  			Expires: &timeNow,
    19  			File: model.File{
    20  				Model: gorm.Model{ID: 1},
    21  			},
    22  		},
    23  		{
    24  			Folder: model.Folder{
    25  				Model: gorm.Model{ID: 1},
    26  			},
    27  		},
    28  	}
    29  
    30  	res := BuildShareList(shares, 2)
    31  	asserts.Equal(0, res.Code)
    32  }
    33  
    34  func TestBuildShareResponse(t *testing.T) {
    35  	asserts := assert.New(t)
    36  
    37  	// 未解锁
    38  	{
    39  		share := &model.Share{
    40  			User:      model.User{Model: gorm.Model{ID: 1}},
    41  			Downloads: 1,
    42  		}
    43  		res := BuildShareResponse(share, false)
    44  		asserts.EqualValues(0, res.Downloads)
    45  		asserts.True(res.Locked)
    46  		asserts.NotNil(res.Creator)
    47  	}
    48  
    49  	// 已解锁,非目录
    50  	{
    51  		expires := time.Now().Add(time.Duration(10) * time.Second)
    52  		share := &model.Share{
    53  			User:      model.User{Model: gorm.Model{ID: 1}},
    54  			Downloads: 1,
    55  			Expires:   &expires,
    56  			File: model.File{
    57  				Model: gorm.Model{ID: 1},
    58  			},
    59  		}
    60  		res := BuildShareResponse(share, true)
    61  		asserts.EqualValues(1, res.Downloads)
    62  		asserts.False(res.Locked)
    63  		asserts.NotEmpty(res.Expire)
    64  		asserts.NotNil(res.Creator)
    65  	}
    66  
    67  	// 已解锁,是目录
    68  	{
    69  		expires := time.Now().Add(time.Duration(10) * time.Second)
    70  		share := &model.Share{
    71  			User:      model.User{Model: gorm.Model{ID: 1}},
    72  			Downloads: 1,
    73  			Expires:   &expires,
    74  			Folder: model.Folder{
    75  				Model: gorm.Model{ID: 1},
    76  			},
    77  			IsDir: true,
    78  		}
    79  		res := BuildShareResponse(share, true)
    80  		asserts.EqualValues(1, res.Downloads)
    81  		asserts.False(res.Locked)
    82  		asserts.NotEmpty(res.Expire)
    83  		asserts.NotNil(res.Creator)
    84  	}
    85  }