Exemplo n.º 1
0
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)
Exemplo n.º 3
0
    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")
Exemplo n.º 4
0
    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)
Exemplo n.º 6
0
# 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())
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
 def build(self):
     result = Customer(self.name)
     for rental in self.rentals:
         result.add_rental(rental)
     return result
Exemplo n.º 10
0
 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
Exemplo n.º 11
0
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)