2025-02-04 10:03:39 +01:00
|
|
|
package movierental;
|
|
|
|
|
|
|
|
|
|
import org.junit.jupiter.api.Test;
|
2025-02-05 11:50:07 +01:00
|
|
|
import org.mockito.Mockito;
|
2025-02-04 10:03:39 +01:00
|
|
|
|
2025-02-05 11:50:07 +01:00
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
2025-02-04 10:51:36 +01:00
|
|
|
import static org.mockito.Mockito.when;
|
2025-02-04 10:03:39 +01:00
|
|
|
|
|
|
|
|
public class CustomerTest {
|
|
|
|
|
|
|
|
|
|
@Test
|
2025-02-05 11:50:07 +01:00
|
|
|
public void testSingleRegularMovie() {
|
2025-02-04 10:35:05 +01:00
|
|
|
// Given
|
2025-02-04 10:03:39 +01:00
|
|
|
Customer customer = new Customer("Bob");
|
2025-02-05 11:50:07 +01:00
|
|
|
Movie mockMovie = Mockito.mock(Movie.class);
|
2025-02-04 10:51:36 +01:00
|
|
|
|
|
|
|
|
when(mockMovie.getTitle()).thenReturn("Mock Movie");
|
|
|
|
|
when(mockMovie.getPriceCode()).thenReturn(Movie.REGULAR);
|
2025-02-05 11:50:07 +01:00
|
|
|
when(mockMovie.calculatePrice(2)).thenReturn(2.0);
|
2025-02-04 10:51:36 +01:00
|
|
|
customer.addRental(new Rental(mockMovie, 2));
|
2025-02-04 10:03:39 +01:00
|
|
|
|
2025-02-04 10:35:05 +01:00
|
|
|
// When
|
|
|
|
|
String statement = customer.statement();
|
|
|
|
|
|
|
|
|
|
// Then
|
2025-02-04 10:03:39 +01:00
|
|
|
String expected = "" +
|
|
|
|
|
"Rental Record for Bob\n" +
|
2025-02-04 10:51:36 +01:00
|
|
|
"\tMock Movie\t2.0\n" +
|
|
|
|
|
"Amount owed is 2.0\n" +
|
|
|
|
|
"You earned 1 frequent renter points";
|
|
|
|
|
|
2025-02-05 11:50:07 +01:00
|
|
|
assertEquals(expected, statement);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testSingleNewReleaseMovie() {
|
|
|
|
|
// Given
|
|
|
|
|
Customer customer = new Customer("Bob");
|
|
|
|
|
Movie mockMovie = Mockito.mock(Movie.class);
|
|
|
|
|
|
|
|
|
|
when(mockMovie.getTitle()).thenReturn("Mock Movie");
|
|
|
|
|
when(mockMovie.getPriceCode()).thenReturn(Movie.NEW_RELEASE);
|
|
|
|
|
when(mockMovie.calculatePrice(3)).thenReturn(9.0);
|
|
|
|
|
customer.addRental(new Rental(mockMovie, 3));
|
|
|
|
|
|
|
|
|
|
// When
|
|
|
|
|
String statement = customer.statement();
|
|
|
|
|
|
|
|
|
|
// Then
|
|
|
|
|
String expected = "" +
|
|
|
|
|
"Rental Record for Bob\n" +
|
|
|
|
|
"\tMock Movie\t9.0\n" +
|
|
|
|
|
"Amount owed is 9.0\n" +
|
|
|
|
|
"You earned 2 frequent renter points";
|
|
|
|
|
|
|
|
|
|
assertEquals(expected, statement);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testSingleChildrenMovie() {
|
|
|
|
|
// Given
|
|
|
|
|
Customer customer = new Customer("Bob");
|
|
|
|
|
Movie mockMovie = Mockito.mock(Movie.class);
|
|
|
|
|
|
|
|
|
|
when(mockMovie.getTitle()).thenReturn("Mock Movie");
|
|
|
|
|
when(mockMovie.getPriceCode()).thenReturn(Movie.CHILDRENS);
|
|
|
|
|
when(mockMovie.calculatePrice(4)).thenReturn(3.0);
|
|
|
|
|
customer.addRental(new Rental(mockMovie, 4));
|
|
|
|
|
|
|
|
|
|
// When
|
|
|
|
|
String statement = customer.statement();
|
|
|
|
|
|
|
|
|
|
// Then
|
|
|
|
|
String expected = "" +
|
|
|
|
|
"Rental Record for Bob\n" +
|
|
|
|
|
"\tMock Movie\t3.0\n" +
|
|
|
|
|
"Amount owed is 3.0\n" +
|
|
|
|
|
"You earned 1 frequent renter points";
|
|
|
|
|
|
|
|
|
|
assertEquals(expected, statement);
|
2025-02-04 10:03:39 +01:00
|
|
|
}
|
|
|
|
|
}
|