class CustomerTest(unittest.TestCase): """ Tests of the Customer class""" def setUp(self): """Test fixture contains: c = a customer movies = list of some movies """ self.c = Customer("Movie Mogul") self.new_movie = Movie("Mulan", Movie.NEW_RELEASE) self.regular_movie = Movie("CitizenFour", Movie.REGULAR) self.childrens_movie = Movie("Frozen", Movie.CHILDRENS) @unittest.skip("No convenient way to test") def test_billing(): # no convenient way to test billing since its buried in the statement() method. pass def test_statement(self): stmt = self.c.statement() # visual testing print(stmt) # get total charges from statement using a regex pattern = r".*Total [Cc]harges\s+(\d+\.\d\d).*" matches = re.match(pattern, stmt, flags=re.DOTALL) self.assertIsNotNone(matches) self.assertEqual("0.00", matches[1]) # add a rental self.c.add_rental(Rental(self.new_movie, 4)) # days stmt = self.c.statement() matches = re.match(pattern, stmt.replace('\n',''), flags=re.DOTALL) self.assertIsNotNone(matches) self.assertEqual("12.00", matches[1])
def test_customer_method(self): """Test method in customer class""" eiei = Customer("eiei") self.assertEqual("eiei",eiei.get_name()) eiei.add_rental(Rental(Movie("UmuUmu", Movie.NEW_RELEASE), 5)) self.assertEqual(eiei.all_frequent_points(), 5) self.assertEqual(eiei.all_amount(), 15)
def test_statement(self): customer = Customer("Jamie") movies = [ Movie("Interstella", MovieCode.REGULAR), Movie("Arrival", MovieCode.NEW_RELEASE), Movie("Moana", MovieCode.CHILDREN), Movie("LaLaLand", MovieCode.NEW_RELEASE) ] for i in range(4): customer.add_rental(Rental(movies[i], i + 3)) self.assertEqual( customer.statement(), "Rental record for Jamie\n" + "\tInterstella\t3.5\n" + "\tArrival\t12\n" + "\tMoana\t4.5\n" + "\tLaLaLand\t18\n" + "You owed 38.0\nYou earned 6 points\n")
def test_statement_for_many_movies_and_rentals(self): customer1 = Customer('David') movie1 = Movie('Madagascar', Movie.CHILDRENS) rental1 = Rental(movie1, 6) # 6 day rental movie2 = Movie('Star Wars', Movie.NEW_RELEASE) rental2 = Rental(movie2, 2) # 2 day rental movie3 = Movie('Gone with the Wind', Movie.REGULAR) rental3 = Rental(movie3, 8) # 8 day rental customer1.add_rental(rental1) customer1.add_rental(rental2) customer1.add_rental(rental3) expected = """Rental Record for David \tMadagascar\t6.0 \tStar Wars\t6.0 \tGone with the Wind\t11.0 Amount owed is 23.0 You earned 4 frequent renter points""" statement = customer1.statement() self.assertEqual(expected, statement)
def test_statement_for_many_movies_and_rentals(self): customer1 = Customer('David') movie1 = Movie('Madagascar', Movie.CHILDRENS) rental1 = Rental(movie1, 6) # 6 day rental movie2 = Movie('Star Wars', Movie.NEW_RELEASE) rental2 = Rental(movie2, 2) # 2 day rental movie3 = Movie('Gone with the Wind', Movie.REGULAR) rental3 = Rental(movie3, 8) # 8 day rental customer1.add_rental(rental1) customer1.add_rental(rental2) customer1.add_rental(rental3) expected = """Rental Record for David \tMadagascar\t6.0 \tStar Wars\t6.0 \tGone with the Wind\t11.0 Amount owed is 23.0 You earned 4 frequent renter points""" statement = customer1.statement() self.assertEquals(expected, statement)
# Demonstrate the movie rental code. # Create a customer with some movies and print a statement. from movie import Movie from rental import Rental from customer import Customer def make_movies(): """set up the movie and customer""" movies = [ Movie("The Irishman", Movie.NEW_RELEASE), Movie("CitizenFour", Movie.REGULAR), Movie("Frozen", Movie.CHILDRENS), Movie("El Camino", Movie.NEW_RELEASE), Movie("Particle Fever", Movie.REGULAR) ] return movies if __name__ == '__main__': # Create a customer with some rentals customer = Customer("Edward Snowden") days = 1 for movie in make_movies(): customer.add_rental(Rental(movie, days)) days += 1 print(customer.statement())
class TestCustomer(unittest.TestCase): def setUp(self): self._customer = Customer('Sallie') self._create_movies() def _create_movies(self): self._movies = {} for movie in TEST_MOVIES: self._movies[movie[0]] = Movie(*movie) def test_add_rental(self): movie = Movie('Gone with the Wind', Movie.REGULAR) rental = Rental(movie, 3) # 3 day rental self._customer.add_rental(rental) self.assertIn(rental, self._customer.get_rentals()) def test_get_name(self): self.assertEqual('Sallie', self._customer.get_name()) def rent(self, name, duration): rental = Rental(self._movies[name], duration) self._customer.add_rental(rental) def check_statement(self, expected): self.assertEqual(expected, self._customer.statement()) def test_statement_for_regular_movie(self): self.rent('Gone with the Wind', 3) self.check_statement("""Rental Record for Sallie \tGone with the Wind\t3.5 Amount owed is 3.5 You earned 1 frequent renter points""") def test_statement_for_new_release_movie(self): self.rent('Star Wars', 3) self.check_statement("""Rental Record for Sallie \tStar Wars\t9.0 Amount owed is 9.0 You earned 2 frequent renter points""") def test_statement_for_childrens_movie(self): self.rent('Madagascar', 3) self.check_statement("""Rental Record for Sallie \tMadagascar\t1.5 Amount owed is 1.5 You earned 1 frequent renter points""") def test_statement_for_many_movies_and_rentals(self): customer1 = Customer('David') movie1 = Movie('Madagascar', Movie.CHILDRENS) rental1 = Rental(movie1, 6) # 6 day rental movie2 = Movie('Star Wars', Movie.NEW_RELEASE) rental2 = Rental(movie2, 2) # 2 day rental movie3 = Movie('Gone with the Wind', Movie.REGULAR) rental3 = Rental(movie3, 8) # 8 day rental customer1.add_rental(rental1) customer1.add_rental(rental2) customer1.add_rental(rental3) expected = """Rental Record for David \tMadagascar\t6.0 \tStar Wars\t6.0 \tGone with the Wind\t11.0 Amount owed is 23.0 You earned 4 frequent renter points""" statement = customer1.statement() self.assertEqual(expected, statement)
class TestVideoStore(unittest.TestCase): def setUp(self): # Create customer self.customer = Customer('yunseop') def test_for_rent_one_new_release_movie(self): # Create movie 'The Avengers' avengers = Movie('The Avengers', Movie.NEW_RELEASE) # Rent avengers for 3 days rent_avengers_for_3_days = Rental(avengers, 3) self.customer.add_rental(rent_avengers_for_3_days) expected_result = 'Rental history for yunseop\n\tThe Avengers\t9\n누적 대여료: 9\n적립 포인트: 2' self.assertEquals(self.customer.statement(), expected_result) def test_for_rent_one_children_movie(self): # Create movie 'The Avengers' avengers = Movie('The Avengers', Movie.CHILDRENS) # Rent avengers for 2 days rent_avengers_for_2_days = Rental(avengers, 2) self.customer.add_rental(rent_avengers_for_2_days) expected_result = 'Rental history for yunseop\n\tThe Avengers\t1.5\n누적 대여료: 1.5\n적립 포인트: 1' self.assertEquals(self.customer.statement(), expected_result) def test_for_rent_one_regular_movie(self): # Create movie 'The Avengers' avengers = Movie('The Avengers', Movie.REGULAR) # Rent avengers for 2 days rent_avengers_for_2_days = Rental(avengers, 2) self.customer.add_rental(rent_avengers_for_2_days) expected_result = 'Rental history for yunseop\n\tThe Avengers\t2\n누적 대여료: 2\n적립 포인트: 1' self.assertEquals(self.customer.statement(), expected_result) def test_for_rent_two_movie(self): # Create movie 'The Avengers' avengers = Movie('The Avengers', Movie.NEW_RELEASE) # Create movie 'Okja' okja = Movie('Okja', Movie.NEW_RELEASE) # Rent avengers for 3 days rent_avengers_for_3_days = Rental(avengers, 3) # Rent okja for 3 days rent_okja_for_3_days = Rental(okja, 3) self.customer.add_rental(rent_avengers_for_3_days) self.customer.add_rental(rent_okja_for_3_days) expected_result = 'Rental history for yunseop\n\tThe Avengers\t9\n\tOkja\t9\n누적 대여료: 18\n적립 포인트: 4' self.assertEquals(self.customer.statement(), expected_result) def test_for_rent_three_movie(self): # Create movie 'The Avengers' avengers = Movie('The Avengers', Movie.NEW_RELEASE) # Create movie 'Okja' okja = Movie('Okja', Movie.CHILDRENS) # Create movie 'Limitless' limitless = Movie('Limitless', Movie.REGULAR) # Rent avengers for 3 days rent_avengers_for_3_days = Rental(avengers, 3) # Rent okja for 3 days rent_okja_for_3_days = Rental(okja, 3) # Rent limitless for 3 days rent_limitless_for_3_days = Rental(limitless, 3) self.customer.add_rental(rent_avengers_for_3_days) self.customer.add_rental(rent_okja_for_3_days) self.customer.add_rental(rent_limitless_for_3_days) expected_result = 'Rental history for yunseop\n\tThe Avengers\t9\n\tOkja\t1.5\n\tLimitless\t3.5\n누적 대여료: 14.0\n적립 포인트: 4' self.assertEquals(self.customer.statement(), expected_result)
def build(self): result = Customer(self.name) for rental in self.rentals: result.add_rental(rental) return result
def build(self): result = Customer(self.name) for rental in (self.rentals + [b.build() for b in self.builders]): result.add_rental(rental) return result
class VideoStoreTest(unittest.TestCase): def setUp(self): self.customer = Customer('Fred') def test_single_new_release_statement(self): self.customer.add_rental(Rental(Movie('The Cell', Movie.NEW_RELEASE), 3)) self.assertEquals('Rental Record for Fred\n\tThe Cell\t9\nYou owed 9\nYou earned 2 frequent renter points\n', self.customer.statement()) def test_dual_new_release_statement(self): self.customer.add_rental(Rental(Movie('The Cell', Movie.NEW_RELEASE), 3)) self.customer.add_rental(Rental(Movie('The Tigger Movie', Movie.NEW_RELEASE), 3)) self.assertEquals('Rental Record for Fred\n\tThe Cell\t9\n\tThe Tigger Movie\t9\nYou owed 18\nYou earned 4 frequent renter points\n', self.customer.statement()) def test_single_childrens_statement(self): self.customer.add_rental(Rental(Movie('The Tigger Movie', Movie.CHILDRENS), 3)) self.assertEquals('Rental Record for Fred\n\tThe Tigger Movie\t1.5\nYou owed 1.5\nYou earned 1 frequent renter points\n', self.customer.statement()) def test_multiple_regular_statement(self): self.customer.add_rental(Rental(Movie('Plan 9 from Outer Space', Movie.REGULAR), 1)) self.customer.add_rental(Rental(Movie('8 1/2', Movie.REGULAR), 2)) self.customer.add_rental(Rental(Movie('Eraserhead', Movie.REGULAR), 3)) self.assertEquals('Rental Record for Fred\n\tPlan 9 from Outer Space\t2\n\t8 1/2\t2\n\tEraserhead\t3.5\nYou owed 7.5\nYou earned 3 frequent renter points\n', self.customer.statement())
class TestCustomer(unittest.TestCase): def setUp(self): self._customer = Customer('Sallie') self._create_movies() def _create_movies(self): self._movies = {} for movie in TEST_MOVIES: self._movies[movie[0]] = Movie(*movie) def test_add_rental(self): movie = Movie('Gone with the Wind', Movie.REGULAR) rental = Rental(movie, 3) # 3 day rental self._customer.add_rental(rental) self.assertIn(rental, self._customer.get_rentals()) def test_get_name(self): self.assertEquals('Sallie', self._customer.get_name()) def rent(self, name, duration): rental = Rental(self._movies[name], duration) self._customer.add_rental(rental) def check_statement(self, expected): self.assertEquals(expected, self._customer.statement()) def test_statement_for_regular_movie(self): self.rent('Gone with the Wind', 3) self.check_statement("""Rental Record for Sallie \tGone with the Wind\t3.5 Amount owed is 3.5 You earned 1 frequent renter points""") def test_statement_for_new_release_movie(self): self.rent('Star Wars', 3) self.check_statement("""Rental Record for Sallie \tStar Wars\t9.0 Amount owed is 9.0 You earned 2 frequent renter points""") def test_statement_for_childrens_movie(self): self.rent('Madagascar', 3) self.check_statement("""Rental Record for Sallie \tMadagascar\t1.5 Amount owed is 1.5 You earned 1 frequent renter points""") def test_statement_for_many_movies_and_rentals(self): customer1 = Customer('David') movie1 = Movie('Madagascar', Movie.CHILDRENS) rental1 = Rental(movie1, 6) # 6 day rental movie2 = Movie('Star Wars', Movie.NEW_RELEASE) rental2 = Rental(movie2, 2) # 2 day rental movie3 = Movie('Gone with the Wind', Movie.REGULAR) rental3 = Rental(movie3, 8) # 8 day rental customer1.add_rental(rental1) customer1.add_rental(rental2) customer1.add_rental(rental3) expected = """Rental Record for David \tMadagascar\t6.0 \tStar Wars\t6.0 \tGone with the Wind\t11.0 Amount owed is 23.0 You earned 4 frequent renter points""" statement = customer1.statement() self.assertEquals(expected, statement)