1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-05-13 18:35:20 +00:00

add draft&review test ()

This commit is contained in:
C_Q 2018-11-16 14:27:06 +08:00 committed by Daniel Pan
parent c5b4b672f4
commit 4785bd2c74
5 changed files with 292 additions and 3 deletions

View 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

View File

@ -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):

View 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)

View 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)

View File

@ -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)