From 241908b27c76bb605c39c787cd39e7cc394d0722 Mon Sep 17 00:00:00 2001 From: Mark Reynolds Date: Feb 06 2017 14:15:12 +0000 Subject: Issue 1747 - Adda notification comment after updating metadata Whne editing an Issue's metadata start building a string of comments for each field updated. Then add a single notification comment that describes who changed what field and to what value. This requires returning a "edit comment", along withthe orignal message, for each type of metadata field we update. --- diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index 377bcfe..c78554b 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -396,6 +396,10 @@ def add_issue_assignee(session, issue, assignee, user, ticketfolder, notify=True): ''' Add an assignee to an issue, in other words, assigned an issue. ''' user_obj = get_user(session, user) + if issue.assignee is None or issue.assignee == "": + old_assignee = '\"\"' + else: + old_assignee = issue.assignee if not assignee and issue.assignee is not None: issue.assignee_id = None @@ -404,7 +408,7 @@ def add_issue_assignee(session, issue, assignee, user, ticketfolder, session.commit() pagure.lib.git.update_git( issue, repo=issue.project, repofolder=ticketfolder) - + comment = '**Assignee** removed ``%s``' % (old_assignee.user) if notify: pagure.lib.notify.notify_assigned_issue(issue, None, user_obj) @@ -425,19 +429,26 @@ def add_issue_assignee(session, issue, assignee, user, ticketfolder, REDIS.publish('pagure.%s' % issue.uid, json.dumps( {'unassigned': '-'})) - return 'Assignee reset' + return 'Assignee reset', comment elif not assignee and issue.assignee is None: - return 'Nothing to change' + return 'Nothing to change', "" # Validate the assignee assignee_obj = get_user(session, assignee) if issue.assignee_id != assignee_obj.id: + if issue.assignee_id is None: + comment = '**Assignee** set to ``%s``' % (assignee_obj.user) + else: + comment = '**Assignee** changed from ``%s`` to ``%s``' % ( + old_assignee, assignee_obj.user) + issue.assignee_id = assignee_obj.id session.add(issue) session.flush() pagure.lib.git.update_git( issue, repo=issue.project, repofolder=ticketfolder) + if notify: pagure.lib.notify.notify_assigned_issue( issue, assignee_obj, user_obj) @@ -460,7 +471,9 @@ def add_issue_assignee(session, issue, assignee, user, ticketfolder, REDIS.publish('pagure.%s' % issue.uid, json.dumps( {'assigned': assignee_obj.to_json(public=True)})) - return 'Issue assigned' + return 'Issue assigned', comment + else: + return "", "" def add_pull_request_assignee( @@ -1395,9 +1408,21 @@ def new_tag(session, tag_name, tag_description, tag_color, project_id): return tagobj +def build_meta_comment(comment, field, old_value, new_value): + ''' Format a new comment for metadata changes and add it to the existing + comment. Convert 'None' and empty values to something more friendly. + ''' + if old_value is None or old_value == "": + old_value = '\"\"' + if new_value is None or new_value == "": + new_value = '\"\"' + return ("**%s** changed from ``%s`` to ``%s``\n%s" % + (field, old_value, new_value, comment)) + + def edit_issue(session, issue, ticketfolder, user, title=None, content=None, status=None, close_status=-1, - priority=None, milestone=None, private=False): + priority=None, milestone=-1, private=False): ''' Edit the specified issue. ''' user_obj = get_user(session, user) @@ -1410,13 +1435,18 @@ def edit_issue(session, issue, ticketfolder, user, 'depending that are still open.') edit = [] + edit_comment = "" if title and title != issue.title: + edit_comment = build_meta_comment( + edit_comment, "Title", issue.title, title) issue.title = title edit.append('title') if content and content != issue.content: issue.content = content edit.append('content') if status and status != issue.status: + edit_comment = build_meta_comment( + edit_comment, "Status", issue.status, status) issue.status = status if status.lower() != 'open': issue.closed_at = datetime.datetime.utcnow() @@ -1425,6 +1455,8 @@ def edit_issue(session, issue, ticketfolder, user, edit.append('close_status') edit.append('status') if close_status != -1 and close_status != issue.close_status: + edit_comment = build_meta_comment( + edit_comment, "Closed as", issue.close_status, close_status) issue.close_status = close_status edit.append('close_status') if priority: @@ -1433,12 +1465,18 @@ def edit_issue(session, issue, ticketfolder, user, except: priority = None if priority != issue.priority: + edit_comment = build_meta_comment( + edit_comment, "Priority", issue.priority, priority) issue.priority = priority edit.append('priority') if private in [True, False] and private != issue.private: + edit_comment = build_meta_comment( + edit_comment, "Private", str(issue.private), str(private)) issue.private = private edit.append('private') - if milestone != issue.milestone: + if milestone != -1 and milestone != issue.milestone: + edit_comment = build_meta_comment( + edit_comment, "Milestone", issue.milestone, milestone) issue.milestone = milestone edit.append('milestone') issue.last_updated = datetime.datetime.utcnow() @@ -1449,16 +1487,6 @@ def edit_issue(session, issue, ticketfolder, user, issue, repo=issue.project, repofolder=ticketfolder) if 'status' in edit: - add_issue_comment( - session, - issue, - comment='@%s changed the status to ``%s``' % ( - user_obj.username, status), - user=user, - ticketfolder=ticketfolder, - notify=False, - notification=True, - ) log_action(session, status.lower(), issue, user_obj) pagure.lib.notify.notify_status_change_issue(issue, user_obj) @@ -1490,7 +1518,9 @@ def edit_issue(session, issue, ticketfolder, user, if edit: session.add(issue) session.flush() - return 'Successfully edited issue #%s' % issue.id + return 'Successfully edited issue #%s' % issue.id, edit_comment + else: + return "", "" def update_project_settings(session, repo, settings, user): @@ -2486,6 +2516,7 @@ def update_tags(session, obj, tags, username, ticketfolder): toadd = set(tags) - set(obj.tags_text) torm = set(obj.tags_text) - set(tags) messages = [] + comment = "" if toadd: messages.append( add_tag_obj( @@ -2496,6 +2527,10 @@ def update_tags(session, obj, tags, username, ticketfolder): ticketfolder=ticketfolder, ) ) + if len(toadd) == 1: + comment += "**Tags** added tag: ``%s``\n" % list(toadd)[0] + else: + comment += "**Tags** added tags: ``" + ', '.join(toadd) + "``\n" if torm: messages.append( @@ -2507,9 +2542,14 @@ def update_tags(session, obj, tags, username, ticketfolder): ticketfolder=ticketfolder, ) ) + if len(torm) == 1: + comment += "**Tags** removed tag: ``%s\n``" % list(torm)[0] + else: + comment += "**Tags** removed tags: ``" + ', '.join(torm) + "``\n" + session.commit() - return messages + return messages, comment def update_dependency_issue( @@ -2523,8 +2563,11 @@ def update_dependency_issue( toadd = set(depends) - set(issue.depends_text) torm = set(issue.depends_text) - set(depends) messages = [] + comment = "" # Add issue depending + if toadd: + comment += "**Depends on** added dependencies: ``" for depend in toadd: issue_depend = search_issues(session, repo, issueid=depend) if issue_depend is None: @@ -2542,8 +2585,14 @@ def update_dependency_issue( ticketfolder=ticketfolder, ) ) + comment += "%s " % (depend) + + if toadd: + comment += "``\n" # Remove issue depending + if torm: + comment += "**Depends on** removed issue dependencies: ``" for depend in torm: issue_depend = search_issues(session, repo, issueid=depend) if issue_depend is None: # pragma: no cover @@ -2563,9 +2612,13 @@ def update_dependency_issue( ticketfolder=ticketfolder, ) ) + comment += "%s " % (depend) + + if torm: + comment += "``\n" session.commit() - return messages + return messages, comment def update_blocked_issue( @@ -2580,8 +2633,11 @@ def update_blocked_issue( toadd = set(blocks) - set(issue.blocks_text) torm = set(issue.blocks_text) - set(blocks) messages = [] + comment = "" # Add issue blocked + if toadd: + comment += "**Blocked** added blocking issue dependencies: ``" for block in toadd: issue_block = search_issues(session, repo, issueid=block) if issue_block is None: @@ -2600,8 +2656,14 @@ def update_blocked_issue( ) ) session.commit() + comment += "%s " % (block) + + if toadd: + comment += "``\n" # Remove issue blocked + if torm: + comment += "**Blocked** remove blocking issue dependencies: ``" for block in torm: issue_block = search_issues(session, repo, issueid=block) if issue_block is None: # pragma: no cover @@ -2622,9 +2684,12 @@ def update_blocked_issue( ticketfolder=ticketfolder, ) ) + comment += "%s " % (block) + if torm: + comment += "``\n" session.commit() - return messages + return messages, comment def add_user_pending_email(session, userobj, email): @@ -3523,7 +3588,10 @@ def set_custom_key_value(session, issue, key, value): current_field = query.first() updated = False delete = False + old_value = None + comment = "" if current_field: + old_value = current_field.value if current_field.key.key_type == 'boolean': value = value or False if value is None or value == '': @@ -3534,18 +3602,20 @@ def set_custom_key_value(session, issue, key, value): current_field.value = value updated = True else: - if value is None or value == '': - delete = True - else: - current_field = model.IssueValues( - issue_uid=issue.uid, - key_id=key.id, - value=value, - ) + current_field = model.IssueValues( + issue_uid=issue.uid, + key_id=key.id, + value=value, + ) + if value: updated = True + if not delete: session.add(current_field) + if updated: + comment = build_meta_comment("", key.name, old_value, value) + if REDIS and updated: if issue.private: REDIS.publish('pagure.%s' % issue.uid, json.dumps({ @@ -3558,14 +3628,14 @@ def set_custom_key_value(session, issue, key, value): 'issue': issue.to_json(public=True, with_comments=False), })) - return 'Custom field adjusted' + return comment def get_yearly_stats_user(session, user, date): """ Return the activity of the specified user in the year preceding the specified date. """ - start_date = datetime.datetime(date.year -1, date.month, date.day) + start_date = datetime.datetime(date.year - 1, date.month, date.day) query = session.query( model.PagureLog.date, func.count(model.PagureLog.id) @@ -3622,7 +3692,6 @@ def log_action(session, action, obj, user_obj): elif obj.isa == 'pull-request': setattr(log, 'pull_request_uid', obj.uid) - session.add(log) session.commit() diff --git a/pagure/ui/issues.py b/pagure/ui/issues.py index 09747b0..8463d79 100644 --- a/pagure/ui/issues.py +++ b/pagure/ui/issues.py @@ -194,6 +194,7 @@ def update_issue(repo, issueid, username=None, namespace=None): try: messages = set() + field_comments = "" # New comment if comment: @@ -213,36 +214,43 @@ def update_issue(repo, issueid, username=None, namespace=None): # Update status if repo_admin or flask.g.fas_user.username == issue.user.user: if new_status in status: - message = pagure.lib.edit_issue( + message, new_comment = pagure.lib.edit_issue( SESSION, issue=issue, status=new_status, close_status=close_status, private=issue.private, user=flask.g.fas_user.username, - ticketfolder=APP.config['TICKETS_FOLDER'], + ticketfolder=APP.config['TICKETS_FOLDER'] ) SESSION.commit() if message: messages.add(message) + if new_comment != "": + field_comments = ("%s\n%s" % + (field_comments, new_comment)) # All the other meta-data can be changed only by admins # while other field will be missing for non-admin and thus # reset if we let them if repo_admin: # Adjust (add/remove) tags - messages.union(set(pagure.lib.update_tags( + msgs, new_comment = pagure.lib.update_tags( SESSION, issue, tags, username=flask.g.fas_user.username, ticketfolder=APP.config['TICKETS_FOLDER'] - ))) + ) + messages.union(set(msgs)) + if new_comment != "": + field_comments = ("%s\n%s" % + (field_comments, new_comment)) # The meta-data can be changed by admins and issue creator, # where issue creators can only change status of their issue while # other fields will be missing for non-admin and thus reset if we let them if repo_admin: # Assign or update assignee of the ticket - message = pagure.lib.add_issue_assignee( + message, new_comment = pagure.lib.add_issue_assignee( SESSION, issue=issue, assignee=assignee or None, @@ -252,26 +260,19 @@ def update_issue(repo, issueid, username=None, namespace=None): SESSION.commit() if message and message != 'Nothing to change': messages.add(message) - - # Update priority - if str(new_priority) in repo.priorities: - message = pagure.lib.edit_issue( - SESSION, - issue=issue, - priority=new_priority, - private=issue.private, - user=flask.g.fas_user.username, - ticketfolder=APP.config['TICKETS_FOLDER'], - ) - SESSION.commit() - if message: - messages.add(message) - - # Update milestone and privacy setting - message = pagure.lib.edit_issue( + if new_comment != "": + field_comments = ("%s\n%s" % + (field_comments, new_comment)) + # Adjust priority if needed + if str(new_priority) not in repo.priorities: + new_priority = None + + # Update core metadata + message, new_comment = pagure.lib.edit_issue( SESSION, issue=issue, milestone=new_milestone, + priority=new_priority, private=form.private.data, user=flask.g.fas_user.username, ticketfolder=APP.config['TICKETS_FOLDER'], @@ -279,38 +280,67 @@ def update_issue(repo, issueid, username=None, namespace=None): SESSION.commit() if message: messages.add(message) + if new_comment != "": + field_comments = ("%s\n%s" % + (field_comments, new_comment)) # Update the custom keys/fields + edit_comment = "" for key in repo.issue_keys: value = flask.request.form.get(key.name) - if key.key_type == 'link': - links = value.split(',') - for link in links: - link = link.replace(' ', '') - if not urlpattern.match(link): - flask.abort( - 400, - 'Meta-data "link" field ' - '(%s) has invalid url (%s) ' % - (key.name, link)) - messages.add( - pagure.lib.set_custom_key_value( - SESSION, issue, key, value) - ) + if value: + if key.key_type == 'link': + links = value.split(',') + for link in links: + link = link.replace(' ', '') + if not urlpattern.match(link): + flask.abort( + 400, + 'Meta-data "link" field ' + '(%s) has invalid url (%s) ' % + (key.name, link)) + + new_comment = pagure.lib.set_custom_key_value( + SESSION, issue, key, value) + if new_comment is not "": + edit_comment = "%s%s" % (new_comment, edit_comment) + + if edit_comment is not "": + field_comments = ("%s%s" % + (field_comments, edit_comment)) # Update ticket this one depends on - messages.union(set(pagure.lib.update_dependency_issue( + msgs, new_comment = pagure.lib.update_dependency_issue( SESSION, repo, issue, depends, username=flask.g.fas_user.username, - ticketfolder=APP.config['TICKETS_FOLDER'], - ))) + ticketfolder=APP.config['TICKETS_FOLDER']) + messages.union(set(msgs)) + if new_comment != "": + field_comments = ("%s%s" % + (field_comments, new_comment)) # Update ticket(s) depending on this one - messages.union(set(pagure.lib.update_blocked_issue( + msgs, new_comment = pagure.lib.update_blocked_issue( SESSION, repo, issue, blocks, username=flask.g.fas_user.username, - ticketfolder=APP.config['TICKETS_FOLDER'], - ))) + ticketfolder=APP.config['TICKETS_FOLDER'],) + messages.union(set(msgs)) + if new_comment != "": + field_comments = ("%s%s" % + (field_comments, new_comment)) + + # Add the comment for field updates: + if field_comments != "": + pagure.lib.add_issue_comment( + SESSION, + issue, + comment='@%s updated metadata\n%s' % ( + flask.g.fas_user.username, field_comments), + user=flask.g.fas_user.username, + ticketfolder=APP.config['TICKETS_FOLDER'], + notify=False, + notification=True) + messages.add('Metadata fields updated') if not is_js: for message in messages: @@ -1080,7 +1110,7 @@ def edit_issue(repo, issueid, username=None, namespace=None): flask.g.fas_user.username)) try: - message = pagure.lib.edit_issue( + message, comment = pagure.lib.edit_issue( SESSION, issue=issue, title=title, @@ -1091,6 +1121,15 @@ def edit_issue(repo, issueid, username=None, namespace=None): private=private, ) SESSION.commit() + if comment != "": + pagure.lib.add_issue_comment( + SESSION, + issue, + comment=comment, + user=flask.g.fas_user.username, + ticketfolder=APP.config['TICKETS_FOLDER'], + notify=False, + notification=True) # If there is a file attached, attach it. filestream = flask.request.files.get('filestream') diff --git a/tests/test_pagure_flask_api_issue.py b/tests/test_pagure_flask_api_issue.py index 33c99bc..1616fb6 100644 --- a/tests/test_pagure_flask_api_issue.py +++ b/tests/test_pagure_flask_api_issue.py @@ -1075,7 +1075,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): data = json.loads(output.data) self.assertDictEqual( data, - {'message': 'No changes'} + {'message': ['', '']} ) # No change @@ -1092,9 +1092,12 @@ class PagureFlaskApiIssuetests(tests.Modeltests): '/api/0/test/issue/1/status', data=data, headers=headers) self.assertEqual(output.status_code, 200) data = json.loads(output.data) + print "MARK2\n\n" + str(data) self.assertDictEqual( data, - {'message': 'Successfully edited issue #1'} + {'message': ['Successfully edited issue #1', + '**Closed as** changed from ``""`` to ``Fixed``\n' + '**Status** changed from ``Open`` to ``Closed``\n']} ) headers = {'Authorization': 'token pingou_foo'} @@ -1506,7 +1509,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): data = json.loads(output.data) self.assertDictEqual( data, - {'message': 'Issue assigned'} + {'message': ['Issue assigned', '**Assignee** set to ``pingou``']} ) # Un-assign @@ -1516,7 +1519,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): data = json.loads(output.data) self.assertDictEqual( data, - {'message': 'Assignee reset'} + {'message': ['Assignee reset', '**Assignee** removed ``pingou``']} ) repo = pagure.lib.get_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) @@ -1530,7 +1533,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): data = json.loads(output.data) self.assertDictEqual( data, - {'message': 'Nothing to change'} + {'message': ['Nothing to change', '']} ) repo = pagure.lib.get_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) @@ -1544,7 +1547,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): data = json.loads(output.data) self.assertDictEqual( data, - {'message': 'Issue assigned'} + {'message': ['Issue assigned', '**Assignee** set to ``pingou``']} ) # Un-assign @@ -1555,7 +1558,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): data = json.loads(output.data) self.assertDictEqual( data, - {'message': 'Assignee reset'} + {'message': ['Assignee reset', '**Assignee** removed ``pingou``']} ) # Re-assign for the rest of the tests @@ -1566,7 +1569,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): data = json.loads(output.data) self.assertDictEqual( data, - {'message': 'Issue assigned'} + {'message': ['Issue assigned', '**Assignee** set to ``pingou``']} ) # One comment added @@ -1666,7 +1669,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): data = json.loads(output.data) self.assertDictEqual( data, - {'message': 'Issue assigned'} + {'message': ['Issue assigned', '**Assignee** set to ``pingou``']} ) @patch('pagure.lib.git.update_git') @@ -1964,7 +1967,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): self.assertEqual( sorted(key.data), ['ack', 'nack', 'needs review']) - # Reset the value of the field to None + # Delete a value from a custom filed that does not exist in the entry output = self.app.post( '/api/0/test/issue/1/custom/bugzilla', headers=headers) self.assertEqual(output.status_code, 200) @@ -1972,7 +1975,9 @@ class PagureFlaskApiIssuetests(tests.Modeltests): self.assertDictEqual( data, { - 'message': 'Custom field adjusted' + "error": "An error occured at the database level and prevent " + "the action from reaching completion", + "error_code": "EDBERROR", } ) @@ -2010,7 +2015,8 @@ class PagureFlaskApiIssuetests(tests.Modeltests): self.assertDictEqual( data, { - "message": "Custom field adjusted" + "message": '**bugzilla** changed from ``""`` to' + ' ``https://bugzilla.redhat.com/1234``\n' } ) @@ -2024,7 +2030,8 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # Reset the value output = self.app.post( - '/api/0/test/issue/1/custom/bugzilla', headers=headers) + '/api/0/test/issue/1/custom/bugzilla', headers=headers, + data={'value': ''}) self.assertEqual(output.status_code, 200) data = json.loads(output.data) self.assertDictEqual( diff --git a/tests/test_pagure_flask_api_project.py b/tests/test_pagure_flask_api_project.py index 09b19b8..b93ee80 100644 --- a/tests/test_pagure_flask_api_project.py +++ b/tests/test_pagure_flask_api_project.py @@ -119,7 +119,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): self.assertEqual(repo.tags, []) # Adding a tag - output = pagure.lib.update_tags( + output, comment = pagure.lib.update_tags( self.session, repo, 'infra', 'pingou', ticketfolder=None) self.assertEqual(output, ['Tag added: infra']) @@ -317,7 +317,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): self.assertEqual(repo.tags, []) # Adding a tag - output = pagure.lib.update_tags( + output, comment = pagure.lib.update_tags( self.session, repo, 'infra', 'pingou', ticketfolder=None) self.assertEqual(output, ['Tag added: infra']) diff --git a/tests/test_pagure_flask_dump_load_ticket.py b/tests/test_pagure_flask_dump_load_ticket.py index 3db09c5..1339a6b 100644 --- a/tests/test_pagure_flask_dump_load_ticket.py +++ b/tests/test_pagure_flask_dump_load_ticket.py @@ -123,7 +123,7 @@ class PagureFlaskDumpLoadTicketTests(tests.Modeltests): self.session.commit() self.assertEqual(msg, 'Comment added') # Assign the ticket to someone - msg = pagure.lib.add_issue_assignee( + msg, comment = pagure.lib.add_issue_assignee( session=self.session, issue=issue, assignee='pingou', diff --git a/tests/test_pagure_flask_ui_app.py b/tests/test_pagure_flask_ui_app.py index 581c4a0..e3b3461 100644 --- a/tests/test_pagure_flask_ui_app.py +++ b/tests/test_pagure_flask_ui_app.py @@ -1145,7 +1145,7 @@ class PagureFlaskApptests(tests.Modeltests): self.session.commit() self.assertEqual(msg.title, 'Test issue #3') - msg = pagure.lib.add_issue_assignee( + msg, comment = pagure.lib.add_issue_assignee( session=self.session, issue=msg, assignee='pingou', diff --git a/tests/test_pagure_flask_ui_issues.py b/tests/test_pagure_flask_ui_issues.py index f8c3c77..d992119 100644 --- a/tests/test_pagure_flask_ui_issues.py +++ b/tests/test_pagure_flask_ui_issues.py @@ -541,7 +541,7 @@ class PagureFlaskIssuestests(tests.Modeltests): # Add a non-ascii milestone to the issue but project has no milestone issue = pagure.lib.search_issues(self.session, repo, issueid=1) - message = pagure.lib.edit_issue( + message, comment = pagure.lib.edit_issue( self.session, issue=issue, milestone=b'käpy'.decode('utf-8'), @@ -682,9 +682,9 @@ class PagureFlaskIssuestests(tests.Modeltests): '' in output.data) self.assertIn( - '

' - '@pingou changed the status to Closed' - '

'.format( + '@pingou updated metadata

\n

Closed ' + 'as changed from "" to Fixed' + .format( app_url=pagure.APP.config['APP_URL'].rstrip('/')), output.data) @@ -1953,8 +1953,8 @@ class PagureFlaskIssuestests(tests.Modeltests): user = tests.FakeUser(username='foo') with tests.user_set(pagure.APP, user): data = { - 'csrf_token' : csrf_token, - 'comment' : 'Nevermind figured it out', + 'csrf_token': csrf_token, + 'comment': 'Nevermind figured it out', 'status': 'Closed', 'close_status': 'Invalid' } @@ -1978,8 +1978,8 @@ class PagureFlaskIssuestests(tests.Modeltests): ) data = { - 'csrf_token' : csrf_token, - 'comment' : 'Nevermind figured it out', + 'csrf_token': csrf_token, + 'comment': 'Nevermind figured it out', 'status': 'Closed', 'close_status': 'Invalid' } @@ -2007,14 +2007,14 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(len(issue.comments), 2) self.assertEqual(issue.status, 'Open') - # Ticket #2 has one more comment and is closed + # Ticket #2 has one less comment and is closed issue = pagure.lib.search_issues(self.session, repo, issueid=2) - self.assertEqual(len(issue.comments), 2) + self.assertEqual(len(issue.comments), 1) self.assertEqual(issue.status, 'Closed') @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email') - def test_git_urls(self, p_send_email, p_ugt): + def test_git_urls(self, p_send_email, p_ugt): """ Check that the url to the git repo for issues is present/absent when it should. """ diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py index 9bfb92e..aeee490 100644 --- a/tests/test_pagure_lib.py +++ b/tests/test_pagure_lib.py @@ -232,15 +232,15 @@ class PagureLibtests(tests.Modeltests): self.assertEqual(repo.open_tickets_public, 2) # Edit the issue - msg = pagure.lib.edit_issue( + msg, comment = pagure.lib.edit_issue( session=self.session, issue=issue, user='pingou', ticketfolder=None) self.session.commit() - self.assertEqual(msg, None) + self.assertEqual(msg, None or '') - msg = pagure.lib.edit_issue( + msg, comment = pagure.lib.edit_issue( session=self.session, issue=issue, user='pingou', @@ -250,9 +250,9 @@ class PagureLibtests(tests.Modeltests): status='Open', ) self.session.commit() - self.assertEqual(msg, None) + self.assertEqual(msg, None or '') - msg = pagure.lib.edit_issue( + msg, comment = pagure.lib.edit_issue( session=self.session, issue=issue, user='pingou', @@ -273,7 +273,7 @@ class PagureLibtests(tests.Modeltests): self.assertEqual(repo.issues[1].close_status, 'Invalid') # Edit the status: re-open the ticket - msg = pagure.lib.edit_issue( + msg, comment = pagure.lib.edit_issue( session=self.session, issue=issue, user='pingou', @@ -293,7 +293,7 @@ class PagureLibtests(tests.Modeltests): self.assertEqual(repo.open_tickets_public, 1) # Edit the status: re-close the ticket - msg = pagure.lib.edit_issue( + msg, comment = pagure.lib.edit_issue( session=self.session, issue=issue, user='pingou', @@ -685,7 +685,7 @@ class PagureLibtests(tests.Modeltests): ) # Set the assignee by its email - msg = pagure.lib.add_issue_assignee( + msg, comment = pagure.lib.add_issue_assignee( session=self.session, issue=issue, assignee='foo@bar.com', @@ -695,7 +695,7 @@ class PagureLibtests(tests.Modeltests): self.assertEqual(msg, 'Issue assigned') # Change the assignee to someone else by its username - msg = pagure.lib.add_issue_assignee( + msg, comment = pagure.lib.add_issue_assignee( session=self.session, issue=issue, assignee='pingou', @@ -732,7 +732,7 @@ class PagureLibtests(tests.Modeltests): self.assertEqual(issues[0].tags, []) # Reset the assignee to no-one - msg = pagure.lib.add_issue_assignee( + msg, comment = pagure.lib.add_issue_assignee( session=self.session, issue=issue, assignee=None, @@ -766,7 +766,7 @@ class PagureLibtests(tests.Modeltests): self.assertEqual(len(issue.comments), 0) # Set the assignee by its email - msg = pagure.lib.add_issue_assignee( + msg, comment = pagure.lib.add_issue_assignee( session=self.session, issue=issue, assignee='foo@bar.com', @@ -1979,7 +1979,7 @@ class PagureLibtests(tests.Modeltests): self.assertEqual(repo.tags_colored, []) self.assertEqual(issue.tags_text, []) - messages = pagure.lib.update_tags( + messages, comment = pagure.lib.update_tags( self.session, issue, 'tag', 'pingou', ticketfolder=None) self.assertEqual(messages, ['Tag added: tag']) @@ -1992,7 +1992,7 @@ class PagureLibtests(tests.Modeltests): self.assertEqual(issue.tags_text, ['tag']) # Replace the tag by two others - messages = pagure.lib.update_tags( + messages, comment = pagure.lib.update_tags( self.session, issue, ['tag2', 'tag3'], 'pingou', ticketfolder=None) self.assertEqual( @@ -2043,10 +2043,10 @@ class PagureLibtests(tests.Modeltests): self.assertEqual(issue.depends_text, []) self.assertEqual(issue.blocks_text, []) - messages = pagure.lib.update_dependency_issue( + messages, comment = pagure.lib.update_dependency_issue( self.session, repo, issue, '2', 'pingou', ticketfolder=None) self.assertEqual(messages, ['Dependency added']) - messages = pagure.lib.update_dependency_issue( + messages, comment = pagure.lib.update_dependency_issue( self.session, repo, issue, ['3', '4', 5], 'pingou', ticketfolder=None) self.assertEqual( @@ -2086,10 +2086,10 @@ class PagureLibtests(tests.Modeltests): self.assertEqual(issue.depends_text, []) self.assertEqual(issue.blocks_text, []) - messages = pagure.lib.update_blocked_issue( + messages, comment = pagure.lib.update_blocked_issue( self.session, repo, issue, '2', 'pingou', ticketfolder=None) self.assertEqual(messages, ['Dependency added']) - messages = pagure.lib.update_blocked_issue( + messages, comment = pagure.lib.update_blocked_issue( self.session, repo, issue, ['3', '4', 5], 'pingou', ticketfolder=None) self.assertEqual(