Exemple #1
0
    def test_calls_the_original_function_twice_with_given_date(
            self, original_function):
        self.data_dict = {
            "package_id":
            "1234",
            "url":
            "valid-organogram.xlsx",
            "upload":
            create.FakeFieldStorage("valid-organogram.xlsx",
                                    open(self.fixture_path)),
            "datafile-date":
            "2019-05-23"
        }

        with patch("ckanext.datagovuk.action.create.get_action"
                   ) as mock_get_action:
            mock_get_action.return_value = lambda *_args: self.pkg_dict
            create.resource_create(self.context, self.data_dict)

        self.assertEqual(len(original_function.call_args_list), 2)

        senior_args, _kwargs = original_function.call_args_list[0]
        self._assert_resource_created(senior_args, "Organogram (Senior)",
                                      "organogram-senior.csv", "2019-05-23")

        junior_args, _kwargs = original_function.call_args_list[1]
        self._assert_resource_created(junior_args, "Organogram (Junior)",
                                      "organogram-junior.csv", "2019-05-23")
    def test_create_resource_uploads_resource_with_same_timestamp(
            self, mock_resource_create, mock_guess_type, mock_get_action,
            mock_upload):
        mock_resource_create.mock_resource_create_list = []
        mock_guess_type.return_value = ['application/vnd.ms-excel']

        class MockAction:
            def __init__(self, *args):
                pass

            def get(self, _):
                return '538b857a-64ba-490e-8440-0e32094a28a7'

        mock_get_action.return_value = MockAction

        params = {
            'package_id': factories.Dataset()['id'],
            'url': 'http://data',
            'name': 'A nice resource',
            'upload': self.data_dict
        }

        create.resource_create(self.context, self.data_dict)

        assert mock_resource_create.call_args_list[0][0][1]['timestamp'] == \
            mock_resource_create.call_args_list[1][0][1]['timestamp']
        assert TestWhenValidOrganogramXlsFile.fake_resource_create_list[0]['timestamp'] == \
            TestWhenValidOrganogramXlsFile.fake_resource_create_list[1]['timestamp']
Exemple #3
0
    def test_calls_the_original_function_with_original_args(
            self, original_function):
        with patch("ckanext.datagovuk.action.create.get_action"
                   ) as mock_get_action:
            mock_get_action.return_value = lambda *_args: self.pkg_dict
            create.resource_create(self.context, self.data_dict)

        original_function.assert_called_once_with(self.context, self.data_dict)
Exemple #4
0
    def test_does_not_call_the_original_function_with_original_args(
            self, original_function):
        with patch("ckanext.datagovuk.action.create.get_action"
                   ) as mock_get_action:
            mock_get_action.return_value = lambda *_args: self.pkg_dict
            create.resource_create(self.context, self.data_dict)

        for args, _kwargs in original_function.call_args_list:
            self.assertNotEqual(args, (self.context, self.data_dict))
Exemple #5
0
    def test_rolls_back_the_session(self, _original_function):
        with patch("ckanext.datagovuk.action.create.get_action"
                   ) as mock_get_action:
            mock_get_action.return_value = lambda *_args: self.pkg_dict

            try:
                create.resource_create(self.context, self.data_dict)
            except ValidationError:
                pass

        self.context["session"].rollback.assert_called_once()
Exemple #6
0
    def test_does_not_call_the_original_function(self, original_function):
        with patch("ckanext.datagovuk.action.create.get_action"
                   ) as mock_get_action:
            mock_get_action.return_value = lambda *_args: self.pkg_dict

            try:
                create.resource_create(self.context, self.data_dict)
            except ValidationError:
                pass

        original_function.assert_not_called()
Exemple #7
0
    def test_raises_a_validation_error(self, _original_function):
        validation_error = None

        with patch("ckanext.datagovuk.action.create.get_action"
                   ) as mock_get_action:
            mock_get_action.return_value = lambda *_args: self.pkg_dict

            try:
                create.resource_create(self.context, self.data_dict)
            except ValidationError as e:
                validation_error = e

        self.assertNotEqual(validation_error, None)

        expected_error = 'Sheet "(final data) senior-staff" cell S4: Invalid row, as indicated by the red colour in cell S4.'
        self.assertEqual(validation_error.error_dict["message"],
                         [expected_error])
Exemple #8
0
    def test_returns_the_first_created_resource(self, original_function):
        original_function.side_effect = ["First resource", "Second resource"]

        with patch("ckanext.datagovuk.action.create.get_action"
                   ) as mock_get_action:
            mock_get_action.return_value = lambda *_args: self.pkg_dict
            created_resource = create.resource_create(self.context,
                                                      self.data_dict)

        self.assertEqual(created_resource, "First resource")
Exemple #9
0
    def test_raises_a_validation_error(self, _original_function):
        validation_error = None

        with patch("ckanext.datagovuk.action.create.get_action"
                   ) as mock_get_action:
            mock_get_action.return_value = lambda *_args: self.pkg_dict

            try:
                create.resource_create(self.context, self.data_dict)
            except ValidationError as e:
                validation_error = e

        self.assertNotEqual(validation_error, None)

        expected_errors = [
            'Sheet "(final data) junior-staff" cell K3 etc: Multiple invalid rows. They are indicated by the red colour in column K. Rows affected: 3, 10, 15.',
            'Sheet "(final data) junior-staff" cell D15: You must not leave this cell blank - all junior posts must report to a senior post.',
            'Sheet "(final data) junior-staff" cell D9: Post reporting to senior post "OLD" that is Eliminated',
            'Sheet "(final data) junior-staff" cell D10: Post reporting to unknown senior post "MADEUP"',
        ]
        self.assertEqual(validation_error.error_dict["message"],
                         expected_errors)
Exemple #10
0
    def test_calls_the_original_function_twice_with_new_args(
            self, original_function):
        with patch("ckanext.datagovuk.action.create.get_action"
                   ) as mock_get_action:
            mock_get_action.return_value = lambda *_args: self.pkg_dict
            create.resource_create(self.context, self.data_dict)

        self.assertEqual(len(original_function.call_args_list), 2)

        senior_args, _kwargs = original_function.call_args_list[0]
        self._assert_resource_created(
            senior_args,
            "Organogram (Senior)",
            "organogram-senior.csv",
        )

        junior_args, _kwargs = original_function.call_args_list[1]
        self._assert_resource_created(
            junior_args,
            "Organogram (Junior)",
            "organogram-junior.csv",
        )
Exemple #11
0
 def test_calls_the_original_function_with_original_args(
         self, original_function):
     create.resource_create(self.context, self.data_dict)
     original_function.assert_called_once_with(self.context, self.data_dict)