| |
| |
| """ |
| (c) 2017 - Copyright Red Hat Inc |
| |
| Authors: |
| Pierre-Yves Chibon <pingou@pingoured.fr> |
| |
| """ |
| |
| __requires__ = ['SQLAlchemy >= 0.8'] |
| import pkg_resources |
| |
| import unittest |
| import shutil |
| import sys |
| import os |
| |
| from mock import patch, MagicMock |
| |
| sys.path.insert(0, os.path.join(os.path.dirname( |
| os.path.abspath(__file__)), '..')) |
| |
| import pagure |
| import pagure.lib |
| import pagure.lib.model |
| import tests |
| |
| |
| class PagureLibDropIssuetests(tests.Modeltests): |
| """ Tests for pagure.lib.drop_issue """ |
| |
| @patch('pagure.lib.git.update_git') |
| @patch('pagure.lib.notify.send_email') |
| def setUp(self, p_send_email, p_ugt): |
| """ Create a couple of tickets and add tag to the project so we can |
| play with them later. |
| """ |
| super(PagureLibDropIssuetests, self).setUp() |
| |
| p_send_email.return_value = True |
| p_ugt.return_value = True |
| |
| |
| tests.create_projects(self.session) |
| repo = pagure.get_authorized_project(self.session, 'test') |
| |
| |
| issues = pagure.lib.search_issues(self.session, repo) |
| self.assertEqual(len(issues), 0) |
| self.assertEqual(repo.open_tickets, 0) |
| self.assertEqual(repo.open_tickets_public, 0) |
| |
| |
| msg = pagure.lib.new_issue( |
| session=self.session, |
| repo=repo, |
| title='Test issue', |
| content='We should work on this', |
| user='pingou', |
| ticketfolder=None |
| ) |
| self.session.commit() |
| self.assertEqual(msg.title, 'Test issue') |
| self.assertEqual(repo.open_tickets, 1) |
| self.assertEqual(repo.open_tickets_public, 1) |
| |
| msg = pagure.lib.new_issue( |
| session=self.session, |
| repo=repo, |
| title='Test issue #2', |
| content='We should work on this for the second time', |
| user='foo', |
| status='Open', |
| ticketfolder=None |
| ) |
| self.session.commit() |
| self.assertEqual(msg.title, 'Test issue #2') |
| self.assertEqual(repo.open_tickets, 2) |
| self.assertEqual(repo.open_tickets_public, 2) |
| |
| |
| issues = pagure.lib.search_issues(self.session, repo) |
| self.assertEqual(len(issues), 2) |
| |
| |
| pagure.lib.new_tag( |
| self.session, |
| 'red', |
| 'red tag', |
| '#ff0000', |
| repo.id |
| ) |
| self.session.commit() |
| |
| repo = pagure.get_authorized_project(self.session, 'test') |
| self.assertEqual( |
| str(repo.tags_colored), |
| '[TagColored(id: 1, tag:red, tag_description:red tag, color:#ff0000)]' |
| ) |
| |
| @patch('pagure.lib.git.update_git') |
| @patch('pagure.lib.notify.send_email') |
| def test_drop_issue(self, p_send_email, p_ugt): |
| """ Test the drop_issue of pagure.lib. |
| |
| We had an issue where we could not delete issue that had been tagged |
| with this test, we create two issues, tag one of them and delete |
| it, ensuring it all goes well. |
| """ |
| p_send_email.return_value = True |
| p_ugt.return_value = True |
| |
| repo = pagure.get_authorized_project(self.session, 'test') |
| |
| |
| issue = pagure.lib.search_issues(self.session, repo, issueid=2) |
| msgs = pagure.lib.update_tags( |
| self.session, |
| issue, |
| tags=['red'], |
| username='pingou', |
| ticketfolder=None, |
| ) |
| self.session.commit() |
| |
| self.assertEqual(msgs, ['Issue tagged with: red']) |
| |
| repo = pagure.get_authorized_project(self.session, 'test') |
| self.assertEqual(len(repo.issues), 2) |
| issue = pagure.lib.search_issues(self.session, repo, issueid=2) |
| self.assertEqual( |
| str(issue.tags), |
| '[TagColored(id: 1, tag:red, tag_description:red tag, color:#ff0000)]' |
| ) |
| |
| |
| issue = pagure.lib.search_issues(self.session, repo, issueid=2) |
| pagure.lib.drop_issue( |
| self.session, issue, user='pingou', ticketfolder=None) |
| self.session.commit() |
| |
| repo = pagure.get_authorized_project(self.session, 'test') |
| self.assertEqual(len(repo.issues), 1) |
| |
| @patch('pagure.lib.git.update_git') |
| @patch('pagure.lib.notify.send_email') |
| def test_drop_issue_two_issues_one_tag(self, p_send_email, p_ugt): |
| """ Test the drop_issue of pagure.lib. |
| |
| We had an issue where we could not delete issue that had been tagged |
| with this test, we create two issues, tag them both and delete one |
| then we check that the other issue is still tagged. |
| """ |
| p_send_email.return_value = True |
| p_ugt.return_value = True |
| |
| repo = pagure.get_authorized_project(self.session, 'test') |
| |
| |
| issue = pagure.lib.search_issues(self.session, repo, issueid=1) |
| msgs = pagure.lib.update_tags( |
| self.session, |
| issue, |
| tags=['red'], |
| username='pingou', |
| ticketfolder=None, |
| ) |
| self.session.commit() |
| self.assertEqual(msgs, ['Issue tagged with: red']) |
| |
| issue = pagure.lib.search_issues(self.session, repo, issueid=2) |
| msgs = pagure.lib.update_tags( |
| self.session, |
| issue, |
| tags=['red'], |
| username='pingou', |
| ticketfolder=None, |
| ) |
| self.session.commit() |
| self.assertEqual(msgs, ['Issue tagged with: red']) |
| |
| repo = pagure.get_authorized_project(self.session, 'test') |
| self.assertEqual(len(repo.issues), 2) |
| issue = pagure.lib.search_issues(self.session, repo, issueid=1) |
| self.assertEqual( |
| str(issue.tags), |
| '[TagColored(id: 1, tag:red, tag_description:red tag, color:#ff0000)]' |
| ) |
| issue = pagure.lib.search_issues(self.session, repo, issueid=2) |
| self.assertEqual( |
| str(issue.tags), |
| '[TagColored(id: 1, tag:red, tag_description:red tag, color:#ff0000)]' |
| ) |
| |
| |
| issue = pagure.lib.search_issues(self.session, repo, issueid=2) |
| pagure.lib.drop_issue( |
| self.session, issue, user='pingou', ticketfolder=None) |
| self.session.commit() |
| |
| repo = pagure.get_authorized_project(self.session, 'test') |
| self.assertEqual(len(repo.issues), 1) |
| |
| issue = pagure.lib.search_issues(self.session, repo, issueid=1) |
| self.assertEqual( |
| str(issue.tags), |
| '[TagColored(id: 1, tag:red, tag_description:red tag, color:#ff0000)]' |
| ) |
| issue = pagure.lib.search_issues(self.session, repo, issueid=2) |
| self.assertIsNone(issue) |
| |
| |
| if __name__ == '__main__': |
| unittest.main(verbosity=2) |