105 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package tests
 | 
						||
 | 
						||
import (
 | 
						||
	"testing"
 | 
						||
	"server/models"
 | 
						||
)
 | 
						||
 | 
						||
func TestFileModel(t *testing.T) {
 | 
						||
	// 测试创建文件信息
 | 
						||
	file := &models.FileInfo{
 | 
						||
		TenantID:     "test-tenant-001",
 | 
						||
		FileName:     "test-file.txt",
 | 
						||
		OriginalName: "original-test-file.txt",
 | 
						||
		FilePath:     "/uploads/test/test-file.txt",
 | 
						||
		FileURL:      "http://localhost:8080/uploads/test/test-file.txt",
 | 
						||
		FileSize:     1024,
 | 
						||
		FileType:     "text/plain",
 | 
						||
		FileExt:      "txt",
 | 
						||
		Category:     "test",
 | 
						||
		SubCategory:  "unit-test",
 | 
						||
		Status:       1,
 | 
						||
		IsPublic:     0,
 | 
						||
		UploadBy:     "test-user",
 | 
						||
	}
 | 
						||
 | 
						||
	// 测试添加文件
 | 
						||
	id, err := models.AddFile(file)
 | 
						||
	if err != nil {
 | 
						||
		t.Errorf("添加文件失败: %v", err)
 | 
						||
	}
 | 
						||
	t.Logf("文件添加成功,ID: %d", id)
 | 
						||
 | 
						||
	// 测试根据ID获取文件
 | 
						||
	retrievedFile, err := models.GetFileById(id)
 | 
						||
	if err != nil {
 | 
						||
		t.Errorf("获取文件失败: %v", err)
 | 
						||
	}
 | 
						||
	if retrievedFile.FileName != file.FileName {
 | 
						||
		t.Errorf("文件名不匹配,期望: %s, 实际: %s", file.FileName, retrievedFile.FileName)
 | 
						||
	}
 | 
						||
 | 
						||
	// 测试更新文件
 | 
						||
	retrievedFile.FileName = "updated-test-file.txt"
 | 
						||
	err = models.UpdateFile(retrievedFile)
 | 
						||
	if err != nil {
 | 
						||
		t.Errorf("更新文件失败: %v", err)
 | 
						||
	}
 | 
						||
 | 
						||
	// 测试根据租户获取文件
 | 
						||
	files, err := models.GetFilesByTenant("test-tenant-001")
 | 
						||
	if err != nil {
 | 
						||
		t.Errorf("根据租户获取文件失败: %v", err)
 | 
						||
	}
 | 
						||
	if len(files) == 0 {
 | 
						||
		t.Error("根据租户获取文件为空")
 | 
						||
	}
 | 
						||
 | 
						||
	// 测试根据分类获取文件
 | 
						||
	filesByCategory, err := models.GetFilesByCategory("test")
 | 
						||
	if err != nil {
 | 
						||
		t.Errorf("根据分类获取文件失败: %v", err)
 | 
						||
	}
 | 
						||
	if len(filesByCategory) == 0 {
 | 
						||
		t.Error("根据分类获取文件为空")
 | 
						||
	}
 | 
						||
 | 
						||
	// 测试搜索文件
 | 
						||
	searchFiles, err := models.SearchFiles("test", "test-tenant-001")
 | 
						||
	if err != nil {
 | 
						||
		t.Errorf("搜索文件失败: %v", err)
 | 
						||
	}
 | 
						||
	if len(searchFiles) == 0 {
 | 
						||
		t.Error("搜索文件结果为空")
 | 
						||
	}
 | 
						||
 | 
						||
	// 测试文件统计
 | 
						||
	stats, err := models.GetFileStatistics("test-tenant-001")
 | 
						||
	if err != nil {
 | 
						||
		t.Errorf("获取文件统计失败: %v", err)
 | 
						||
	}
 | 
						||
	t.Logf("文件统计: %+v", stats)
 | 
						||
 | 
						||
	// 测试软删除文件
 | 
						||
	err = models.DeleteFile(id)
 | 
						||
	if err != nil {
 | 
						||
		t.Errorf("软删除文件失败: %v", err)
 | 
						||
	}
 | 
						||
 | 
						||
	// 验证软删除后的状态
 | 
						||
	deletedFile, err := models.GetFileById(id)
 | 
						||
	if err != nil {
 | 
						||
		t.Errorf("获取软删除后的文件失败: %v", err)
 | 
						||
	}
 | 
						||
	if deletedFile.Status != 0 {
 | 
						||
		t.Errorf("软删除后文件状态应为0,实际为: %d", deletedFile.Status)
 | 
						||
	}
 | 
						||
 | 
						||
	// 测试硬删除文件
 | 
						||
	err = models.HardDeleteFile(id)
 | 
						||
	if err != nil {
 | 
						||
		t.Errorf("硬删除文件失败: %v", err)
 | 
						||
	}
 | 
						||
 | 
						||
	t.Log("文件模型测试完成")
 | 
						||
} |