yunzer_go/server/tests/file_test.go
2025-10-27 23:13:08 +08:00

105 lines
2.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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("文件模型测试完成")
}