package repositoryimp import ( "testing" ri "git.sendico.io/tech/sxchnge/shared/database/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]) } }