| |
@@ -0,0 +1,111 @@
|
| |
+ import mock
|
| |
+ from blockerbugs import db
|
| |
+ from testing.test_controllers import add_release, add_milestone, add_bug
|
| |
+ from blockerbugs.util import pagure_interface
|
| |
+ from blockerbugs.util import discussion_sync
|
| |
+ from blockerbugs.models.release import Release
|
| |
+
|
| |
+ stub_issue_open = {
|
| |
+ 'status': 'Open'
|
| |
+ }
|
| |
+
|
| |
+ stub_issue_closed = {
|
| |
+ 'status': 'Closed'
|
| |
+ }
|
| |
+
|
| |
+
|
| |
+ class TestInactiveDiscussions(object):
|
| |
+ def setup_method(self):
|
| |
+ db.session.rollback()
|
| |
+ db.drop_all()
|
| |
+ db.create_all()
|
| |
+
|
| |
+ self.release_a = add_release(134)
|
| |
+ self.release_b = add_release(133)
|
| |
+ self.release_b.active = False
|
| |
+
|
| |
+ self.milestone_a = add_milestone(self.release_a, 'final', 100, 101, '133-final', True)
|
| |
+ self.milestone_b = add_milestone(self.release_b, 'final', 200, 201, '134-final', True)
|
| |
+
|
| |
+ self.issue_id_a = "1"
|
| |
+ self.issue_id_b = "2"
|
| |
+
|
| |
+ bug1 = add_bug(9000, 'testbug1', self.milestone_a)
|
| |
+ bug1.discussion_link = "https://example.com/blockers/issue/%s" % self.issue_id_a
|
| |
+ bug2 = add_bug(9001, 'testbug2', self.milestone_b)
|
| |
+ bug2.discussion_link = "https://example.com/blockers/issue/%s" % self.issue_id_b
|
| |
+
|
| |
+ db.session.commit()
|
| |
+
|
| |
+ def teardown_method(self):
|
| |
+ db.session.rollback()
|
| |
+ db.drop_all()
|
| |
+
|
| |
+ def test_closing_commenting(self, monkeypatch):
|
| |
+ stub_get_issue_call = mock.MagicMock(return_value=stub_issue_open)
|
| |
+ monkeypatch.setattr(pagure_interface, 'get_issue', stub_get_issue_call)
|
| |
+
|
| |
+ stub_comment_call = mock.MagicMock()
|
| |
+ monkeypatch.setattr(pagure_interface, 'post_comment', stub_comment_call)
|
| |
+
|
| |
+ stub_close_call = mock.MagicMock()
|
| |
+ monkeypatch.setattr(pagure_interface, 'close_issue', stub_close_call)
|
| |
+
|
| |
+ discussion_sync.close_discussions_inactive_releases()
|
| |
+
|
| |
+ assert mock.call(self.issue_id_b) in stub_close_call.call_args_list
|
| |
+ assert mock.call(self.issue_id_a) not in stub_close_call.call_args_list
|
| |
+
|
| |
+ issues_commented = [c.args[0] for c in stub_comment_call.call_args_list]
|
| |
+ assert self.issue_id_b in issues_commented
|
| |
+ assert self.issue_id_a not in issues_commented
|
| |
+
|
| |
+ def test_issues_closed_no_comment(self, monkeypatch):
|
| |
+ stub_get_issue_call = mock.MagicMock(return_value=stub_issue_closed)
|
| |
+ monkeypatch.setattr(pagure_interface, 'get_issue', stub_get_issue_call)
|
| |
+
|
| |
+ stub_comment_call = mock.MagicMock()
|
| |
+ monkeypatch.setattr(pagure_interface, 'post_comment', stub_comment_call)
|
| |
+
|
| |
+ monkeypatch.setattr(pagure_interface, 'close_issue', mock.MagicMock())
|
| |
+
|
| |
+ discussion_sync.close_discussions_inactive_releases()
|
| |
+
|
| |
+ assert stub_comment_call.call_count == 0
|
| |
+
|
| |
+ def test_dry_run(self, monkeypatch):
|
| |
+ stub_get_issue_call = mock.MagicMock(return_value=stub_issue_open)
|
| |
+ monkeypatch.setattr(pagure_interface, 'get_issue', stub_get_issue_call)
|
| |
+
|
| |
+ stub_comment_call = mock.MagicMock()
|
| |
+ monkeypatch.setattr(pagure_interface, 'post_comment', stub_comment_call)
|
| |
+
|
| |
+ stub_close_call = mock.MagicMock()
|
| |
+ monkeypatch.setattr(pagure_interface, 'close_issue', stub_close_call)
|
| |
+
|
| |
+ stub_db = mock.MagicMock()
|
| |
+ monkeypatch.setattr(discussion_sync, 'db', stub_db)
|
| |
+
|
| |
+ discussion_sync.close_discussions_inactive_releases(dry_run=True)
|
| |
+
|
| |
+ assert stub_comment_call.call_count == 0
|
| |
+ assert stub_close_call.call_count == 0
|
| |
+ assert not stub_db.mock_calls
|
| |
+
|
| |
+ def test_release_discussions_closed(self, monkeypatch):
|
| |
+ stub_get_issue_call = mock.MagicMock(return_value=stub_issue_open)
|
| |
+ monkeypatch.setattr(pagure_interface, 'get_issue', stub_get_issue_call)
|
| |
+
|
| |
+ stub_comment_call = mock.MagicMock()
|
| |
+ monkeypatch.setattr(pagure_interface, 'post_comment', stub_comment_call)
|
| |
+
|
| |
+ stub_close_call = mock.MagicMock()
|
| |
+ monkeypatch.setattr(pagure_interface, 'close_issue', stub_close_call)
|
| |
+
|
| |
+ release = db.session.query(Release).filter_by(number=133).first()
|
| |
+ assert not release.discussions_closed
|
| |
+
|
| |
+ discussion_sync.close_discussions_inactive_releases()
|
| |
+
|
| |
+ release = db.session.query(Release).filter_by(number=133).first()
|
| |
+ assert release.discussions_closed
|
| |
#114