Show More
@@ -48,6 +48,7 b' from rhodecode.model.db import (' | |||||
48 | Session, ChangesetStatus, RepositoryField, Repository, RepoGroup, |
|
48 | Session, ChangesetStatus, RepositoryField, Repository, RepoGroup, | |
49 | ChangesetComment) |
|
49 | ChangesetComment) | |
50 | from rhodecode.model.permission import PermissionModel |
|
50 | from rhodecode.model.permission import PermissionModel | |
|
51 | from rhodecode.model.pull_request import PullRequestModel | |||
51 | from rhodecode.model.repo import RepoModel |
|
52 | from rhodecode.model.repo import RepoModel | |
52 | from rhodecode.model.scm import ScmModel, RepoList |
|
53 | from rhodecode.model.scm import ScmModel, RepoList | |
53 | from rhodecode.model.settings import SettingsModel, VcsSettingsModel |
|
54 | from rhodecode.model.settings import SettingsModel, VcsSettingsModel | |
@@ -1869,6 +1870,20 b' def edit_comment(request, apiuser, messa' | |||||
1869 | raise JSONRPCError( |
|
1870 | raise JSONRPCError( | |
1870 | "comment ({}) can't be changed with empty string".format(comment_id) |
|
1871 | "comment ({}) can't be changed with empty string".format(comment_id) | |
1871 | ) |
|
1872 | ) | |
|
1873 | ||||
|
1874 | if comment.pull_request: | |||
|
1875 | pull_request = comment.pull_request | |||
|
1876 | PullRequestModel().trigger_pull_request_hook( | |||
|
1877 | pull_request, apiuser, 'comment_edit', | |||
|
1878 | data={'comment': comment}) | |||
|
1879 | else: | |||
|
1880 | db_repo = comment.repo | |||
|
1881 | commit_id = comment.revision | |||
|
1882 | commit = db_repo.get_commit(commit_id) | |||
|
1883 | CommentsModel().trigger_commit_comment_hook( | |||
|
1884 | db_repo, apiuser, 'edit', | |||
|
1885 | data={'comment': comment, 'commit': commit}) | |||
|
1886 | ||||
1872 | data = { |
|
1887 | data = { | |
1873 | 'comment': comment, |
|
1888 | 'comment': comment, | |
1874 | 'version': comment_history.version if comment_history else None, |
|
1889 | 'version': comment_history.version if comment_history else None, |
@@ -649,6 +649,12 b' class RepoCommitsView(RepoAppView):' | |||||
649 | if not comment_history: |
|
649 | if not comment_history: | |
650 | raise HTTPNotFound() |
|
650 | raise HTTPNotFound() | |
651 |
|
651 | |||
|
652 | commit_id = self.request.matchdict['commit_id'] | |||
|
653 | commit = self.db_repo.get_commit(commit_id) | |||
|
654 | CommentsModel().trigger_commit_comment_hook( | |||
|
655 | self.db_repo, self._rhodecode_user, 'edit', | |||
|
656 | data={'comment': comment, 'commit': commit}) | |||
|
657 | ||||
652 | Session().commit() |
|
658 | Session().commit() | |
653 | return { |
|
659 | return { | |
654 | 'comment_history_id': comment_history.comment_history_id, |
|
660 | 'comment_history_id': comment_history.comment_history_id, |
@@ -1611,6 +1611,11 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1611 | raise HTTPNotFound() |
|
1611 | raise HTTPNotFound() | |
1612 |
|
1612 | |||
1613 | Session().commit() |
|
1613 | Session().commit() | |
|
1614 | ||||
|
1615 | PullRequestModel().trigger_pull_request_hook( | |||
|
1616 | pull_request, self._rhodecode_user, 'comment_edit', | |||
|
1617 | data={'comment': comment}) | |||
|
1618 | ||||
1614 | return { |
|
1619 | return { | |
1615 | 'comment_history_id': comment_history.comment_history_id, |
|
1620 | 'comment_history_id': comment_history.comment_history_id, | |
1616 | 'comment_id': comment.comment_id, |
|
1621 | 'comment_id': comment.comment_id, |
@@ -53,7 +53,8 b' from rhodecode.events.user import ( # p' | |||||
53 | ) |
|
53 | ) | |
54 |
|
54 | |||
55 | from rhodecode.events.repo import ( # pragma: no cover |
|
55 | from rhodecode.events.repo import ( # pragma: no cover | |
56 | RepoEvent, RepoCommitCommentEvent, |
|
56 | RepoEvent, | |
|
57 | RepoCommitCommentEvent, RepoCommitCommentEditEvent, | |||
57 | RepoPreCreateEvent, RepoCreateEvent, |
|
58 | RepoPreCreateEvent, RepoCreateEvent, | |
58 | RepoPreDeleteEvent, RepoDeleteEvent, |
|
59 | RepoPreDeleteEvent, RepoDeleteEvent, | |
59 | RepoPrePushEvent, RepoPushEvent, |
|
60 | RepoPrePushEvent, RepoPushEvent, | |
@@ -72,8 +73,8 b' from rhodecode.events.pullrequest import' | |||||
72 | PullRequestCreateEvent, |
|
73 | PullRequestCreateEvent, | |
73 | PullRequestUpdateEvent, |
|
74 | PullRequestUpdateEvent, | |
74 | PullRequestCommentEvent, |
|
75 | PullRequestCommentEvent, | |
|
76 | PullRequestCommentEditEvent, | |||
75 | PullRequestReviewEvent, |
|
77 | PullRequestReviewEvent, | |
76 | PullRequestMergeEvent, |
|
78 | PullRequestMergeEvent, | |
77 | PullRequestCloseEvent, |
|
79 | PullRequestCloseEvent, | |
78 | PullRequestCommentEvent, |
|
|||
79 | ) |
|
80 | ) |
@@ -19,8 +19,7 b'' | |||||
19 | import logging |
|
19 | import logging | |
20 |
|
20 | |||
21 | from rhodecode.translation import lazy_ugettext |
|
21 | from rhodecode.translation import lazy_ugettext | |
22 | from rhodecode.events.repo import ( |
|
22 | from rhodecode.events.repo import (RepoEvent, _commits_as_dict, _issues_as_dict) | |
23 | RepoEvent, _commits_as_dict, _issues_as_dict) |
|
|||
24 |
|
23 | |||
25 | log = logging.getLogger(__name__) |
|
24 | log = logging.getLogger(__name__) | |
26 |
|
25 | |||
@@ -155,6 +154,7 b' class PullRequestCommentEvent(PullReques' | |||||
155 | 'type': self.comment.comment_type, |
|
154 | 'type': self.comment.comment_type, | |
156 | 'file': self.comment.f_path, |
|
155 | 'file': self.comment.f_path, | |
157 | 'line': self.comment.line_no, |
|
156 | 'line': self.comment.line_no, | |
|
157 | 'version': self.comment.last_version, | |||
158 | 'url': CommentsModel().get_url( |
|
158 | 'url': CommentsModel().get_url( | |
159 | self.comment, request=self.request), |
|
159 | self.comment, request=self.request), | |
160 | 'permalink_url': CommentsModel().get_url( |
|
160 | 'permalink_url': CommentsModel().get_url( | |
@@ -162,3 +162,42 b' class PullRequestCommentEvent(PullReques' | |||||
162 | } |
|
162 | } | |
163 | }) |
|
163 | }) | |
164 | return data |
|
164 | return data | |
|
165 | ||||
|
166 | ||||
|
167 | class PullRequestCommentEditEvent(PullRequestEvent): | |||
|
168 | """ | |||
|
169 | An instance of this class is emitted as an :term:`event` after a pull | |||
|
170 | request comment is edited. | |||
|
171 | """ | |||
|
172 | name = 'pullrequest-comment-edit' | |||
|
173 | display_name = lazy_ugettext('pullrequest comment edited') | |||
|
174 | description = lazy_ugettext('Event triggered after a comment was edited on a code ' | |||
|
175 | 'in the pull request') | |||
|
176 | ||||
|
177 | def __init__(self, pullrequest, comment): | |||
|
178 | super(PullRequestCommentEditEvent, self).__init__(pullrequest) | |||
|
179 | self.comment = comment | |||
|
180 | ||||
|
181 | def as_dict(self): | |||
|
182 | from rhodecode.model.comment import CommentsModel | |||
|
183 | data = super(PullRequestCommentEditEvent, self).as_dict() | |||
|
184 | ||||
|
185 | status = None | |||
|
186 | if self.comment.status_change: | |||
|
187 | status = self.comment.status_change[0].status | |||
|
188 | ||||
|
189 | data.update({ | |||
|
190 | 'comment': { | |||
|
191 | 'status': status, | |||
|
192 | 'text': self.comment.text, | |||
|
193 | 'type': self.comment.comment_type, | |||
|
194 | 'file': self.comment.f_path, | |||
|
195 | 'line': self.comment.line_no, | |||
|
196 | 'version': self.comment.last_version, | |||
|
197 | 'url': CommentsModel().get_url( | |||
|
198 | self.comment, request=self.request), | |||
|
199 | 'permalink_url': CommentsModel().get_url( | |||
|
200 | self.comment, request=self.request, permalink=True), | |||
|
201 | } | |||
|
202 | }) | |||
|
203 | return data |
@@ -211,6 +211,42 b' class RepoCommitCommentEvent(RepoEvent):' | |||||
211 | 'comment_type': self.comment.comment_type, |
|
211 | 'comment_type': self.comment.comment_type, | |
212 | 'comment_f_path': self.comment.f_path, |
|
212 | 'comment_f_path': self.comment.f_path, | |
213 | 'comment_line_no': self.comment.line_no, |
|
213 | 'comment_line_no': self.comment.line_no, | |
|
214 | 'comment_version': self.comment.last_version, | |||
|
215 | } | |||
|
216 | return data | |||
|
217 | ||||
|
218 | ||||
|
219 | class RepoCommitCommentEditEvent(RepoEvent): | |||
|
220 | """ | |||
|
221 | An instance of this class is emitted as an :term:`event` after a comment is edited | |||
|
222 | on repository commit. | |||
|
223 | """ | |||
|
224 | ||||
|
225 | name = 'repo-commit-edit-comment' | |||
|
226 | display_name = lazy_ugettext('repository commit edit comment') | |||
|
227 | description = lazy_ugettext('Event triggered after a comment was edited ' | |||
|
228 | 'on commit inside a repository') | |||
|
229 | ||||
|
230 | def __init__(self, repo, commit, comment): | |||
|
231 | super(RepoCommitCommentEditEvent, self).__init__(repo) | |||
|
232 | self.commit = commit | |||
|
233 | self.comment = comment | |||
|
234 | ||||
|
235 | def as_dict(self): | |||
|
236 | data = super(RepoCommitCommentEditEvent, self).as_dict() | |||
|
237 | data['commit'] = { | |||
|
238 | 'commit_id': self.commit.raw_id, | |||
|
239 | 'commit_message': self.commit.message, | |||
|
240 | 'commit_branch': self.commit.branch, | |||
|
241 | } | |||
|
242 | ||||
|
243 | data['comment'] = { | |||
|
244 | 'comment_id': self.comment.comment_id, | |||
|
245 | 'comment_text': self.comment.text, | |||
|
246 | 'comment_type': self.comment.comment_type, | |||
|
247 | 'comment_f_path': self.comment.f_path, | |||
|
248 | 'comment_line_no': self.comment.line_no, | |||
|
249 | 'comment_version': self.comment.last_version, | |||
214 | } |
|
250 | } | |
215 | return data |
|
251 | return data | |
216 |
|
252 |
@@ -331,6 +331,26 b' class WebhookDataHandler(CommitParsingDa' | |||||
331 |
|
331 | |||
332 | return [(url, self.headers, data)] |
|
332 | return [(url, self.headers, data)] | |
333 |
|
333 | |||
|
334 | def repo_commit_comment_edit_handler(self, event, data): | |||
|
335 | url = self.get_base_parsed_template(data) | |||
|
336 | log.debug('register %s call(%s) to url %s', self.name, event, url) | |||
|
337 | comment_vars = [ | |||
|
338 | ('commit_comment_id', data['comment']['comment_id']), | |||
|
339 | ('commit_comment_text', data['comment']['comment_text']), | |||
|
340 | ('commit_comment_type', data['comment']['comment_type']), | |||
|
341 | ||||
|
342 | ('commit_comment_f_path', data['comment']['comment_f_path']), | |||
|
343 | ('commit_comment_line_no', data['comment']['comment_line_no']), | |||
|
344 | ||||
|
345 | ('commit_comment_commit_id', data['commit']['commit_id']), | |||
|
346 | ('commit_comment_commit_branch', data['commit']['commit_branch']), | |||
|
347 | ('commit_comment_commit_message', data['commit']['commit_message']), | |||
|
348 | ] | |||
|
349 | for k, v in comment_vars: | |||
|
350 | url = UrlTmpl(url).safe_substitute(**{k: v}) | |||
|
351 | ||||
|
352 | return [(url, self.headers, data)] | |||
|
353 | ||||
334 | def repo_create_event_handler(self, event, data): |
|
354 | def repo_create_event_handler(self, event, data): | |
335 | url = self.get_base_parsed_template(data) |
|
355 | url = self.get_base_parsed_template(data) | |
336 | log.debug('register %s call(%s) to url %s', self.name, event, url) |
|
356 | log.debug('register %s call(%s) to url %s', self.name, event, url) | |
@@ -360,6 +380,8 b' class WebhookDataHandler(CommitParsingDa' | |||||
360 | return self.repo_create_event_handler(event, data) |
|
380 | return self.repo_create_event_handler(event, data) | |
361 | elif isinstance(event, events.RepoCommitCommentEvent): |
|
381 | elif isinstance(event, events.RepoCommitCommentEvent): | |
362 | return self.repo_commit_comment_handler(event, data) |
|
382 | return self.repo_commit_comment_handler(event, data) | |
|
383 | elif isinstance(event, events.RepoCommitCommentEditEvent): | |||
|
384 | return self.repo_commit_comment_edit_handler(event, data) | |||
363 | elif isinstance(event, events.PullRequestEvent): |
|
385 | elif isinstance(event, events.PullRequestEvent): | |
364 | return self.pull_request_event_handler(event, data) |
|
386 | return self.pull_request_event_handler(event, data) | |
365 | else: |
|
387 | else: |
@@ -133,6 +133,8 b' class HipchatIntegrationType(Integration' | |||||
133 |
|
133 | |||
134 | if isinstance(event, events.PullRequestCommentEvent): |
|
134 | if isinstance(event, events.PullRequestCommentEvent): | |
135 | text = self.format_pull_request_comment_event(event, data) |
|
135 | text = self.format_pull_request_comment_event(event, data) | |
|
136 | elif isinstance(event, events.PullRequestCommentEditEvent): | |||
|
137 | text = self.format_pull_request_comment_event(event, data) | |||
136 | elif isinstance(event, events.PullRequestReviewEvent): |
|
138 | elif isinstance(event, events.PullRequestReviewEvent): | |
137 | text = self.format_pull_request_review_event(event, data) |
|
139 | text = self.format_pull_request_review_event(event, data) | |
138 | elif isinstance(event, events.PullRequestEvent): |
|
140 | elif isinstance(event, events.PullRequestEvent): |
@@ -157,6 +157,9 b' class SlackIntegrationType(IntegrationTy' | |||||
157 | if isinstance(event, events.PullRequestCommentEvent): |
|
157 | if isinstance(event, events.PullRequestCommentEvent): | |
158 | (title, text, fields, overrides) \ |
|
158 | (title, text, fields, overrides) \ | |
159 | = self.format_pull_request_comment_event(event, data) |
|
159 | = self.format_pull_request_comment_event(event, data) | |
|
160 | elif isinstance(event, events.PullRequestCommentEditEvent): | |||
|
161 | (title, text, fields, overrides) \ | |||
|
162 | = self.format_pull_request_comment_event(event, data) | |||
160 | elif isinstance(event, events.PullRequestReviewEvent): |
|
163 | elif isinstance(event, events.PullRequestReviewEvent): | |
161 | title, text = self.format_pull_request_review_event(event, data) |
|
164 | title, text = self.format_pull_request_review_event(event, data) | |
162 | elif isinstance(event, events.PullRequestEvent): |
|
165 | elif isinstance(event, events.PullRequestEvent): |
@@ -144,11 +144,13 b' class WebhookIntegrationType(Integration' | |||||
144 | events.PullRequestMergeEvent, |
|
144 | events.PullRequestMergeEvent, | |
145 | events.PullRequestUpdateEvent, |
|
145 | events.PullRequestUpdateEvent, | |
146 | events.PullRequestCommentEvent, |
|
146 | events.PullRequestCommentEvent, | |
|
147 | events.PullRequestCommentEditEvent, | |||
147 | events.PullRequestReviewEvent, |
|
148 | events.PullRequestReviewEvent, | |
148 | events.PullRequestCreateEvent, |
|
149 | events.PullRequestCreateEvent, | |
149 | events.RepoPushEvent, |
|
150 | events.RepoPushEvent, | |
150 | events.RepoCreateEvent, |
|
151 | events.RepoCreateEvent, | |
151 | events.RepoCommitCommentEvent, |
|
152 | events.RepoCommitCommentEvent, | |
|
153 | events.RepoCommitCommentEditEvent, | |||
152 | ] |
|
154 | ] | |
153 |
|
155 | |||
154 | def settings_schema(self): |
|
156 | def settings_schema(self): |
@@ -97,6 +97,34 b' def trigger_comment_commit_hooks(usernam' | |||||
97 | hooks_base.log_comment_commit_repository(**extras) |
|
97 | hooks_base.log_comment_commit_repository(**extras) | |
98 |
|
98 | |||
99 |
|
99 | |||
|
100 | def trigger_comment_commit_edit_hooks(username, repo_name, repo_type, repo, data=None): | |||
|
101 | """ | |||
|
102 | Triggers when a comment is edited on a commit | |||
|
103 | ||||
|
104 | :param username: username who edits the comment | |||
|
105 | :param repo_name: name of target repo | |||
|
106 | :param repo_type: the type of SCM target repo | |||
|
107 | :param repo: the repo object we trigger the event for | |||
|
108 | :param data: extra data for specific events e.g {'comment': comment_obj, 'commit': commit_obj} | |||
|
109 | """ | |||
|
110 | if not _supports_repo_type(repo_type): | |||
|
111 | return | |||
|
112 | ||||
|
113 | extras = _get_vcs_operation_context(username, repo_name, repo_type, 'comment_commit') | |||
|
114 | ||||
|
115 | comment = data['comment'] | |||
|
116 | commit = data['commit'] | |||
|
117 | ||||
|
118 | events.trigger(events.RepoCommitCommentEditEvent(repo, commit, comment)) | |||
|
119 | extras.update(repo.get_dict()) | |||
|
120 | ||||
|
121 | extras.commit = commit.serialize() | |||
|
122 | extras.comment = comment.get_api_data() | |||
|
123 | extras.created_by = username | |||
|
124 | # TODO(marcink): rcextensions handlers ?? | |||
|
125 | hooks_base.log_comment_commit_repository(**extras) | |||
|
126 | ||||
|
127 | ||||
100 | def trigger_create_pull_request_hook(username, repo_name, repo_type, pull_request, data=None): |
|
128 | def trigger_create_pull_request_hook(username, repo_name, repo_type, pull_request, data=None): | |
101 | """ |
|
129 | """ | |
102 | Triggers create pull request action hooks |
|
130 | Triggers create pull request action hooks | |
@@ -196,6 +224,29 b' def trigger_comment_pull_request_hook(us' | |||||
196 | hooks_base.log_comment_pull_request(**extras) |
|
224 | hooks_base.log_comment_pull_request(**extras) | |
197 |
|
225 | |||
198 |
|
226 | |||
|
227 | def trigger_comment_pull_request_edit_hook(username, repo_name, repo_type, pull_request, data=None): | |||
|
228 | """ | |||
|
229 | Triggers when a comment was edited on a pull request | |||
|
230 | ||||
|
231 | :param username: username who made the edit | |||
|
232 | :param repo_name: name of target repo | |||
|
233 | :param repo_type: the type of SCM target repo | |||
|
234 | :param pull_request: the pull request that comment was made on | |||
|
235 | :param data: extra data for specific events e.g {'comment': comment_obj} | |||
|
236 | """ | |||
|
237 | if not _supports_repo_type(repo_type): | |||
|
238 | return | |||
|
239 | ||||
|
240 | extras = _get_vcs_operation_context(username, repo_name, repo_type, 'comment_pull_request') | |||
|
241 | ||||
|
242 | comment = data['comment'] | |||
|
243 | events.trigger(events.PullRequestCommentEditEvent(pull_request, comment)) | |||
|
244 | extras.update(pull_request.get_api_data()) | |||
|
245 | extras.comment = comment.get_api_data() | |||
|
246 | # TODO(marcink): handle rcextensions... | |||
|
247 | hooks_base.log_comment_pull_request(**extras) | |||
|
248 | ||||
|
249 | ||||
199 | def trigger_update_pull_request_hook(username, repo_name, repo_type, pull_request, data=None): |
|
250 | def trigger_update_pull_request_hook(username, repo_name, repo_type, pull_request, data=None): | |
200 | """ |
|
251 | """ | |
201 | Triggers update pull request action hooks |
|
252 | Triggers update pull request action hooks |
@@ -789,8 +789,7 b' class CommentsModel(BaseModel):' | |||||
789 | if action == 'create': |
|
789 | if action == 'create': | |
790 | trigger_hook = hooks_utils.trigger_comment_commit_hooks |
|
790 | trigger_hook = hooks_utils.trigger_comment_commit_hooks | |
791 | elif action == 'edit': |
|
791 | elif action == 'edit': | |
792 | # TODO(dan): when this is supported we trigger edit hook too |
|
792 | trigger_hook = hooks_utils.trigger_comment_commit_edit_hooks | |
793 | return |
|
|||
794 | else: |
|
793 | else: | |
795 | return |
|
794 | return | |
796 |
|
795 |
@@ -703,6 +703,8 b' class PullRequestModel(BaseModel):' | |||||
703 | trigger_hook = hooks_utils.trigger_update_pull_request_hook |
|
703 | trigger_hook = hooks_utils.trigger_update_pull_request_hook | |
704 | elif action == 'comment': |
|
704 | elif action == 'comment': | |
705 | trigger_hook = hooks_utils.trigger_comment_pull_request_hook |
|
705 | trigger_hook = hooks_utils.trigger_comment_pull_request_hook | |
|
706 | elif action == 'comment_edit': | |||
|
707 | trigger_hook = hooks_utils.trigger_comment_pull_request_edit_hook | |||
706 | else: |
|
708 | else: | |
707 | return |
|
709 | return | |
708 |
|
710 |
@@ -28,6 +28,7 b' from rhodecode.events import (' | |||||
28 | PullRequestCreateEvent, |
|
28 | PullRequestCreateEvent, | |
29 | PullRequestUpdateEvent, |
|
29 | PullRequestUpdateEvent, | |
30 | PullRequestCommentEvent, |
|
30 | PullRequestCommentEvent, | |
|
31 | PullRequestCommentEditEvent, | |||
31 | PullRequestReviewEvent, |
|
32 | PullRequestReviewEvent, | |
32 | PullRequestMergeEvent, |
|
33 | PullRequestMergeEvent, | |
33 | PullRequestCloseEvent, |
|
34 | PullRequestCloseEvent, | |
@@ -80,6 +81,21 b' def test_pullrequest_comment_events_seri' | |||||
80 |
|
81 | |||
81 |
|
82 | |||
82 | @pytest.mark.backends("git", "hg") |
|
83 | @pytest.mark.backends("git", "hg") | |
|
84 | def test_pullrequest_comment_edit_events_serialized(pr_util, config_stub): | |||
|
85 | pr = pr_util.create_pull_request() | |||
|
86 | comment = CommentsModel().get_comments( | |||
|
87 | pr.target_repo.repo_id, pull_request=pr)[0] | |||
|
88 | event = PullRequestCommentEditEvent(pr, comment) | |||
|
89 | data = event.as_dict() | |||
|
90 | assert data['name'] == PullRequestCommentEditEvent.name | |||
|
91 | assert data['repo']['repo_name'] == pr.target_repo.repo_name | |||
|
92 | assert data['pullrequest']['pull_request_id'] == pr.pull_request_id | |||
|
93 | assert data['pullrequest']['url'] | |||
|
94 | assert data['pullrequest']['permalink_url'] | |||
|
95 | assert data['comment']['text'] == comment.text | |||
|
96 | ||||
|
97 | ||||
|
98 | @pytest.mark.backends("git", "hg") | |||
83 | def test_close_pull_request_events(pr_util, user_admin, config_stub): |
|
99 | def test_close_pull_request_events(pr_util, user_admin, config_stub): | |
84 | pr = pr_util.create_pull_request() |
|
100 | pr = pr_util.create_pull_request() | |
85 |
|
101 |
@@ -29,7 +29,8 b' from rhodecode.events.repo import (' | |||||
29 | RepoPrePullEvent, RepoPullEvent, |
|
29 | RepoPrePullEvent, RepoPullEvent, | |
30 | RepoPrePushEvent, RepoPushEvent, |
|
30 | RepoPrePushEvent, RepoPushEvent, | |
31 | RepoPreCreateEvent, RepoCreateEvent, |
|
31 | RepoPreCreateEvent, RepoCreateEvent, | |
32 |
RepoPreDeleteEvent, RepoDeleteEvent, |
|
32 | RepoPreDeleteEvent, RepoDeleteEvent, | |
|
33 | RepoCommitCommentEvent, RepoCommitCommentEditEvent | |||
33 | ) |
|
34 | ) | |
34 |
|
35 | |||
35 |
|
36 | |||
@@ -138,8 +139,32 b' def test_repo_commit_event(config_stub, ' | |||||
138 | 'comment_type': 'comment_type', |
|
139 | 'comment_type': 'comment_type', | |
139 | 'f_path': 'f_path', |
|
140 | 'f_path': 'f_path', | |
140 | 'line_no': 'line_no', |
|
141 | 'line_no': 'line_no', | |
|
142 | 'last_version': 0, | |||
141 | }) |
|
143 | }) | |
142 | event = EventClass(repo=repo_stub, commit=commit, comment=comment) |
|
144 | event = EventClass(repo=repo_stub, commit=commit, comment=comment) | |
143 | data = event.as_dict() |
|
145 | data = event.as_dict() | |
144 | assert data['commit']['commit_id'] |
|
146 | assert data['commit']['commit_id'] | |
145 | assert data['comment']['comment_id'] |
|
147 | assert data['comment']['comment_id'] | |
|
148 | ||||
|
149 | ||||
|
150 | @pytest.mark.parametrize('EventClass', [RepoCommitCommentEditEvent]) | |||
|
151 | def test_repo_commit_edit_event(config_stub, repo_stub, EventClass): | |||
|
152 | ||||
|
153 | commit = StrictAttributeDict({ | |||
|
154 | 'raw_id': 'raw_id', | |||
|
155 | 'message': 'message', | |||
|
156 | 'branch': 'branch', | |||
|
157 | }) | |||
|
158 | ||||
|
159 | comment = StrictAttributeDict({ | |||
|
160 | 'comment_id': 'comment_id', | |||
|
161 | 'text': 'text', | |||
|
162 | 'comment_type': 'comment_type', | |||
|
163 | 'f_path': 'f_path', | |||
|
164 | 'line_no': 'line_no', | |||
|
165 | 'last_version': 0, | |||
|
166 | }) | |||
|
167 | event = EventClass(repo=repo_stub, commit=commit, comment=comment) | |||
|
168 | data = event.as_dict() | |||
|
169 | assert data['commit']['commit_id'] | |||
|
170 | assert data['comment']['comment_id'] |
General Comments 0
You need to be logged in to leave comments.
Login now