def __init__(self, interactor_factory, renderer): """Initialise an instance of DeleteGameHandler. :param interactor_factory: The factory object to use for constructing interactors :param renderer: The object to use to render output html """ super().__init__(interactor_factory, renderer) self.__get_game = lambda args: Game.from_dict({"id": args.get("id", "")})
def test_from_dict(self): """Test that mapping a game object from a dictionary is correct.""" gd = { "id": "id", "datepurchased": "1/1/1990", "genre": "genre", "title": "Title", "numcopies": 1, "numboxed": 2, "nummanuals": 3, "platform": "Platform", "notes": "Notes" } g = Game.from_dict(gd) expected_mappings = { "id": g.id, "datepurchased": g.date_purchased, "genre": g.genre, "title": g.title, "numcopies": g.num_copies, "numboxed": g.num_boxed, "nummanuals": g.num_manuals, "platform": g.platform, "notes": g.notes } for k, v in expected_mappings.items(): self.assertEqual(gd[k], v)
def __execute_interactor(self, params): try: interactor = self.interactor_factory.create("UpdateGameInteractor") game = Game.from_dict(params) interactor.execute(game=game, user_id=self.session.get_value("user_id")) return True except PersistenceException: return False
def get_page(self, params): """Handles requests to save a game :param params: A dictionary. For details on what keys the dictionary should contain, see Game.from_dict().""" super().get_page(params) if not self.validate_params(params, ["title", "platform"]): return "" interactor = self.interactor_factory.create("AddGameInteractor") interactor.execute(game=Game.from_dict(params), user_id=self.session.get_value("user_id"))
def setUp(self): """setUp function for all unit tests in this class""" renderer = Mock(TemplateRenderer) interactor_factory = Mock(InteractorFactory) self.__interactor = Mock(AddGameInteractor) interactor_factory.create = Mock(return_value=self.__interactor) self.__target = SaveGameHandler(interactor_factory, renderer) session = Mock(Session) session.get_value = Mock(return_value="1234") self.__target.session = session self.__missing_param_returns_empty_string = get_missing_param_assertion(self.__target) self.__empty_param_returns_empty_string = get_empty_param_assertion(self.__target) self.__required_params = ["title", "platform"] self.__get_page = lambda: self.__target.get_page(params=self.__get_args()) self.__get_game = lambda: Game.from_dict(self.__get_args())
def test_calls_interactor_execute(self): """Test that calling UpdateGameHandler.get_page causes UpdateGameInteractor.execute to be called""" self.__target.get_page(params=self.__get_params()) self.__interactor.execute.assert_called_with(game=Game.from_dict(self.__get_params()), user_id="1234")
def test_calls_interactor_execute(self): """Test that calling DeleteGameHandler.get_page causes DeleteGameInteractor.execute to be called""" self.__get_page(self.__get_args()) self.__interactor.execute.assert_called_with(Game.from_dict({"id": "id"}), "1234")