Files
ragflow/internal/service/dataset/crud_test.go
Jack 965590ccbe Refactor: dataset/document/file service (#17071)
### Summary

Refactor dataset.go document.do file.go file2document.go in
internal/service.
2026-07-20 09:48:24 +08:00

102 lines
1.9 KiB
Go

package dataset
import (
"testing"
"ragflow/internal/entity"
)
func TestExtractUniqueFileIDs(t *testing.T) {
f1 := "f1"
f2 := "f2"
empty := ""
tests := []struct {
name string
mappings []entity.File2Document
want []string
}{
{
name: "empty",
mappings: nil,
want: nil,
},
{
name: "single file",
mappings: []entity.File2Document{
{FileID: &f1},
},
want: []string{"f1"},
},
{
name: "deduplicates duplicate file IDs",
mappings: []entity.File2Document{
{FileID: &f1},
{FileID: &f1},
{FileID: &f2},
},
want: []string{"f1", "f2"},
},
{
name: "skips nil FileID",
mappings: []entity.File2Document{
{FileID: nil},
{FileID: &f1},
},
want: []string{"f1"},
},
{
name: "skips empty FileID",
mappings: []entity.File2Document{
{FileID: &empty},
{FileID: &f1},
},
want: []string{"f1"},
},
{
name: "all nil or empty returns empty",
mappings: []entity.File2Document{
{FileID: nil},
{FileID: &empty},
},
want: nil,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := extractUniqueFileIDs(tt.mappings)
if len(got) != len(tt.want) {
t.Fatalf("len = %d, want %d (got %v, want %v)", len(got), len(tt.want), got, tt.want)
}
for i := range got {
if got[i] != tt.want[i] {
t.Fatalf("got[%d] = %q, want %q", i, got[i], tt.want[i])
}
}
})
}
}
func TestExtractDocIDs(t *testing.T) {
docs := []entity.Document{
{ID: "d1"},
{ID: "d2"},
{ID: "d3"},
}
got := extractDocIDs(docs)
want := []string{"d1", "d2", "d3"}
if len(got) != len(want) {
t.Fatalf("len = %d, want %d", len(got), len(want))
}
for i := range got {
if got[i] != want[i] {
t.Fatalf("got[%d] = %q, want %q", i, got[i], want[i])
}
}
if got := extractDocIDs(nil); len(got) != 0 {
t.Fatalf("nil input: got %v, want empty", got)
}
}