Spaces:
Sleeping
Sleeping
| // _ _ | |
| // __ _____ __ ___ ___ __ _| |_ ___ | |
| // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ | |
| // \ 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 | |
| } | |