Spaces:
Sleeping
Sleeping
| // _ _ | |
| // __ _____ __ ___ ___ __ _| |_ ___ | |
| // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ | |
| // \ V V / __/ (_| |\ V /| | (_| | || __/ | |
| // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| | |
| // | |
| // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. | |
| // | |
| // CONTACT: [email protected] | |
| // | |
| // TODO: change this test to simulate a successful query response when the test dataset is implemented. | |
| // Acceptance tests for the batch ObjectsCreate endpoint | |
| package batch_request_endpoints | |
| import ( | |
| "fmt" | |
| "testing" | |
| "github.com/stretchr/testify/assert" | |
| "github.com/weaviate/weaviate/client/batch" | |
| "github.com/weaviate/weaviate/entities/models" | |
| "github.com/weaviate/weaviate/test/helper" | |
| ) | |
| // Test if batching is working correctly. Sends an OK batch containing two batched requests that refer to non-existing classes. | |
| // The expected outcome is a 200 batch response containing two batched responses. These batched responses should both contain errors. | |
| func TestBatchObjectsCreateResultsOrder(t *testing.T) { | |
| t.Parallel() | |
| classOneName := "ItIsExtremelyUnlikelyThatThisClassActuallyExistsButJustToBeSureHereAreSomeRandomNumbers12987825624398509861298409782539802434516542" | |
| classTwoName := "ItIsExtremelyUnlikelyThatThisClassActuallyExistsButJustToBeSureHereAreSomeRandomNumbers12987825624398509861298409782539802434516541" | |
| expectedResult := "class '%s' not present in schema" | |
| // generate objectcreate content | |
| object1 := &models.Object{ | |
| Class: classOneName, | |
| Properties: map[string]interface{}{ | |
| "testString": "Test string", | |
| }, | |
| } | |
| object2 := &models.Object{ | |
| Class: classTwoName, | |
| Properties: map[string]interface{}{ | |
| "testWholeNumber": 1, | |
| }, | |
| } | |
| testFields := "ALL" | |
| // generate request body | |
| params := batch.NewBatchObjectsCreateParams().WithBody(batch.BatchObjectsCreateBody{ | |
| Objects: []*models.Object{object1, object2}, | |
| Fields: []*string{&testFields}, | |
| }) | |
| // perform the request | |
| resp, err := helper.BatchClient(t).BatchObjectsCreate(params, nil) | |
| // ensure that the response is OK | |
| helper.AssertRequestOk(t, resp, err, func() { | |
| objectsCreateResponse := resp.Payload | |
| // check if the batch response contains two batched responses | |
| assert.Equal(t, 2, len(objectsCreateResponse)) | |
| // check if the error message matches the expected outcome (and are therefore returned in the correct order) | |
| if len(objectsCreateResponse) == 2 { | |
| responseOne := objectsCreateResponse[0].Result.Errors.Error[0].Message | |
| responseTwo := objectsCreateResponse[1].Result.Errors.Error[0].Message | |
| fullExpectedOutcomeOne := fmt.Sprintf(expectedResult, classOneName) | |
| assert.Contains(t, responseOne, fullExpectedOutcomeOne) | |
| fullExpectedOutcomeTwo := fmt.Sprintf(expectedResult, classTwoName) | |
| assert.Contains(t, responseTwo, fullExpectedOutcomeTwo) | |
| } | |
| }) | |
| } | |