Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
1 result

test_create_movie.py

Blame
  • test_create_movie.py 2.00 KiB
    from unittest import TestCase
    
    from movies import MovieDatabase, Movie
    from main import MoviesApp
    
    
    class TestCreateMovie(TestCase):
        """
        Four versions of the same test case for a database-modifying method, each with a stronger oracle.
        """
    
        def test_create_movie_does_not_crash(self):
            url = MovieDatabase.construct_in_memory_url()
            movie_database = MovieDatabase(url)
            movie_database.ensure_tables_exist()
            session = movie_database.create_session()
            MoviesApp._create_movie(session, 'Example', 4000000, 290000000)
            # implicit oracle
    
        def test_create_movie_inserts_movies(self):
            url = MovieDatabase.construct_in_memory_url()
            movie_database = MovieDatabase(url)
            movie_database.ensure_tables_exist()
            session = movie_database.create_session()
            MoviesApp._create_movie(session, 'Example', 4000000, 290000000)
            actual = session.query(Movie).filter(Movie.title == 'Example').one()
            self.assertIsNotNone(actual)  # less-weak oracle (but still weak)
    
        def test_create_movie_inserts_one_movie(self):
            url = MovieDatabase.construct_in_memory_url()
            movie_database = MovieDatabase(url)
            movie_database.ensure_tables_exist()
            session = movie_database.create_session()
            MoviesApp._create_movie(session, 'Example', 4000000, 290000000)
            actual = session.query(Movie).filter(Movie.title == 'Example').count()
            self.assertEqual(actual, 1)  # weak oracle
    
        def test_create_movie_inserts_correct_dollar_figures(self):
            url = MovieDatabase.construct_in_memory_url()
            movie_database = MovieDatabase(url)
            movie_database.ensure_tables_exist()
            session = movie_database.create_session()
            MoviesApp._create_movie(session, 'Example', 4000000, 290000000)
            actual = session.query(Movie).filter(Movie.title == 'Example').one()
            self.assertEqual(actual.budget, 4000000)
            self.assertEqual(actual.gross_revenue, 290000000)  # strong oracle (recommended)