From 2b686b1296e2d64ffe810d11eafa63707db85f92 Mon Sep 17 00:00:00 2001 From: sidpremkumar Date: Aug 13 2019 18:49:13 +0000 Subject: Adding tests to cover new functions added in PR#97 --- diff --git a/tests/test_downstream.py b/tests/test_downstream.py index b6dee26..549b390 100644 --- a/tests/test_downstream.py +++ b/tests/test_downstream.py @@ -36,7 +36,8 @@ class TestDownstream(unittest.TestCase): }, 'testing': {}, 'legacy_matching': False, - 'admins': [{'mock_admin': 'mock_email'}] + 'admins': [{'mock_admin': 'mock_email'}], + 'develop': False }, } @@ -409,13 +410,16 @@ class TestDownstream(unittest.TestCase): ) self.assertEqual(response, self.mock_downstream) + @mock.patch(PATH + '_get_jira_client') @mock.patch(PATH + '_get_existing_jira_issue') @mock.patch(PATH + '_update_jira_issue') @mock.patch(PATH + '_create_jira_issue') @mock.patch('jira.client.JIRA') @mock.patch(PATH + '_get_existing_jira_issue_legacy') + @mock.patch(PATH + 'check_jira_status') def test_sync_with_jira_matching(self, + mock_check_jira_status, mock_existing_jira_issue_legacy, mock_client, mock_create_jira_issue, @@ -429,6 +433,7 @@ class TestDownstream(unittest.TestCase): # Set up return values mock_get_jira_client.return_value = mock_client mock_existing_jira_issue.return_value = self.mock_downstream + mock_check_jira_status.return_value = True # Call the function d.sync_with_jira( @@ -448,7 +453,45 @@ class TestDownstream(unittest.TestCase): @mock.patch(PATH + '_create_jira_issue') @mock.patch('jira.client.JIRA') @mock.patch(PATH + '_get_existing_jira_issue_legacy') + @mock.patch(PATH + 'check_jira_status') + def test_sync_with_jira_down(self, + mock_check_jira_status, + mock_existing_jira_issue_legacy, + mock_client, + mock_create_jira_issue, + mock_update_jira_issue, + mock_existing_jira_issue, + mock_get_jira_client): + """ + Tests 'sync_with_jira' function where the JIRA scriptrunner is down + """ + # Set up return values + mock_get_jira_client.return_value = mock_client + mock_existing_jira_issue.return_value = self.mock_downstream + mock_check_jira_status.return_value = False + + # Call the function + with self.assertRaises(JIRAError): + d.sync_with_jira( + issue=self.mock_issue, + config=self.mock_config + ) + + # Assert all calls were made correctly + mock_get_jira_client.assert_called_with(self.mock_issue, self.mock_config) + mock_update_jira_issue.assert_not_called() + mock_create_jira_issue.assert_not_called() + mock_existing_jira_issue_legacy.assert_not_called() + + @mock.patch(PATH + '_get_jira_client') + @mock.patch(PATH + '_get_existing_jira_issue') + @mock.patch(PATH + '_update_jira_issue') + @mock.patch(PATH + '_create_jira_issue') + @mock.patch('jira.client.JIRA') + @mock.patch(PATH + '_get_existing_jira_issue_legacy') + @mock.patch(PATH + 'check_jira_status') def test_sync_with_jira_no_matching(self, + mock_check_jira_status, mock_existing_jira_issue_legacy, mock_client, mock_create_jira_issue, @@ -462,6 +505,7 @@ class TestDownstream(unittest.TestCase): # Set up return values mock_get_jira_client.return_value = mock_client mock_existing_jira_issue.return_value = None + mock_check_jira_status.return_value = True # Call the function d.sync_with_jira( @@ -945,7 +989,9 @@ class TestDownstream(unittest.TestCase): @mock.patch(PATH + '_matching_jira_issue_query') @mock.patch(PATH + '_close_as_duplicate') @mock.patch('jira.client.JIRA') + @mock.patch(PATH + 'check_jira_status') def test_close_duplicates_no_matching(self, + mock_check_jira_status, mock_client, mock_close_as_duplicate, mock_matching_jira_issue_query, @@ -956,6 +1002,7 @@ class TestDownstream(unittest.TestCase): # Set up return values mock_get_jira_client.return_value = mock_client mock_matching_jira_issue_query.return_value = ['only_one_response'] + mock_check_jira_status.return_value = True # Call the function response = d.close_duplicates( @@ -978,11 +1025,13 @@ class TestDownstream(unittest.TestCase): @mock.patch(PATH + '_matching_jira_issue_query') @mock.patch(PATH + '_close_as_duplicate') @mock.patch('jira.client.JIRA') + @mock.patch(PATH + 'check_jira_status') def test_close_duplicates(self, + mock_check_jira_status, mock_client, mock_close_as_duplicate, - mock_matching_jira_issue_query, - mock_get_jira_client): + mock_matching_jira_issue_query, + mock_get_jira_client): """ This tests 'close_duplicates' function where len(results) > 1 """ @@ -991,6 +1040,7 @@ class TestDownstream(unittest.TestCase): mock_item = MagicMock() mock_item.fields.created = 1 mock_matching_jira_issue_query.return_value = [mock_item, mock_item, mock_item] + mock_check_jira_status.return_value = True # Call the function response = d.close_duplicates( @@ -1388,4 +1438,34 @@ class TestDownstream(unittest.TestCase): # Assert everything was called correctly mock_comment_format_legacy.assert_called_with(mock_comment) mock_comment_format.assert_called_with(mock_comment) - self.assertEqual(response, None) \ No newline at end of file + self.assertEqual(response, None) + + def test_check_jira_status_false(self): + """ + This function tests 'check_jira_status' where we return false + """ + # Set up return values + mock_jira_client = MagicMock() + mock_jira_client.search_issues.return_value = [] + + # Call the function + response = d.check_jira_status(mock_jira_client) + + # Assert everything was called correctly + self.assertEqual(response, False) + mock_jira_client.search_issues.assert_called_with("issueFunction in linkedIssuesOfRemote('*')") + + def test_check_jira_status_true(self): + """ + This function tests 'check_jira_status' where we return false + """ + # Set up return values + mock_jira_client = MagicMock() + mock_jira_client.search_issues.return_value = ['some', 'values'] + + # Call the function + response = d.check_jira_status(mock_jira_client) + + # Assert everything was called correctly + self.assertEqual(response, True) + mock_jira_client.search_issues.assert_called_with("issueFunction in linkedIssuesOfRemote('*')")