Spaces:
Sleeping
Sleeping
| // _ _ | |
| // __ _____ __ ___ ___ __ _| |_ ___ | |
| // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ | |
| // \ V V / __/ (_| |\ V /| | (_| | || __/ | |
| // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| | |
| // | |
| // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. | |
| // | |
| // CONTACT: hello@weaviate.io | |
| // | |
| 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 | |
| } | |