SemanticSearchPOC / test /helper /objects_assertions.go
KevinStephenson
Adding in weaviate code
b110593
raw
history blame
7.02 kB
// _ _
// __ _____ __ ___ ___ __ _| |_ ___
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \
// \ V V / __/ (_| |\ V /| | (_| | || __/
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___|
//
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved.
//
// CONTACT: [email protected]
//
package helper
import (
"net/http"
"testing"
"github.com/go-openapi/strfmt"
"github.com/weaviate/weaviate/client/objects"
"github.com/weaviate/weaviate/client/schema"
"github.com/weaviate/weaviate/entities/models"
"github.com/weaviate/weaviate/usecases/replica"
)
func AssertCreateObject(t *testing.T, className string, schema map[string]interface{}) strfmt.UUID {
t.Helper()
params := objects.NewObjectsCreateParams().WithBody(
&models.Object{
Class: className,
Properties: schema,
})
resp, err := Client(t).Objects.ObjectsCreate(params, nil)
var objectID strfmt.UUID
// Ensure that the response is OK
AssertRequestOk(t, resp, err, func() {
objectID = resp.Payload.ID
})
return objectID
}
func AssertGetObject(t *testing.T, class string, uuid strfmt.UUID, include ...string) *models.Object {
t.Helper()
obj, err := GetObject(t, class, uuid, include...)
AssertRequestOk(t, obj, err, nil)
return obj
}
func AssertGetObjectEventually(t *testing.T, class string, uuid strfmt.UUID) *models.Object {
var (
resp *objects.ObjectsClassGetOK
err error
)
checkThunk := func() interface{} {
resp, err = Client(t).Objects.ObjectsClassGet(objects.NewObjectsClassGetParams().WithClassName(class).WithID(uuid), nil)
return err == nil
}
AssertEventuallyEqual(t, true, checkThunk)
var object *models.Object
AssertRequestOk(t, resp, err, func() {
object = resp.Payload
})
return object
}
func AssertGetObjectFailsEventually(t *testing.T, class string, uuid strfmt.UUID) error {
var err error
checkThunk := func() interface{} {
_, err = Client(t).Objects.ObjectsClassGet(objects.NewObjectsClassGetParams().WithClassName(class).WithID(uuid), nil)
return err != nil
}
AssertEventuallyEqual(t, true, checkThunk)
return err
}
func AssertCreateObjectClass(t *testing.T, class *models.Class) {
t.Helper()
params := schema.NewSchemaObjectsCreateParams().WithObjectClass(class)
resp, err := Client(t).Schema.SchemaObjectsCreate(params, nil)
AssertRequestOk(t, resp, err, nil)
}
func AssertDeleteObjectClass(t *testing.T, class string) {
delRes, err := DeleteClassObject(t, class)
AssertRequestOk(t, delRes, err, nil)
}
func GetObject(t *testing.T, class string, uuid strfmt.UUID, include ...string) (*models.Object, error) {
req := objects.NewObjectsClassGetParams().WithID(uuid)
if class != "" {
req.WithClassName(class)
}
if len(include) > 0 {
req.WithInclude(&include[0])
}
getResp, err := Client(t).Objects.ObjectsClassGet(req, nil)
if err != nil {
return nil, err
}
return getResp.Payload, nil
}
func TenantObject(t *testing.T, class string, id strfmt.UUID, tenant string) (*models.Object, error) {
req := objects.NewObjectsClassGetParams().
WithClassName(class).WithID(id).WithTenant(&tenant)
getResp, err := Client(t).Objects.ObjectsClassGet(req, nil)
if err != nil {
return nil, err
}
return getResp.Payload, nil
}
func TenantObjectWithInclude(t *testing.T, class string, id strfmt.UUID, tenant string, includes string) (*models.Object, error) {
req := objects.NewObjectsClassGetParams().
WithClassName(class).WithID(id).WithTenant(&tenant).WithInclude(&includes)
getResp, err := Client(t).Objects.ObjectsClassGet(req, nil)
if err != nil {
return nil, err
}
return getResp.Payload, nil
}
func GetObjectCL(t *testing.T, class string, uuid strfmt.UUID,
cl replica.ConsistencyLevel, include ...string,
) (*models.Object, error) {
req := objects.NewObjectsClassGetParams().WithID(uuid)
if class != "" {
req.WithClassName(class)
}
if len(include) > 0 {
req.WithInclude(&include[0])
}
cls := string(cl)
req.ConsistencyLevel = &cls
getResp, err := Client(t).Objects.ObjectsClassGet(req, nil)
if err != nil {
return nil, err
}
return getResp.Payload, nil
}
func ObjectExistsCL(t *testing.T, class string, id strfmt.UUID, cl replica.ConsistencyLevel) (bool, error) {
cls := string(cl)
req := objects.NewObjectsClassHeadParams().
WithClassName(class).WithID(id).WithConsistencyLevel(&cls)
resp, err := Client(t).Objects.ObjectsClassHead(req, nil)
if err != nil {
return false, err
}
return resp.IsCode(http.StatusNoContent), nil
}
func TenantObjectExists(t *testing.T, class string, id strfmt.UUID, tenant string) (bool, error) {
req := objects.NewObjectsClassHeadParams().
WithClassName(class).WithID(id).WithTenant(&tenant)
resp, err := Client(t).Objects.ObjectsClassHead(req, nil)
if err != nil {
return false, err
}
return resp.IsCode(http.StatusNoContent), nil
}
func GetObjectFromNode(t *testing.T, class string, uuid strfmt.UUID, nodename string) (*models.Object, error) {
req := objects.NewObjectsClassGetParams().WithID(uuid)
if class != "" {
req.WithClassName(class)
}
if nodename != "" {
req.WithNodeName(&nodename)
}
getResp, err := Client(t).Objects.ObjectsClassGet(req, nil)
if err != nil {
return nil, err
}
return getResp.Payload, nil
}
func GetTenantObjectFromNode(t *testing.T, class string, uuid strfmt.UUID, nodename, tenant string) (*models.Object, error) {
req := objects.NewObjectsClassGetParams().WithID(uuid).
WithClassName(class).
WithNodeName(&nodename).
WithTenant(&tenant)
getResp, err := Client(t).Objects.ObjectsClassGet(req, nil)
if err != nil {
return nil, err
}
return getResp.Payload, nil
}
func DeleteClassObject(t *testing.T, class string) (*schema.SchemaObjectsDeleteOK, error) {
delParams := schema.NewSchemaObjectsDeleteParams().WithClassName(class)
return Client(t).Schema.SchemaObjectsDelete(delParams, nil)
}
func DeleteTenantObject(t *testing.T, class string, id strfmt.UUID, tenant string) {
params := objects.NewObjectsClassDeleteParams().
WithClassName(class).WithID(id).WithTenant(&tenant)
resp, err := Client(t).Objects.ObjectsClassDelete(params, nil)
AssertRequestOk(t, resp, err, nil)
}
func ListObjects(t *testing.T, class string) (*models.ObjectsListResponse, error) {
params := objects.NewObjectsListParams()
if class != "" {
params.WithClass(&class)
}
resp, err := Client(t).Objects.ObjectsList(params, nil)
if err != nil {
return nil, err
}
return resp.Payload, nil
}
func TenantListObjects(t *testing.T, class string, tenant string) (*models.ObjectsListResponse, error) {
params := objects.NewObjectsListParams().WithTenant(&tenant)
if class != "" {
params.WithClass(&class)
}
resp, err := Client(t).Objects.ObjectsList(params, nil)
if err != nil {
return nil, err
}
return resp.Payload, nil
}