diff --git a/tests/test_progit_flask_ui_issues.py b/tests/test_progit_flask_ui_issues.py index fbcfe7e..202ca34 100644 --- a/tests/test_progit_flask_ui_issues.py +++ b/tests/test_progit_flask_ui_issues.py @@ -179,6 +179,133 @@ class ProgitFlaskIssuestests(tests.Modeltests): output = self.app.get('/test/issues') self.assertEqual(output.status_code, 404) + @patch('progit.lib.git.update_git_ticket') + @patch('progit.lib.notify.send_email') + def test_view_issue(self, p_send_email, p_ugt): + """ Test the view_issue endpoint. """ + p_send_email.return_value = True + p_ugt.return_value = True + + output = self.app.get('/foo/issue/1') + self.assertEqual(output.status_code, 404) + + tests.create_projects(self.session) + + output = self.app.get('/test/issue/1') + self.assertEqual(output.status_code, 404) + + # Create issues to play with + repo = progit.lib.get_project(self.session, 'test') + msg = progit.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, 'Issue created') + + output = self.app.get('/test/issue/1') + self.assertEqual(output.status_code, 200) + self.assertTrue('

test project #1

' in output.data) + self.assertTrue( + '

Login to comment on this ticket.

' + in output.data) + + user = tests.FakeUser() + with tests.user_set(progit.APP, user): + output = self.app.get('/test/issue/1') + self.assertEqual(output.status_code, 200) + self.assertTrue('

test project #1

' in output.data) + self.assertFalse( + '

Login to comment on this ticket.

' + in output.data) + + user.username = 'pingou' + with tests.user_set(progit.APP, user): + csrf_token = output.data.split( + 'name="csrf_token" type="hidden" value="')[1].split('">')[0] + + data = { + 'status': 'fixed' + } + + output = self.app.post('/test/issue/1', data=data) + self.assertEqual(output.status_code, 200) + self.assertTrue('

test project #1

' in output.data) + self.assertTrue('
  • Not a valid choice
  • ' in output.data) + self.assertFalse( + '' + in output.data) + + data['status'] = 'Fixed' + output = self.app.post('/test/issue/1', data=data) + self.assertEqual(output.status_code, 200) + self.assertTrue('

    test project #1

    ' in output.data) + self.assertTrue( + '' + in output.data) + + data['csrf_token'] = csrf_token + output = self.app.post( + '/test/issue/1', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + self.assertTrue('

    test project #1

    ' in output.data) + self.assertTrue( + '
  • Edited successfully issue #1
  • ' + in output.data) + self.assertTrue( + '' + in output.data) + + # Create another issue with a dependency + repo = progit.lib.get_project(self.session, 'test') + msg = progit.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, 'Issue created') + # Reset the status of the first issue + parent_issue = progit.lib.search_issues( + self.session, repo, issueid=2) + parent_issue.status = 'Open' + # Add the dependency relationship + self.session.add(parent_issue) + issue = progit.lib.search_issues(self.session, repo, issueid=2) + issue.parents.append(parent_issue) + self.session.add(issue) + self.session.commit() + + with tests.user_set(progit.APP, user): + + data['csrf_token'] = csrf_token + output = self.app.post( + '/test/issue/2', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + self.assertTrue('

    test project #1

    ' in output.data) + self.assertTrue( + '
  • You cannot close a ticket that has ticket ' + 'depending that are still open.
  • ' in output.data) + self.assertTrue( + '' + in output.data) + + # Project w/o issue tracker + repo = progit.lib.get_project(self.session, 'test') + repo.issue_tracker = False + self.session.add(repo) + self.session.commit() + + output = self.app.get('/test/issue/1') + self.assertEqual(output.status_code, 404) + if __name__ == '__main__': SUITE = unittest.TestLoader().loadTestsFromTestCase(ProgitFlaskIssuestests)