Hendrik Jungnitsch
2022-09-19 33ab26ef43fa2444ed3f612531c083788a345ecb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package de.gedoplan.seminar.sbt.sbtrestexercise;
 
import de.gedoplan.seminar.sbt.sbtrestexercise.domain.Person;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.reactive.function.client.WebClient;
 
import java.util.List;
 
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class PersonenResourceTest {
 
    @LocalServerPort
    private int port;
    private WebClient client;
 
    @BeforeEach
    public void init() {
        client = WebClient.create("http://localhost:"+port+"/personen");
    }
 
    @Test
    public void testGetPersonen() {
        List<Person> personen = client.get()
                .retrieve().bodyToFlux(Person.class)
                .collectList().block();
        System.out.printf("Found %d talks:\n", personen.size());
        personen.forEach(talk -> System.out.println("  "+talk));
    }
 
    @Test
    public void testGetPersonById() {
        Person person = client.get()
                .uri(ub -> ub.path("/{id}").build(1))
                .retrieve().bodyToMono(Person.class)
                .block();
        System.out.println(person);
    }
 
    @Test
    public void testCreateTalk() {
        Person person = new Person("Duck","Donald");
 
        ResponseEntity<String> response = client.post()
                .contentType(MediaType.APPLICATION_JSON)
                .bodyValue(person)
                .retrieve()
                .toEntity(String.class)
                .block();
 
        System.out.printf("Response status: %03d %s\n", response.getStatusCode().value(), response.getStatusCode().getReasonPhrase());
        String message = switch (response.getStatusCode()) {
            case CREATED -> "URI: %s\n".formatted(response.getHeaders().getLocation());
            case INTERNAL_SERVER_ERROR -> response.getBody();
            default -> "";
        };
        System.out.println(message);
 
    }
 
}