53 lines
1.4 KiB
Go
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])
|
|
}
|
|
}
|