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']
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)
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))
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()
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()
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])
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")
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)
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", )
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)