Search in sources :

Example 1 with ObjectField

use of org.dotwebstack.framework.core.model.ObjectField in project dotwebstack-framework by dotwebstack.

the class PostgresBackendLoaderTest method loadMany_returnsFluxObject.

@Test
void loadMany_returnsFluxObject() {
    FetchSpec fetchSpec = mock(FetchSpec.class);
    when(fetchSpec.all()).thenReturn(Flux.just(Collections.emptyMap()));
    DatabaseClient.GenericExecuteSpec anotherSpec = mock(DatabaseClient.GenericExecuteSpec.class);
    when(anotherSpec.fetch()).thenReturn(fetchSpec);
    DatabaseClient.GenericExecuteSpec spec = mock(DatabaseClient.GenericExecuteSpec.class);
    when(spec.bind(anyInt(), any())).thenReturn(anotherSpec);
    when(databaseClient.sql(anyString())).thenReturn(spec);
    Map<String, Object> source = new HashMap<>();
    source.put("a", "bbb");
    RequestContext requestContext = RequestContext.builder().objectField(mock(ObjectField.class)).source(source).build();
    ObjectRequest objectRequest = initObjectRequest();
    CollectionRequest request = CollectionRequest.builder().objectRequest(objectRequest).sortCriterias(List.of()).build();
    var res = backendLoader.loadMany(request, requestContext);
    assertThat(res, CoreMatchers.is(notNullValue()));
    res.doOnNext(result -> assertTrue(result.isEmpty())).subscribe();
}
Also used : ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) CoreMatchers(org.hamcrest.CoreMatchers) BeforeEach(org.junit.jupiter.api.BeforeEach) CollectionBatchRequest(org.dotwebstack.framework.core.query.model.CollectionBatchRequest) Mock(org.mockito.Mock) RequestContext(org.dotwebstack.framework.core.query.model.RequestContext) HashMap(java.util.HashMap) FieldRequest(org.dotwebstack.framework.core.query.model.FieldRequest) Disabled(org.junit.jupiter.api.Disabled) DatabaseClient(org.springframework.r2dbc.core.DatabaseClient) ContextField(org.dotwebstack.framework.core.model.ContextField) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) Map(java.util.Map) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) ArgumentMatchers.anyInt(org.mockito.ArgumentMatchers.anyInt) MockitoExtension(org.mockito.junit.jupiter.MockitoExtension) Matchers.notNullValue(org.hamcrest.Matchers.notNullValue) PostgresObjectType(org.dotwebstack.framework.backend.postgres.model.PostgresObjectType) Context(org.dotwebstack.framework.core.model.Context) Mockito.when(org.mockito.Mockito.when) CollectionRequest(org.dotwebstack.framework.core.query.model.CollectionRequest) ObjectRequest(org.dotwebstack.framework.core.query.model.ObjectRequest) FetchSpec(org.springframework.r2dbc.core.FetchSpec) JoinCriteria(org.dotwebstack.framework.core.query.model.JoinCriteria) PostgresObjectField(org.dotwebstack.framework.backend.postgres.model.PostgresObjectField) Test(org.junit.jupiter.api.Test) Flux(reactor.core.publisher.Flux) List(java.util.List) ObjectField(org.dotwebstack.framework.core.model.ObjectField) ContextCriteria(org.dotwebstack.framework.core.query.model.ContextCriteria) JoinTable(org.dotwebstack.framework.backend.postgres.model.JoinTable) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) Collections(java.util.Collections) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) Mockito.mock(org.mockito.Mockito.mock) CollectionRequest(org.dotwebstack.framework.core.query.model.CollectionRequest) FetchSpec(org.springframework.r2dbc.core.FetchSpec) HashMap(java.util.HashMap) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ObjectRequest(org.dotwebstack.framework.core.query.model.ObjectRequest) DatabaseClient(org.springframework.r2dbc.core.DatabaseClient) PostgresObjectField(org.dotwebstack.framework.backend.postgres.model.PostgresObjectField) ObjectField(org.dotwebstack.framework.core.model.ObjectField) RequestContext(org.dotwebstack.framework.core.query.model.RequestContext) Test(org.junit.jupiter.api.Test)

Example 2 with ObjectField

use of org.dotwebstack.framework.core.model.ObjectField in project dotwebstack-framework by dotwebstack.

the class BackendDataFetcherTest method get_returnsCompletableFuture_ifNotSubscription_ListTypeTrue_and_JoinCondition.

@Test
@Disabled("fix me")
void get_returnsCompletableFuture_ifNotSubscription_ListTypeTrue_and_JoinCondition() {
    Map<String, Object> source = new HashMap<>();
    source.put("a", "bbb");
    Map<String, Object> condition = new HashMap<>();
    condition.put("b", "ccc");
    var joinCondition = JoinCondition.builder().key(condition).build();
    source.put("$join:aaa", joinCondition);
    graphql.language.Field fieldMock = new Field("aaa");
    var requestContext = RequestContext.builder().objectField(mock(ObjectField.class)).source(source).build();
    when(requestFactory.createRequestContext(environment)).thenReturn(requestContext);
    when(environment.getSource()).thenReturn(source);
    lenient().when(environment.getField()).thenReturn(fieldMock);
    GraphQLList listType = mock(GraphQLList.class);
    when(environment.getFieldType()).thenReturn(listType);
    mockOperationDefinition(OperationDefinition.Operation.QUERY);
    when(environment.getDataLoaderRegistry()).thenReturn(new DataLoaderRegistry());
    var collectionRequest = CollectionRequest.builder().objectRequest(ObjectRequest.builder().build()).build();
    DataFetchingFieldSelectionSet selectionSet = mock(DataFetchingFieldSelectionSet.class);
    when(environment.getSelectionSet()).thenReturn(selectionSet);
    var executionStepInfo = mockExecutionStepInfoWithResultPath("fff", "fff");
    lenient().when(requestFactory.createCollectionRequest(eq(executionStepInfo), eq(selectionSet))).thenReturn(collectionRequest);
    var result = backendDataFetcher.get(environment);
    assertThat(result, notNullValue());
    assertTrue(result instanceof CompletableFuture);
    verify(requestFactory, times(2)).createCollectionRequest(any(ExecutionStepInfo.class), any(DataFetchingFieldSelectionSet.class));
    verify(requestFactory).createRequestContext(any(DataFetchingEnvironment.class));
}
Also used : GraphQLList(graphql.schema.GraphQLList) HashMap(java.util.HashMap) DataFetchingFieldSelectionSet(graphql.schema.DataFetchingFieldSelectionSet) Field(graphql.language.Field) DataFetchingEnvironment(graphql.schema.DataFetchingEnvironment) ObjectField(org.dotwebstack.framework.core.model.ObjectField) MergedField(graphql.execution.MergedField) Field(graphql.language.Field) CompletableFuture(java.util.concurrent.CompletableFuture) DataLoaderRegistry(org.dataloader.DataLoaderRegistry) ExecutionStepInfo(graphql.execution.ExecutionStepInfo) ObjectField(org.dotwebstack.framework.core.model.ObjectField) GraphQLObjectType.newObject(graphql.schema.GraphQLObjectType.newObject) Test(org.junit.jupiter.api.Test) Disabled(org.junit.jupiter.api.Disabled)

Example 3 with ObjectField

use of org.dotwebstack.framework.core.model.ObjectField in project dotwebstack-framework by dotwebstack.

the class BackendDataFetcherTest method get_returnsFluxMap_ifSourceNull_SubscriptionTrue.

@Test
void get_returnsFluxMap_ifSourceNull_SubscriptionTrue() {
    var requestContext = RequestContext.builder().objectField(mock(ObjectField.class)).source(null).build();
    when(requestFactory.createRequestContext(environment)).thenReturn(requestContext);
    when(environment.getSource()).thenReturn(null);
    graphql.language.Field fieldMock = new Field("aaa");
    lenient().when(environment.getField()).thenReturn(fieldMock);
    mockOperationDefinition(OperationDefinition.Operation.SUBSCRIPTION);
    var collectionRequest = mock(CollectionRequest.class);
    var selectionSet = mock(DataFetchingFieldSelectionSet.class);
    when(environment.getSelectionSet()).thenReturn(selectionSet);
    var executionStepInfo = mockExecutionStepInfoWithResultPath("bbb", "bbb");
    lenient().when(requestFactory.createCollectionRequest(eq(executionStepInfo), eq(selectionSet))).thenReturn(collectionRequest);
    Map<String, Object> data = new HashMap<>();
    data.put("aa", new String[] { "a", "b" });
    when(backendLoader.loadMany(any(CollectionRequest.class), any(RequestContext.class))).thenReturn(Flux.just(data));
    mockGraphQlFieldDefinition(Map.of());
    var result = ((Flux<?>) backendDataFetcher.get(environment)).blockFirst();
    assertThat(result, CoreMatchers.is(notNullValue()));
    assertTrue(result instanceof Map);
    assertThat(((Map<?, ?>) result).get("aa"), is(data.get("aa")));
    verify(requestFactory).createCollectionRequest(any(ExecutionStepInfo.class), any(DataFetchingFieldSelectionSet.class));
    verify(backendLoader).loadMany(any(CollectionRequest.class), any(RequestContext.class));
}
Also used : CollectionRequest(org.dotwebstack.framework.core.query.model.CollectionRequest) HashMap(java.util.HashMap) DataFetchingFieldSelectionSet(graphql.schema.DataFetchingFieldSelectionSet) GroupedFlux(reactor.core.publisher.GroupedFlux) KeyGroupedFlux(org.dotwebstack.framework.core.datafetchers.KeyGroupedFlux) Flux(reactor.core.publisher.Flux) Field(graphql.language.Field) ObjectField(org.dotwebstack.framework.core.model.ObjectField) MergedField(graphql.execution.MergedField) Field(graphql.language.Field) ExecutionStepInfo(graphql.execution.ExecutionStepInfo) ObjectField(org.dotwebstack.framework.core.model.ObjectField) GraphQLObjectType.newObject(graphql.schema.GraphQLObjectType.newObject) RequestContext(org.dotwebstack.framework.core.query.model.RequestContext) Map(java.util.Map) HashMap(java.util.HashMap) Test(org.junit.jupiter.api.Test)

Example 4 with ObjectField

use of org.dotwebstack.framework.core.model.ObjectField in project dotwebstack-framework by dotwebstack.

the class AggregateHelperTest method isAggregate_returnsFalse_forNonAggregateField.

@Test
void isAggregate_returnsFalse_forNonAggregateField() {
    ObjectField objectField = mock(ObjectField.class);
    when(objectField.getAggregationOf()).thenReturn(null);
    assertThat(isAggregate(objectField), is(false));
}
Also used : ObjectField(org.dotwebstack.framework.core.model.ObjectField) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 5 with ObjectField

use of org.dotwebstack.framework.core.model.ObjectField in project dotwebstack-framework by dotwebstack.

the class AggregateHelperTest method isAggregate_returnsTrue_forAggregateField.

@Test
void isAggregate_returnsTrue_forAggregateField() {
    ObjectField objectField = mock(ObjectField.class);
    when(objectField.getAggregationOf()).thenReturn("testAggregate");
    assertThat(isAggregate(objectField), is(true));
}
Also used : ObjectField(org.dotwebstack.framework.core.model.ObjectField) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Aggregations

ObjectField (org.dotwebstack.framework.core.model.ObjectField)13 Test (org.junit.jupiter.api.Test)10 HashMap (java.util.HashMap)6 Map (java.util.Map)5 ObjectRequest (org.dotwebstack.framework.core.query.model.ObjectRequest)5 RequestContext (org.dotwebstack.framework.core.query.model.RequestContext)5 ExecutionStepInfo (graphql.execution.ExecutionStepInfo)4 DataFetchingFieldSelectionSet (graphql.schema.DataFetchingFieldSelectionSet)4 GraphQLObjectType.newObject (graphql.schema.GraphQLObjectType.newObject)4 CollectionRequest (org.dotwebstack.framework.core.query.model.CollectionRequest)4 MergedField (graphql.execution.MergedField)3 Field (graphql.language.Field)3 List (java.util.List)3 CompletableFuture (java.util.concurrent.CompletableFuture)3 Schema (org.dotwebstack.framework.core.model.Schema)3 GraphQLList (graphql.schema.GraphQLList)2 Collections (java.util.Collections)2 JoinTable (org.dotwebstack.framework.backend.postgres.model.JoinTable)2 PostgresObjectField (org.dotwebstack.framework.backend.postgres.model.PostgresObjectField)2 PostgresObjectType (org.dotwebstack.framework.backend.postgres.model.PostgresObjectType)2