Search in sources :

Example 11 with WebGraphQlHandler

use of org.springframework.graphql.web.WebGraphQlHandler in project spring-graphql by spring-projects.

the class QueryByExampleDataFetcherReactiveMongoDbTests method shouldFetchSingleItemsReactivelyWithInterfaceProjection.

@Test
void shouldFetchSingleItemsReactivelyWithInterfaceProjection() {
    Book book = new Book("42", "Hitchhiker's Guide to the Galaxy", new Author("0", "Douglas", "Adams"));
    repository.save(book).block();
    DataFetcher<?> fetcher = QueryByExampleDataFetcher.builder(repository).projectAs(BookProjection.class).single();
    WebGraphQlHandler handler = graphQlSetup("bookById", fetcher).toWebGraphQlHandler();
    Mono<WebOutput> outputMono = handler.handleRequest(input("{ bookById(id: 42) {name}}"));
    Book actualBook = GraphQlResponse.from(outputMono).toEntity("bookById", Book.class);
    assertThat(actualBook.getName()).isEqualTo("Hitchhiker's Guide to the Galaxy by Douglas Adams");
}
Also used : WebOutput(org.springframework.graphql.web.WebOutput) WebGraphQlHandler(org.springframework.graphql.web.WebGraphQlHandler) Test(org.junit.jupiter.api.Test)

Example 12 with WebGraphQlHandler

use of org.springframework.graphql.web.WebGraphQlHandler in project spring-graphql by spring-projects.

the class QueryByExampleDataFetcherMongoDbTests method shouldFetchSingleItemsWithDtoProjection.

@Test
void shouldFetchSingleItemsWithDtoProjection() {
    Book book = new Book("42", "Hitchhiker's Guide to the Galaxy", new Author("0", "Douglas", "Adams"));
    repository.save(book);
    DataFetcher<?> fetcher = QueryByExampleDataFetcher.builder(repository).projectAs(BookDto.class).single();
    WebGraphQlHandler handler = graphQlSetup("bookById", fetcher).toWebGraphQlHandler();
    Mono<WebOutput> outputMono = handler.handleRequest(input("{ bookById(id: 42) {name}}"));
    Book actualBook = GraphQlResponse.from(outputMono).toEntity("bookById", Book.class);
    assertThat(actualBook.getName()).isEqualTo("The book is: Hitchhiker's Guide to the Galaxy");
}
Also used : WebOutput(org.springframework.graphql.web.WebOutput) WebGraphQlHandler(org.springframework.graphql.web.WebGraphQlHandler) Test(org.junit.jupiter.api.Test)

Example 13 with WebGraphQlHandler

use of org.springframework.graphql.web.WebGraphQlHandler in project spring-graphql by spring-projects.

the class QueryByExampleDataFetcherMongoDbTests method shouldFavorExplicitWiring.

@Test
void shouldFavorExplicitWiring() {
    BookMongoRepository mockRepository = mock(BookMongoRepository.class);
    Book book = new Book("42", "Hitchhiker's Guide to the Galaxy", new Author("0", "Douglas", "Adams"));
    when(mockRepository.findBy(any(), any())).thenReturn(Optional.of(book));
    // 1) Automatic registration only
    WebGraphQlHandler handler = graphQlSetup(mockRepository).toWebGraphQlHandler();
    Mono<WebOutput> outputMono = handler.handleRequest(input("{ bookById(id: 1) {name}}"));
    Book actualBook = GraphQlResponse.from(outputMono).toEntity("bookById", Book.class);
    assertThat(actualBook.getName()).isEqualTo("Hitchhiker's Guide to the Galaxy");
    // 2) Automatic registration and explicit wiring
    handler = graphQlSetup(mockRepository).queryFetcher("bookById", env -> new Book("53", "Breaking Bad", new Author("0", "", "Heisenberg"))).toWebGraphQlHandler();
    outputMono = handler.handleRequest(input("{ bookById(id: 1) {name}}"));
    actualBook = GraphQlResponse.from(outputMono).toEntity("bookById", Book.class);
    assertThat(actualBook.getName()).isEqualTo("Breaking Bad");
}
Also used : WebOutput(org.springframework.graphql.web.WebOutput) WebGraphQlHandler(org.springframework.graphql.web.WebGraphQlHandler) Test(org.junit.jupiter.api.Test)

Aggregations

Test (org.junit.jupiter.api.Test)13 WebGraphQlHandler (org.springframework.graphql.web.WebGraphQlHandler)13 WebOutput (org.springframework.graphql.web.WebOutput)11 Author (org.springframework.graphql.Author)3 Duration (java.time.Duration)2 ArrayList (java.util.ArrayList)2 Collections (java.util.Collections)2 List (java.util.List)2 Map (java.util.Map)2 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)2 BiConsumer (java.util.function.BiConsumer)2 Assertions.as (org.assertj.core.api.Assertions.as)2 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)2 InstanceOfAssertFactories (org.assertj.core.api.InstanceOfAssertFactories)2 GraphQlSetup (org.springframework.graphql.GraphQlSetup)2 ConsumeOneAndNeverCompleteInterceptor (org.springframework.graphql.web.ConsumeOneAndNeverCompleteInterceptor)2 WebInterceptor (org.springframework.graphql.web.WebInterceptor)2 WebSocketHandlerTestSupport (org.springframework.graphql.web.WebSocketHandlerTestSupport)2 WebSocketInterceptor (org.springframework.graphql.web.WebSocketInterceptor)2 GraphQlMessage (org.springframework.graphql.web.support.GraphQlMessage)2