view spring-boot-playground/src/test/java/de/comline/spring/service/MovieServiceTestWithInMemoryDatabase.java @ 8:7ce4367b50bc

Ein echter Unit Test, der eine in-memory H2 als Teil vom Test startet, das Schema mit liquibase erzeugt und nach dem Test wieder stoppt. Das alles ohne die Web Controller zu starten.
author Dirk Olmes <dirk.olmes@codedo.de>
date Thu, 13 Aug 2020 16:51:05 +0200
parents
children f3f9102ef7c0
line wrap: on
line source

package de.comline.spring.service;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.junit.jupiter.api.Assertions.assertTrue;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

import de.comline.spring.entity.Movie;

@SpringBootTest(classes = {
	DataSourceAutoConfiguration.class,
	HibernateJpaAutoConfiguration.class,
	MovieService.class,
})
@EnableJpaRepositories("de.comline.spring.repository")
@EntityScan("de.comline.spring.entity")
public class MovieServiceTestWithInMemoryDatabase {
	@Autowired
	private MovieService service;
	
	@Test
	@DisplayName("Test with a real movie repository")
	void withRealRepository() {
		String title = "the-movie-title";
		
		Movie movie = service.createMovie(title);
		assertThat(movie.getTitle(), is(title));
		assertTrue(movie.getId() > 0);
	}
}