Skip to content
Snippets Groups Projects
Commit 0fec3d1e authored by Todd Dembrey's avatar Todd Dembrey Committed by Fredrik Jonsson
Browse files

WIP: add tests

parent 7ddce2dd
No related branches found
No related tags found
No related merge requests found
......@@ -16,21 +16,3 @@ class IsApplyStaffUser(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
return request.user.is_apply_staff
def is_user_has_access_to_view_submission(user, submission):
has_access = False
if not user.is_authenticated:
pass
elif user.is_apply_staff or submission.user == user or user.is_reviewer:
has_access = True
elif user.is_partner and submission.partners.filter(pk=user.pk).exists():
has_access = True
elif user.is_community_reviewer and submission.community_review:
has_access = True
return has_access
......@@ -11,7 +11,6 @@ from opentech.apply.funds.models import ApplicationSubmission, RoundsAndLabs
from opentech.apply.review.models import Review, ReviewOpinion
from opentech.apply.review.options import RECOMMENDATION_CHOICES
from opentech.apply.users.groups import PARTNER_GROUP_NAME, STAFF_GROUP_NAME
from .models import ApplicationSubmission, RoundsAndLabs
User = get_user_model()
......@@ -202,7 +201,7 @@ class RoundLabSerializer(serializers.ModelSerializer):
class CommentSerializer(serializers.ModelSerializer):
user = serializers.StringRelatedField()
message = serializers.SerializerMethodField()
edit_url = serializers.HyperlinkedIdentityField(view_name='funds:api:comments:edit')
edit_url = serializers.HyperlinkedIdentityField(view_name='api:v1:comments:edit')
editable = serializers.SerializerMethodField()
timestamp = TimestampField(read_only=True)
edited = TimestampField(read_only=True)
......@@ -220,7 +219,7 @@ class CommentSerializer(serializers.ModelSerializer):
class CommentCreateSerializer(serializers.ModelSerializer):
user = serializers.StringRelatedField()
edit_url = serializers.HyperlinkedIdentityField(view_name='funds:api:comments:edit')
edit_url = serializers.HyperlinkedIdentityField(view_name='api:v1:comments:edit')
editable = serializers.SerializerMethodField()
timestamp = TimestampField(read_only=True)
edited = TimestampField(read_only=True)
......
from django.test import override_settings, TestCase
from opentech.apply.funds.tests.factories import ApplicationSubmissionFactory
from opentech.apply.review.tests.factories import ReviewFactory
from ..serializers import ReviewSummarySerializer
@override_settings(ROOT_URLCONF='opentech.apply.urls')
class TestReviewSummarySerializer(TestCase):
def test_handles_no_reviews(self):
submission = ApplicationSubmissionFactory()
data = ReviewSummarySerializer(submission).data
self.assertEqual(data['count'], 0)
self.assertEqual(data['score'], None)
self.assertEqual(data['recommendation'], {'value': -1, 'display': None})
self.assertEqual(data['assigned'], [])
self.assertEqual(data['reviews'], [])
def test_handles_negative_reviews(self):
submission = ApplicationSubmissionFactory()
ReviewFactory(submission=submission)
data = ReviewSummarySerializer(submission).data
self.assertEqual(data['count'], 1)
self.assertEqual(data['score'], 0)
self.assertEqual(data['recommendation'], {'value': 0, 'display': 'No'})
self.assertEqual(len(data['assigned']), 1)
self.assertEqual(len(data['reviews']), 1)
......@@ -11,7 +11,7 @@ from opentech.apply.users.tests.factories import UserFactory
class TestCommentEdit(TestCase):
def post_to_edit(self, comment_pk, message='my message'):
return self.client.post(
reverse_lazy('funds:api:comments:edit', kwargs={'pk': comment_pk}),
reverse_lazy('api:v1:comments:edit', kwargs={'pk': comment_pk}),
secure=True,
data={'message': message},
)
......@@ -59,7 +59,7 @@ class TestCommentEdit(TestCase):
self.client.force_login(user)
response = self.client.post(
reverse_lazy('funds:api:comments:edit', kwargs={'pk': comment.pk}),
reverse_lazy('api:v1:comments:edit', kwargs={'pk': comment.pk}),
secure=True,
data={
'message': 'the new message',
......
from django.urls import include, path
from .views import (
CommentEdit,
CommentList,
CommentListCreate,
RoundLabDetail,
......@@ -25,5 +26,6 @@ urlpatterns = [
], 'rounds'))),
path('comments/', include(([
path('', CommentList.as_view(), name='list'),
path('<int:pk>/edit/', CommentEdit.as_view(), name='edit'),
], 'comments')))
]
......@@ -22,7 +22,7 @@ from opentech.apply.review.models import Review
from opentech.apply.funds.models import FundType, LabType
from .pagination import StandardResultsSetPagination
from .permissions import IsApplyStaffUser
from .permissions import IsApplyStaffUser, IsAuthor
from .serializers import (
CommentSerializer,
CommentCreateSerializer,
......@@ -33,8 +33,6 @@ from .serializers import (
SubmissionListSerializer,
SubmissionDetailSerializer,
)
from .permissions import IsApplyStaffUser, IsAuthor
from .workflow import PHASES
class RoundLabFilter(filters.ModelChoiceFilter):
......
def is_user_has_access_to_view_submission(user, submission):
has_access = False
if not user.is_authenticated:
pass
elif user.is_apply_staff or submission.user == user or user.is_reviewer:
has_access = True
elif user.is_partner and submission.partners.filter(pk=user.pk).exists():
has_access = True
elif user.is_community_reviewer and submission.community_review:
has_access = True
return has_access
......@@ -20,16 +20,6 @@ from .views import (
SubmissionUserFlaggedView,
SubmissionStaffFlaggedView,
)
from .api_views import (
CommentEdit,
CommentList,
CommentListCreate,
RoundLabDetail,
RoundLabList,
SubmissionAction,
SubmissionList,
SubmissionDetail,
)
revision_urls = ([
......@@ -68,23 +58,6 @@ submission_urls = ([
path('<slug:status>/', SubmissionsByStatus.as_view(), name='status'),
], 'submissions')
api_urls = ([
path('submissions/', include(([
path('', SubmissionList.as_view(), name='list'),
path('<int:pk>/', SubmissionDetail.as_view(), name='detail'),
path('<int:pk>/actions/', SubmissionAction.as_view(), name='actions'),
path('<int:pk>/comments/', CommentListCreate.as_view(), name='comments'),
], 'submissions'))),
path('rounds/', include(([
path('', RoundLabList.as_view(), name='list'),
path('<int:pk>/', RoundLabDetail.as_view(), name='detail'),
], 'rounds'))),
path('comments/', include(([
path('', CommentList.as_view(), name='list'),
path('<int:pk>/edit/', CommentEdit.as_view(), name='edit'),
], 'comments')))
], 'api')
rounds_urls = ([
path('', RoundListView.as_view(), name="list"),
path('<int:pk>/', SubmissionsByRound.as_view(), name="detail"),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment