annotate spring-boot-playground/src/test/java/de/comline/spring/service/MovieServiceTest.java @ 6:d57d0c6a841b

Einbau von liquibase zum Erzeugen des Schemas
author Dirk Olmes <dirk.olmes@codedo.de>
date Thu, 13 Aug 2020 16:18:20 +0200
parents 227f3105fedd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
1 package de.comline.spring.service;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
2
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
3 import static org.hamcrest.MatcherAssert.assertThat;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
4 import static org.hamcrest.Matchers.is;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
5 import static org.mockito.ArgumentMatchers.any;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
6 import static org.mockito.Mockito.mock;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
7 import static org.mockito.Mockito.when;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
8
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
9 import org.junit.jupiter.api.DisplayName;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
10 import org.junit.jupiter.api.Test;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
11 import org.springframework.beans.factory.annotation.Autowired;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
12 import org.springframework.boot.test.context.SpringBootTest;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
13 import org.springframework.context.annotation.Bean;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
14 import org.springframework.context.annotation.Configuration;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
15
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
16 import de.comline.spring.entity.Movie;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
17 import de.comline.spring.repository.MovieRepository;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
18 import de.comline.spring.service.MovieServiceTest.TestConfig;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
19
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
20 @SpringBootTest(classes = {
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
21 MovieService.class,
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
22 TestConfig.class
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
23 })
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
24 public class MovieServiceTest {
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
25 @Autowired
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
26 private MovieService service;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
27
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
28 @Test
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
29 @DisplayName("Test with a mock movie repository")
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
30 void withMockRepository() {
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
31 String title = "the-movie-title";
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
32
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
33 Movie movie = service.createMovie(title);
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
34 assertThat(movie.getTitle(), is(title));
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
35 }
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
36
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
37 @Configuration
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
38 static class TestConfig {
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
39 @Bean
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
40 MovieRepository createMockRepository() {
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
41 MovieRepository mockRepository = mock(MovieRepository.class);
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
42 when(mockRepository.save(any())).thenAnswer(invocation -> {
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
43 return invocation.getArgument(0);
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
44 });
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
45 return mockRepository;
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
46 }
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
47 }
227f3105fedd Erster Unit Test, der das repository einfach nur mockt
Dirk Olmes <dirk.olmes@codedo.de>
parents:
diff changeset
48 }