Search in sources :

Example 6 with ProductsInput

use of com.example.graphql.client.betterbotz.type.ProductsInput in project stargate by stargate.

the class BulkInsertTest method insertOrderAndBulkInsertNProductsWithAtomic.

@Test
@DisplayName("Should execute normal insert and multiple bulk mutations with atomic directive")
public void insertOrderAndBulkInsertNProductsWithAtomic() {
    String productId1 = UUID.randomUUID().toString();
    String productId2 = UUID.randomUUID().toString();
    String productName = "Shiny Legs";
    String description = "Normal legs but shiny.";
    ProductsInput product1 = ProductsInput.builder().id(productId1).name(productName).price("3199.99").created(now()).description(description).build();
    ProductsInput product2 = ProductsInput.builder().id(productId2).name("Non-Legs").price("1000.99").created(now()).description("Non-legs.").build();
    String customerName = "c1";
    OrdersInput order = OrdersInput.builder().prodName(productName).customerName(customerName).price("3199.99").description(description).build();
    ApolloClient client = getApolloClient("/graphql/" + keyspace);
    InsertOrdersAndBulkInsertProductsWithAtomicMutation mutation = InsertOrdersAndBulkInsertProductsWithAtomicMutation.builder().values(Arrays.asList(product1, product2)).orderValue(order).build();
    insertOrdersAndBulkInsertProductsWthAtomic(client, mutation);
    GetProductsWithFilterQuery.Value product1Result = getProduct(client, productId1);
    assertThat(product1Result.getId()).hasValue(productId1);
    assertThat(product1Result.getName()).hasValue(product1.name());
    assertThat(product1Result.getPrice()).hasValue(product1.price());
    assertThat(product1Result.getCreated()).hasValue(product1.created());
    assertThat(product1Result.getDescription()).hasValue(product1.description());
    GetProductsWithFilterQuery.Value product2Result = getProduct(client, productId2);
    assertThat(product2Result.getId()).hasValue(productId2);
    assertThat(product2Result.getName()).hasValue(product2.name());
    assertThat(product2Result.getPrice()).hasValue(product2.price());
    assertThat(product2Result.getCreated()).hasValue(product2.created());
    assertThat(product2Result.getDescription()).hasValue(product2.description());
    assertThat(session.execute(SimpleStatement.newInstance("SELECT * FROM \"Orders\" WHERE \"prodName\" = ?", productName)).one()).isNotNull().extracting(r -> r.getString("\"customerName\""), r -> r.getString("description")).containsExactly(customerName, description);
}
Also used : OrdersInput(com.example.graphql.client.betterbotz.type.OrdersInput) ApolloClient(com.apollographql.apollo.ApolloClient) GetProductsWithFilterQuery(com.example.graphql.client.betterbotz.products.GetProductsWithFilterQuery) Arrays(java.util.Arrays) InsertOrdersAndBulkInsertProductsWithAtomicMutation(com.example.graphql.client.betterbotz.atomic.InsertOrdersAndBulkInsertProductsWithAtomicMutation) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) ProductsInput(com.example.graphql.client.betterbotz.type.ProductsInput) UUID(java.util.UUID) SimpleStatement(com.datastax.oss.driver.api.core.cql.SimpleStatement) ApolloClient(com.apollographql.apollo.ApolloClient) BulkInsertProductsAndOrdersWithAtomicMutation(com.example.graphql.client.betterbotz.atomic.BulkInsertProductsAndOrdersWithAtomicMutation) OrdersInput(com.example.graphql.client.betterbotz.type.OrdersInput) ArrayList(java.util.ArrayList) DisplayName(org.junit.jupiter.api.DisplayName) Test(org.junit.jupiter.api.Test) List(java.util.List) BulkInsertProductsWithAtomicMutation(com.example.graphql.client.betterbotz.atomic.BulkInsertProductsWithAtomicMutation) BulkInsertProductsMutation(com.example.graphql.client.betterbotz.products.BulkInsertProductsMutation) GetProductsWithFilterQuery(com.example.graphql.client.betterbotz.products.GetProductsWithFilterQuery) ProductsInput(com.example.graphql.client.betterbotz.type.ProductsInput) InsertOrdersAndBulkInsertProductsWithAtomicMutation(com.example.graphql.client.betterbotz.atomic.InsertOrdersAndBulkInsertProductsWithAtomicMutation) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Example 7 with ProductsInput

use of com.example.graphql.client.betterbotz.type.ProductsInput in project stargate by stargate.

the class BulkInsertTest method bulkInsertNProductsUsingBulkAndOrderWithAtomic.

@Test
@DisplayName("Should execute multiple mutations including bulk with atomic directive")
public void bulkInsertNProductsUsingBulkAndOrderWithAtomic() {
    String productId1 = UUID.randomUUID().toString();
    String productId2 = UUID.randomUUID().toString();
    String productName = "Shiny Legs";
    String description = "Normal legs but shiny.";
    ProductsInput product1 = ProductsInput.builder().id(productId1).name(productName).price("3199.99").created(now()).description(description).build();
    ProductsInput product2 = ProductsInput.builder().id(productId2).name("Non-Legs").price("1000.99").created(now()).description("Non-legs.").build();
    String customerName = "c1";
    OrdersInput order = OrdersInput.builder().prodName(productName).customerName(customerName).price("3199.99").description(description).build();
    ApolloClient client = getApolloClient("/graphql/" + keyspace);
    BulkInsertProductsAndOrdersWithAtomicMutation mutation = BulkInsertProductsAndOrdersWithAtomicMutation.builder().values(Arrays.asList(product1, product2)).orderValue(order).build();
    List<BulkInsertProductsAndOrdersWithAtomicMutation.Product> result = bulkInsertProductsAndOrdersWithAtomic(client, mutation).getProducts().get();
    BulkInsertProductsAndOrdersWithAtomicMutation.Product firstInsertedProduct = result.get(0);
    BulkInsertProductsAndOrdersWithAtomicMutation.Product secondInsertedProduct = result.get(1);
    assertThat(firstInsertedProduct.getApplied().get()).isTrue();
    assertThat(firstInsertedProduct.getValue()).hasValueSatisfying(value -> {
        assertThat(value.getId()).hasValue(productId1);
    });
    assertThat(secondInsertedProduct.getApplied().get()).isTrue();
    assertThat(secondInsertedProduct.getValue()).hasValueSatisfying(value -> {
        assertThat(value.getId()).hasValue(productId2);
    });
    // retrieve from db
    GetProductsWithFilterQuery.Value product1Result = getProduct(client, productId1);
    assertThat(product1Result.getId()).hasValue(productId1);
    assertThat(product1Result.getName()).hasValue(product1.name());
    assertThat(product1Result.getPrice()).hasValue(product1.price());
    assertThat(product1Result.getCreated()).hasValue(product1.created());
    assertThat(product1Result.getDescription()).hasValue(product1.description());
    GetProductsWithFilterQuery.Value product2Result = getProduct(client, productId2);
    assertThat(product2Result.getId()).hasValue(productId2);
    assertThat(product2Result.getName()).hasValue(product2.name());
    assertThat(product2Result.getPrice()).hasValue(product2.price());
    assertThat(product2Result.getCreated()).hasValue(product2.created());
    assertThat(product2Result.getDescription()).hasValue(product2.description());
    assertThat(session.execute(SimpleStatement.newInstance("SELECT * FROM \"Orders\" WHERE \"prodName\" = ?", productName)).one()).isNotNull().extracting(r -> r.getString("\"customerName\""), r -> r.getString("description")).containsExactly(customerName, description);
}
Also used : OrdersInput(com.example.graphql.client.betterbotz.type.OrdersInput) ApolloClient(com.apollographql.apollo.ApolloClient) GetProductsWithFilterQuery(com.example.graphql.client.betterbotz.products.GetProductsWithFilterQuery) Arrays(java.util.Arrays) InsertOrdersAndBulkInsertProductsWithAtomicMutation(com.example.graphql.client.betterbotz.atomic.InsertOrdersAndBulkInsertProductsWithAtomicMutation) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) ProductsInput(com.example.graphql.client.betterbotz.type.ProductsInput) UUID(java.util.UUID) SimpleStatement(com.datastax.oss.driver.api.core.cql.SimpleStatement) ApolloClient(com.apollographql.apollo.ApolloClient) BulkInsertProductsAndOrdersWithAtomicMutation(com.example.graphql.client.betterbotz.atomic.BulkInsertProductsAndOrdersWithAtomicMutation) OrdersInput(com.example.graphql.client.betterbotz.type.OrdersInput) ArrayList(java.util.ArrayList) DisplayName(org.junit.jupiter.api.DisplayName) Test(org.junit.jupiter.api.Test) List(java.util.List) BulkInsertProductsWithAtomicMutation(com.example.graphql.client.betterbotz.atomic.BulkInsertProductsWithAtomicMutation) BulkInsertProductsMutation(com.example.graphql.client.betterbotz.products.BulkInsertProductsMutation) BulkInsertProductsAndOrdersWithAtomicMutation(com.example.graphql.client.betterbotz.atomic.BulkInsertProductsAndOrdersWithAtomicMutation) GetProductsWithFilterQuery(com.example.graphql.client.betterbotz.products.GetProductsWithFilterQuery) ProductsInput(com.example.graphql.client.betterbotz.type.ProductsInput) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Example 8 with ProductsInput

use of com.example.graphql.client.betterbotz.type.ProductsInput in project stargate by stargate.

the class ApolloTest method deleteProducts.

@Test
public void deleteProducts() {
    ApolloClient client = getApolloClient("/graphql/" + keyspace);
    String productId = UUID.randomUUID().toString();
    ProductsInput insertInput = ProductsInput.builder().id(productId).name("Shiny Legs").price("3199.99").created(now()).description("Normal legs but shiny.").build();
    insertProduct(client, insertInput);
    DeleteProductsMutation mutation = DeleteProductsMutation.builder().value(ProductsInput.builder().id(productId).build()).build();
    DeleteProductsMutation.Data result = getObservable(client.mutate(mutation));
    assertThat(result.getDeleteProducts()).hasValueSatisfying(deleteProducts -> {
        assertThat(deleteProducts.getApplied()).hasValue(true);
        assertThat(deleteProducts.getValue()).hasValueSatisfying(product -> {
            assertThat(product.getId()).hasValue(productId);
            assertThat(product.getName()).isEmpty();
            assertThat(product.getPrice()).isEmpty();
            assertThat(product.getCreated()).isEmpty();
            assertThat(product.getDescription()).isEmpty();
        });
    });
    List<Value> remainingProductValues = getProductValues(client, productId);
    assertThat(remainingProductValues).isEmpty();
}
Also used : ApolloClient(com.apollographql.apollo.ApolloClient) DeleteProductsMutation(com.example.graphql.client.betterbotz.products.DeleteProductsMutation) Value(com.example.graphql.client.betterbotz.products.GetProductsWithFilterQuery.Value) ProductsInput(com.example.graphql.client.betterbotz.type.ProductsInput) Test(org.junit.jupiter.api.Test)

Example 9 with ProductsInput

use of com.example.graphql.client.betterbotz.type.ProductsInput in project stargate by stargate.

the class ApolloTest method updateProductsMissingIfExistsTrue.

@Test
public void updateProductsMissingIfExistsTrue() {
    ApolloClient client = getApolloClient("/graphql/" + keyspace);
    String productId = UUID.randomUUID().toString();
    ProductsInput input = ProductsInput.builder().id(productId).name("Shiny Legs").price("3199.99").created(now()).description("Normal legs but shiny.").build();
    UpdateProductsMutation mutation = UpdateProductsMutation.builder().value(input).ifExists(true).build();
    UpdateProductsMutation.Data result = getObservable(client.mutate(mutation));
    assertThat(result.getUpdateProducts()).hasValueSatisfying(products -> {
        assertThat(products.getApplied()).hasValue(false);
        assertThat(products.getValue()).hasValueSatisfying(value -> {
            assertThat(value.getId()).isEmpty();
            assertThat(value.getName()).isEmpty();
            assertThat(value.getPrice()).isEmpty();
            assertThat(value.getCreated()).isEmpty();
            assertThat(value.getDescription()).isEmpty();
        });
    });
}
Also used : ApolloClient(com.apollographql.apollo.ApolloClient) UpdateProductsMutation(com.example.graphql.client.betterbotz.products.UpdateProductsMutation) ProductsInput(com.example.graphql.client.betterbotz.type.ProductsInput) Test(org.junit.jupiter.api.Test)

Example 10 with ProductsInput

use of com.example.graphql.client.betterbotz.type.ProductsInput in project stargate by stargate.

the class ApolloTest method deleteProductsIfExistsTrue.

@Test
public void deleteProductsIfExistsTrue() {
    ApolloClient client = getApolloClient("/graphql/" + keyspace);
    String productId = UUID.randomUUID().toString();
    ProductsInput insertInput = ProductsInput.builder().id(productId).name("Shiny Legs").price("3199.99").created(now()).description("Normal legs but shiny.").build();
    insertProduct(client, insertInput);
    ProductsInput deleteInput = ProductsInput.builder().id(productId).name(insertInput.name()).price(insertInput.price()).created(insertInput.created()).build();
    DeleteProductsMutation mutation = DeleteProductsMutation.builder().value(deleteInput).ifExists(true).build();
    DeleteProductsMutation.Data result = getObservable(client.mutate(mutation));
    assertThat(result.getDeleteProducts()).hasValueSatisfying(deleteProducts -> {
        assertThat(deleteProducts.getApplied()).hasValue(true);
    });
}
Also used : ApolloClient(com.apollographql.apollo.ApolloClient) DeleteProductsMutation(com.example.graphql.client.betterbotz.products.DeleteProductsMutation) ProductsInput(com.example.graphql.client.betterbotz.type.ProductsInput) Test(org.junit.jupiter.api.Test)

Aggregations

ApolloClient (com.apollographql.apollo.ApolloClient)10 ProductsInput (com.example.graphql.client.betterbotz.type.ProductsInput)10 Test (org.junit.jupiter.api.Test)10 GetProductsWithFilterQuery (com.example.graphql.client.betterbotz.products.GetProductsWithFilterQuery)7 BulkInsertProductsMutation (com.example.graphql.client.betterbotz.products.BulkInsertProductsMutation)4 SimpleStatement (com.datastax.oss.driver.api.core.cql.SimpleStatement)3 BulkInsertProductsAndOrdersWithAtomicMutation (com.example.graphql.client.betterbotz.atomic.BulkInsertProductsAndOrdersWithAtomicMutation)3 BulkInsertProductsWithAtomicMutation (com.example.graphql.client.betterbotz.atomic.BulkInsertProductsWithAtomicMutation)3 InsertOrdersAndBulkInsertProductsWithAtomicMutation (com.example.graphql.client.betterbotz.atomic.InsertOrdersAndBulkInsertProductsWithAtomicMutation)3 Value (com.example.graphql.client.betterbotz.products.GetProductsWithFilterQuery.Value)3 OrdersInput (com.example.graphql.client.betterbotz.type.OrdersInput)3 ArrayList (java.util.ArrayList)3 Arrays (java.util.Arrays)3 List (java.util.List)3 UUID (java.util.UUID)3 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)3 DisplayName (org.junit.jupiter.api.DisplayName)3 DeleteProductsMutation (com.example.graphql.client.betterbotz.products.DeleteProductsMutation)2 UpdateProductsMutation (com.example.graphql.client.betterbotz.products.UpdateProductsMutation)2 InsertProductsMutation (com.example.graphql.client.betterbotz.products.InsertProductsMutation)1