001package edu.pdx.cs.joy.rmi;
002
003import com.google.common.collect.Iterables;
004import org.junit.jupiter.api.MethodOrderer.MethodName;
005import org.junit.jupiter.api.Test;
006import org.junit.jupiter.api.TestMethodOrder;
007
008import java.rmi.NotBoundException;
009import java.rmi.RemoteException;
010import java.util.Collection;
011
012import static org.hamcrest.CoreMatchers.containsString;
013import static org.hamcrest.CoreMatchers.equalTo;
014import static org.hamcrest.MatcherAssert.assertThat;
015
016@TestMethodOrder(MethodName.class)
017public class MovieDatabaseRmiMainTest extends MovieDatabaseRmiTestCase {
018
019  @Test
020  public void test1CreateMovie() throws RemoteException, NotBoundException {
021    String title = "Black Panther";
022    int year = 2018;
023
024    MainMethodResult result = invokeMain(CreateMovie.class, RMI_HOST, String.valueOf(rmiPort), title, String.valueOf(year));
025    assertThat(result.getTextWrittenToStandardOut(), containsString("Created movie"));
026    assertThat(result.getTextWrittenToStandardError(), equalTo(""));
027
028    MovieDatabase database = getMovieDatabase();
029    Collection<Movie> movies = database.getMovies();
030    assertThat(movies.size(), equalTo(1));
031    Movie movie = Iterables.getOnlyElement(movies);
032    assertThat(movie.getTitle(), equalTo(title));
033    assertThat(movie.getYear(), equalTo(year));
034  }
035
036}