KevinStephenson
Adding in weaviate code
b110593
raw
history blame
3.1 kB
// _ _
// __ _____ __ ___ ___ __ _| |_ ___
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \
// \ 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
}