package org.javaee7.jpa.listeners;
import static java.util.Arrays.asList;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import java.util.List;
import javax.inject.Inject;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.javaee7.Parameter;
import org.javaee7.ParameterRule;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(Arquillian.class)
public class JpaListenerInjectionTest {
@Deployment
public static WebArchive deployment() {
return ShrinkWrap.create(WebArchive.class)
.addPackage("org.javaee7.jpa.listeners")
.addPackage(ParameterRule.class.getPackage())
.addPackages(true, "org.apache.commons.lang3")
.addAsResource("META-INF/persistence.xml")
.addAsResource("META-INF/create.sql")
.addAsResource("META-INF/drop.sql")
.addAsResource("META-INF/load.sql");
}
public static final List<ImmutablePair<String, Integer>> movies = asList(
new ImmutablePair<>("The Matrix", 60),
new ImmutablePair<>("The Lord of The Rings", 70),
new ImmutablePair<>("Inception", 80),
new ImmutablePair<>("The Shining", 90)
);
@Rule
public ParameterRule<ImmutablePair<String, Integer>> rule = new ParameterRule<>(movies);
@Parameter
private ImmutablePair<String, Integer> expectedMovie;
@Inject
private MovieBean bean;
@Test
public void should_provide_movie_rating_via_jpa_listener_injection() {
// Given
Movie movie = bean.getMovieByName(expectedMovie.getLeft());
assertThat(movie.getRating(), is(equalTo(expectedMovie.getRight())));
}
}