Files
sxchnge/backend/pkg/db/internal/mongo/repositoryimp/index_test.go
T

53 lines
1.4 KiB
Go

package repositoryimp
import (
"testing"
ri "git.sendico.io/tech/sxchnge/bff/pkg/db/repository/index"
"go.mongodb.org/mongo-driver/v2/bson"
)
func TestIndexDefinitionFromDocumentMapsIndexMetadata(t *testing.T) {
ttl := int32(3600)
def := indexDefinitionFromDocument(mongoIndexDocument{
Name: "account_ref_unique",
Key: bson.D{{Key: "accountRef", Value: int32(1)}, {Key: "version", Value: int64(-1)}},
Unique: true,
Sparse: true,
ExpireAfterSeconds: &ttl,
})
if def.Name != "account_ref_unique" || !def.Unique || !def.Sparse {
t.Fatalf("unexpected definition metadata: %#v", def)
}
if def.TTL == nil || *def.TTL != ttl {
t.Fatalf("TTL = %v, want %d", def.TTL, ttl)
}
wantKeys := []ri.Key{
{Field: "accountRef", Sort: ri.Asc},
{Field: "version", Sort: ri.Desc},
}
if len(def.Keys) != len(wantKeys) {
t.Fatalf("keys = %#v, want %#v", def.Keys, wantKeys)
}
for i := range wantKeys {
if def.Keys[i] != wantKeys[i] {
t.Fatalf("keys[%d] = %#v, want %#v", i, def.Keys[i], wantKeys[i])
}
}
}
func TestIndexDefinitionFromDocumentMapsTypedIndex(t *testing.T) {
def := indexDefinitionFromDocument(mongoIndexDocument{
Name: "text_index",
Key: bson.D{{Key: "description", Value: "text"}},
})
if len(def.Keys) != 1 {
t.Fatalf("keys = %#v", def.Keys)
}
if def.Keys[0] != (ri.Key{Field: "description", Type: ri.IndexTypeText}) {
t.Fatalf("key = %#v", def.Keys[0])
}
}