def _test_list_codes_scenario_ok(self, fake_codes, expected_codes):
        '''This method provides a template for executing list codes success scenario.'''

        from fantastico.contrib.tracking_codes.tracking_controller import TrackingController

        request = Mock()
        model = Mock()
        settings_facade = Mock()

        def get_records_paged(start_record, end_record):
            self.assertEqual(0, start_record)
            self.assertEqual(TrackingController.MAX_RECORDS, end_record)

            return fake_codes

        model.get_records_paged = get_records_paged

        controller = TrackingController(settings_facade)

        request.models = Mock()
        request.models.TrackingCode = model

        codes_response = controller.list_codes(request)

        self.assertIsInstance(codes_response, Response)
        self.assertIsNotNone(codes_response.body)
        self.assertEqual("application/json; charset=UTF-8",
                         codes_response.headers["Content-Type"])

        codes = json.loads(codes_response.body.decode())
        self.assertEqual(expected_codes, codes)
    def _test_list_codes_scenario_ok(self, fake_codes, expected_codes):
        """This method provides a template for executing list codes success scenario."""

        from fantastico.contrib.tracking_codes.tracking_controller import TrackingController

        request = Mock()
        model = Mock()
        settings_facade = Mock()

        def get_records_paged(start_record, end_record):
            self.assertEqual(0, start_record)
            self.assertEqual(TrackingController.MAX_RECORDS, end_record)

            return fake_codes

        model.get_records_paged = get_records_paged

        controller = TrackingController(settings_facade)

        request.models = Mock()
        request.models.TrackingCode = model

        codes_response = controller.list_codes(request)

        self.assertIsInstance(codes_response, Response)
        self.assertIsNotNone(codes_response.body)
        self.assertEqual("application/json; charset=UTF-8", codes_response.headers["Content-Type"])

        codes = json.loads(codes_response.body.decode())
        self.assertEqual(expected_codes, codes)
    def test_list_codes_ui_ok(self):
        '''This test case ensures tracking codes ui controller work as expected.'''

        from fantastico.contrib.tracking_codes.tracking_controller import TrackingController

        expected_tpl = "<script>test code</script>"

        settings_facade = Mock()
        request = Mock()

        controller = TrackingController(settings_facade)

        def load_template(tpl_name, model_data=None, get_template=None):
            '''This method mocks load_template method from controller.'''

            self.assertIsNone(model_data)
            self.assertIsNone(get_template)
            self.assertEqual("/list_tracking_codes.html", tpl_name)

            return expected_tpl

        controller.load_template = load_template

        response = controller.list_codes_ui(request)

        self.assertIsNotNone(controller)
        self.assertIsInstance(response, Response)

        self.assertEqual("text/html; charset=UTF-8",
                         response.headers["Content-Type"])
        self.assertIsNotNone(response.body)
        self.assertEqual(expected_tpl, response.body.decode())
    def test_list_codes_ui_ok(self):
        """This test case ensures tracking codes ui controller work as expected."""

        from fantastico.contrib.tracking_codes.tracking_controller import TrackingController

        expected_tpl = "<script>test code</script>"

        settings_facade = Mock()
        request = Mock()

        controller = TrackingController(settings_facade)

        def load_template(tpl_name, model_data=None, get_template=None):
            """This method mocks load_template method from controller."""

            self.assertIsNone(model_data)
            self.assertIsNone(get_template)
            self.assertEqual("/list_tracking_codes.html", tpl_name)

            return expected_tpl

        controller.load_template = load_template

        response = controller.list_codes_ui(request)

        self.assertIsNotNone(controller)
        self.assertIsInstance(response, Response)

        self.assertEqual("text/html; charset=UTF-8", response.headers["Content-Type"])
        self.assertIsNotNone(response.body)
        self.assertEqual(expected_tpl, response.body.decode())