Select Git revision
test_create_movie.py
-
Brady James Garvin authoredBrady James Garvin authored
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)