59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
|
package document
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
// 测试用结构体
|
||
|
type TestDoc struct {
|
||
|
ID string `bson:"_id"`
|
||
|
Name string `bson:"name"`
|
||
|
Age int `bson:"age"`
|
||
|
}
|
||
|
|
||
|
func TestDocumentStore(t *testing.T) {
|
||
|
// 测试目录
|
||
|
dir := "./testdb"
|
||
|
defer os.RemoveAll(dir)
|
||
|
|
||
|
// 初始化文档存储
|
||
|
ds, err := NewDocumentStore(dir)
|
||
|
if err != nil {
|
||
|
t.Fatalf("Failed to create document store: %v", err)
|
||
|
}
|
||
|
defer ds.storage.Close()
|
||
|
|
||
|
// 测试文档ID
|
||
|
testID := "001"
|
||
|
|
||
|
// 测试文档内容
|
||
|
testDoc := TestDoc{
|
||
|
ID: testID,
|
||
|
Name: "Alice",
|
||
|
Age: 30,
|
||
|
}
|
||
|
|
||
|
// 测试存储和获取
|
||
|
if err := ds.StoreDocument(testID, testDoc); err != nil {
|
||
|
t.Errorf("StoreDocument failed: %v", err)
|
||
|
}
|
||
|
|
||
|
var result TestDoc
|
||
|
if err := ds.GetDocument(testID, &result); err != nil {
|
||
|
t.Errorf("GetDocument failed: %v", err)
|
||
|
}
|
||
|
|
||
|
if result.Name != testDoc.Name || result.Age != testDoc.Age {
|
||
|
t.Errorf("Retrieved document mismatch: got %+v want %+v", result, testDoc)
|
||
|
}
|
||
|
|
||
|
// 测试删除功能
|
||
|
if err := ds.DeleteDocument(testID); err != nil {
|
||
|
t.Errorf("DeleteDocument failed: %v", err)
|
||
|
}
|
||
|
|
||
|
if err := ds.GetDocument(testID, &result); err == nil {
|
||
|
t.Errorf("Expected error after DeleteDocument")
|
||
|
}
|
||
|
}
|