Spaces:
Running
Running
File size: 3,100 Bytes
b110593 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
// _ _
// __ _____ __ ___ ___ __ _| |_ ___
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \
// \ V V / __/ (_| |\ V /| | (_| | || __/
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___|
//
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved.
//
// CONTACT: [email protected]
//
package objects
import (
"context"
"errors"
"testing"
"github.com/go-openapi/strfmt"
"github.com/sirupsen/logrus/hooks/test"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"github.com/weaviate/weaviate/entities/search"
"github.com/weaviate/weaviate/usecases/config"
)
func Test_DeleteObjectsWithSameId(t *testing.T) {
var (
cls = "MyClass"
id = strfmt.UUID("5a1cd361-1e0d-42ae-bd52-ee09cb5f31cc")
)
manager, vectorRepo := newDeleteDependency()
vectorRepo.On("ObjectByID", mock.Anything, mock.Anything, mock.Anything).Return(&search.Result{
ClassName: cls,
}, nil).Once()
vectorRepo.On("ObjectByID", mock.Anything, mock.Anything, mock.Anything).Return(nil, nil).Once()
vectorRepo.On("DeleteObject", cls, id).Return(nil).Once()
err := manager.DeleteObject(context.Background(), nil, "", id, nil, "")
assert.Nil(t, err)
vectorRepo.AssertExpectations(t)
}
func Test_DeleteObject(t *testing.T) {
var (
cls = "MyClass"
id = strfmt.UUID("5a1cd361-1e0d-42ae-bd52-ee09cb5f31cc")
errNotFound = errors.New("object not found")
)
manager, repo := newDeleteDependency()
repo.On("DeleteObject", cls, id).Return(nil).Once()
repo.On("Exists", cls, id).Return(true, nil).Once()
err := manager.DeleteObject(context.Background(), nil, cls, id, nil, "")
assert.Nil(t, err)
repo.AssertExpectations(t)
// delete non existing object
repo.On("Exists", cls, id).Return(false, nil).Once()
err = manager.DeleteObject(context.Background(), nil, cls, id, nil, "")
if _, ok := err.(ErrNotFound); !ok {
t.Errorf("error type got: %T want: ErrNotFound", err)
}
repo.AssertExpectations(t)
// return internal error if exists() fails
repo.On("Exists", cls, id).Return(false, errNotFound).Once()
err = manager.DeleteObject(context.Background(), nil, cls, id, nil, "")
if _, ok := err.(ErrInternal); !ok {
t.Errorf("error type got: %T want: ErrInternal", err)
}
repo.AssertExpectations(t)
// return internal error if deleteObject() fails
repo.On("DeleteObject", cls, id).Return(errNotFound).Once()
repo.On("Exists", cls, id).Return(true, nil).Once()
err = manager.DeleteObject(context.Background(), nil, cls, id, nil, "")
if _, ok := err.(ErrInternal); !ok {
t.Errorf("error type got: %T want: ErrInternal", err)
}
repo.AssertExpectations(t)
}
func newDeleteDependency() (*Manager, *fakeVectorRepo) {
vectorRepo := new(fakeVectorRepo)
logger, _ := test.NewNullLogger()
manager := NewManager(
new(fakeLocks),
new(fakeSchemaManager),
new(config.WeaviateConfig),
logger,
new(fakeAuthorizer),
vectorRepo,
getFakeModulesProvider(),
new(fakeMetrics))
return manager, vectorRepo
}
|