mirror of
https://github.com/haiwen/seahub.git
synced 2025-05-13 18:35:20 +00:00
add draft&review test (#2527)
This commit is contained in:
parent
c5b4b672f4
commit
4785bd2c74
tests
api/endpoints
seahub/drafts
112
tests/api/endpoints/test_draft_reviews.py
Normal file
112
tests/api/endpoints/test_draft_reviews.py
Normal file
@ -0,0 +1,112 @@
|
||||
import json
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
|
||||
from seahub.drafts.models import Draft, DraftReview
|
||||
from seahub.share.utils import share_dir_to_user
|
||||
from seahub.test_utils import BaseTestCase
|
||||
|
||||
|
||||
class DraftReviewsViewTest(BaseTestCase):
|
||||
def setUp(self):
|
||||
self.draft = Draft.objects.add(self.user.username, self.repo, self.file)
|
||||
self.url = reverse('api-v2.1-draft-reviews')
|
||||
|
||||
def test_can_list(self):
|
||||
self.login_as(self.user)
|
||||
resp = self.client.get(self.url)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
def test_can_add(self):
|
||||
self.login_as(self.user)
|
||||
assert len(DraftReview.objects.all()) == 0
|
||||
resp = self.client.post(self.url, {
|
||||
'draft_id': self.draft.id,
|
||||
})
|
||||
self.assertEqual(200, resp.status_code)
|
||||
assert len(DraftReview.objects.all()) == 1
|
||||
|
||||
def test_add_with_no_permission(self):
|
||||
self.login_as(self.admin)
|
||||
assert len(DraftReview.objects.all()) == 0
|
||||
resp = self.client.post(self.url, {
|
||||
'draft_id': self.draft.id,
|
||||
})
|
||||
self.assertEqual(403, resp.status_code)
|
||||
assert len(DraftReview.objects.all()) == 0
|
||||
|
||||
|
||||
class DraftReviewViewTest(BaseTestCase):
|
||||
def setUp(self):
|
||||
self.draft = Draft.objects.add(self.user.username, self.repo, self.file)
|
||||
self.review = DraftReview.objects.add(self.user.username, self.draft)
|
||||
self.url = reverse('api-v2.1-draft-review', args=[self.review.id])
|
||||
|
||||
def test_can_close(self):
|
||||
self.login_as(self.user)
|
||||
resp = self.client.put(
|
||||
self.url,
|
||||
'status=closed',
|
||||
'application/x-www-form-urlencoded',
|
||||
)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert json_resp['status'] == 'closed'
|
||||
|
||||
def test_close_with_no_permission(self):
|
||||
self.login_as(self.admin)
|
||||
resp = self.client.put(
|
||||
self.url,
|
||||
'status=closed',
|
||||
'application/x-www-form-urlencoded',
|
||||
)
|
||||
self.assertEqual(403, resp.status_code)
|
||||
|
||||
def test_publish_with_rw_permission(self):
|
||||
self.login_as(self.user)
|
||||
assert len(Draft.objects.all()) == 1
|
||||
|
||||
resp = self.client.put(
|
||||
self.url,
|
||||
'status=finished',
|
||||
'application/x-www-form-urlencoded',
|
||||
)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
assert len(Draft.objects.all()) == 0
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert json_resp['status'] == 'finished'
|
||||
|
||||
def test_publish_with_r_permission(self):
|
||||
|
||||
share_from = self.user.username
|
||||
share_to = self.admin.username
|
||||
share_dir_to_user(self.repo, '/', share_from, share_from, share_to, 'r')
|
||||
|
||||
self.login_as(self.admin)
|
||||
assert len(Draft.objects.all()) == 1
|
||||
|
||||
resp = self.client.put(
|
||||
self.url,
|
||||
'status=finished',
|
||||
'application/x-www-form-urlencoded',
|
||||
)
|
||||
self.assertEqual(403, resp.status_code)
|
||||
|
||||
assert len(Draft.objects.all()) == 1
|
||||
|
||||
def test_publish_with_no_permission(self):
|
||||
self.login_as(self.admin)
|
||||
assert len(Draft.objects.all()) == 1
|
||||
|
||||
resp = self.client.put(
|
||||
self.url,
|
||||
'status=finished',
|
||||
'application/x-www-form-urlencoded',
|
||||
)
|
||||
self.assertEqual(403, resp.status_code)
|
||||
|
||||
assert len(Draft.objects.all()) == 1
|
@ -24,7 +24,7 @@ class DraftsViewTest(BaseTestCase):
|
||||
'repo_id': self.repo.id,
|
||||
'file_path': self.file,
|
||||
})
|
||||
print(resp)
|
||||
|
||||
self.assertEqual(200, resp.status_code)
|
||||
assert len(Draft.objects.all()) == 1
|
||||
|
||||
@ -45,7 +45,7 @@ class DraftsViewTest(BaseTestCase):
|
||||
'file_path': self.file,
|
||||
})
|
||||
|
||||
self.assertEqual(200, resp.status_code)
|
||||
self.assertEqual(409, resp.status_code)
|
||||
|
||||
|
||||
class DraftViewTest(BaseTestCase):
|
||||
|
113
tests/api/endpoints/test_review_comment.py
Normal file
113
tests/api/endpoints/test_review_comment.py
Normal file
@ -0,0 +1,113 @@
|
||||
import json
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
|
||||
from seahub.drafts.models import Draft, DraftReview, ReviewComment
|
||||
from seahub.share.utils import share_dir_to_user
|
||||
from seahub.test_utils import BaseTestCase
|
||||
|
||||
|
||||
class ReviewCommentsViewTest(BaseTestCase):
|
||||
def setUp(self):
|
||||
self.draft = Draft.objects.add(self.user.username, self.repo, self.file)
|
||||
self.review = DraftReview.objects.add(self.user.username, self.draft)
|
||||
self.url = reverse('api2-review-comments', args=[self.review.id])
|
||||
self.login_as(self.user)
|
||||
|
||||
def test_can_list(self):
|
||||
|
||||
resp = self.client.get(self.url)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
def test_can_add(self):
|
||||
|
||||
assert len(ReviewComment.objects.all()) == 0
|
||||
|
||||
resp = self.client.post(self.url, {
|
||||
'comment': 'test'
|
||||
})
|
||||
|
||||
assert len(ReviewComment.objects.all()) == 1
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert json_resp['comment'] == 'test'
|
||||
|
||||
|
||||
class ReviewCommentViewTest(BaseTestCase):
|
||||
def setUp(self):
|
||||
self.draft = Draft.objects.add(self.user.username, self.repo, self.file)
|
||||
self.review = DraftReview.objects.add(self.user.username, self.draft)
|
||||
self.r_c = ReviewComment.objects.add(comment='review comment', detail='',
|
||||
author=self.user.username,
|
||||
review_id=self.review)
|
||||
self.url = reverse('api2-review-comment', args=[self.review.id, self.r_c.id])
|
||||
|
||||
def test_delete(self):
|
||||
self.login_as(self.user)
|
||||
assert len(ReviewComment.objects.all()) == 1
|
||||
resp = self.client.delete(self.url)
|
||||
assert len(ReviewComment.objects.all()) == 0
|
||||
|
||||
def test_delete_with_r_permission(self):
|
||||
share_from = self.user.username
|
||||
share_to = self.admin.username
|
||||
share_dir_to_user(self.repo, '/', share_from, share_from, share_to, 'r')
|
||||
|
||||
self.login_as(self.admin)
|
||||
|
||||
assert len(ReviewComment.objects.all()) == 1
|
||||
resp = self.client.delete(self.url)
|
||||
assert len(ReviewComment.objects.all()) == 0
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
|
||||
def test_delete_with_no_permission(self):
|
||||
self.login_as(self.admin)
|
||||
|
||||
assert len(ReviewComment.objects.all()) == 1
|
||||
resp = self.client.delete(self.url)
|
||||
assert len(ReviewComment.objects.all()) == 1
|
||||
self.assertEqual(403, resp.status_code)
|
||||
|
||||
|
||||
def test_put(self):
|
||||
self.login_as(self.user)
|
||||
assert self.r_c.resolved is False
|
||||
resp = self.client.put(
|
||||
self.url,
|
||||
'resolved=true',
|
||||
'application/x-www-form-urlencoded',
|
||||
)
|
||||
json_resp = json.loads(resp.content)
|
||||
assert json_resp['resolved'] is True
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
def test_put_with_r_permission(self):
|
||||
share_from = self.user.username
|
||||
share_to = self.admin.username
|
||||
share_dir_to_user(self.repo, '/', share_from, share_from, share_to, 'r')
|
||||
|
||||
self.login_as(self.admin)
|
||||
|
||||
assert self.r_c.resolved is False
|
||||
resp = self.client.put(
|
||||
self.url,
|
||||
'resolved=true',
|
||||
'application/x-www-form-urlencoded',
|
||||
)
|
||||
json_resp = json.loads(resp.content)
|
||||
assert json_resp['resolved'] is True
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
def test_put_with_no_permission(self):
|
||||
self.login_as(self.admin)
|
||||
|
||||
assert self.r_c.resolved is False
|
||||
resp = self.client.put(
|
||||
self.url,
|
||||
'resolved=true',
|
||||
'application/x-www-form-urlencoded',
|
||||
)
|
||||
self.assertEqual(403, resp.status_code)
|
36
tests/api/endpoints/test_review_reviewer.py
Normal file
36
tests/api/endpoints/test_review_reviewer.py
Normal file
@ -0,0 +1,36 @@
|
||||
import json
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
|
||||
from seahub.drafts.models import Draft, DraftReview, ReviewReviewer
|
||||
from seahub.share.utils import share_dir_to_user
|
||||
from seahub.test_utils import BaseTestCase
|
||||
|
||||
|
||||
class ReviewReviewerViewTest(BaseTestCase):
|
||||
def setUp(self):
|
||||
self.share_from = self.user.username
|
||||
self.share_to = self.admin.username
|
||||
share_dir_to_user(self.repo, '/', self.share_from, self.share_from, self.share_to, 'rw')
|
||||
|
||||
self.draft = Draft.objects.add(self.user.username, self.repo, self.file)
|
||||
self.review = DraftReview.objects.add(self.user.username, self.draft)
|
||||
self.url = reverse('api-v2.1-draft-review-reviewer', args=[self.review.id])
|
||||
self.login_as(self.user)
|
||||
|
||||
def test_can_list(self):
|
||||
resp = self.client.get(self.url)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
def test_can_add(self):
|
||||
assert len(ReviewReviewer.objects.all()) == 0
|
||||
|
||||
resp = self.client.post(self.url, {
|
||||
'reviewer': ['foo@foo.com', self.share_to]
|
||||
})
|
||||
|
||||
json_resp = json.loads(resp.content)
|
||||
assert json_resp['failed'][0]['email'] == 'foo@foo.com'
|
||||
assert json_resp['success'][0]['user_info']['name'] == self.share_to
|
||||
|
||||
self.assertEqual(200, resp.status_code)
|
@ -1,4 +1,5 @@
|
||||
from seahub.drafts.models import Draft, DraftFileExist
|
||||
from seahub.drafts.models import Draft, DraftReview, ReviewReviewer, \
|
||||
DraftFileExist
|
||||
from seahub.test_utils import BaseTestCase
|
||||
|
||||
from seaserv import seafile_api
|
||||
@ -60,3 +61,30 @@ class DraftTest(BaseTestCase):
|
||||
|
||||
# file is updated in origin repo
|
||||
assert len(seafile_api.list_dir_by_path(self.repo.id, '/')) == 2
|
||||
|
||||
|
||||
class DraftReviewManagerTest(BaseTestCase):
|
||||
def setUp(self):
|
||||
self.draft = Draft.objects.add(self.user.username, self.repo, self.file)
|
||||
|
||||
def test_add(self):
|
||||
assert len(DraftReview.objects.all()) == 0
|
||||
review = DraftReview.objects.add(self.user.username, self.draft)
|
||||
|
||||
assert review is not None
|
||||
assert len(DraftReview.objects.all()) == 1
|
||||
|
||||
r = review.to_dict()
|
||||
assert r['draft_origin_repo_id'] == self.repo.id
|
||||
assert len(r['draft_file_path']) > 0
|
||||
|
||||
def test_get_reviews_by_creator_and_status(self):
|
||||
assert(len(DraftReview.objects.get_reviews_by_creator_and_status(self.user.username, 'open')) == 0)
|
||||
DraftReview.objects.add(self.user.username, self.draft)
|
||||
assert(len(DraftReview.objects.get_reviews_by_creator_and_status(self.user.username, 'open')) == 1)
|
||||
|
||||
def test_get_reviews_by_reviewer_and_status(self):
|
||||
assert(len(DraftReview.objects.get_reviews_by_reviewer_and_status('foo@foo.com', 'open')) == 0)
|
||||
review = DraftReview.objects.add(self.user.username, self.draft)
|
||||
ReviewReviewer.objects.add('foo@foo.com', review)
|
||||
assert(len(DraftReview.objects.get_reviews_by_reviewer_and_status('foo@foo.com', 'open')) == 1)
|
||||
|
Loading…
Reference in New Issue
Block a user