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): ...@@ -16,21 +16,3 @@ class IsApplyStaffUser(permissions.BasePermission):
def has_object_permission(self, request, view, obj): def has_object_permission(self, request, view, obj):
return request.user.is_apply_staff 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 ...@@ -11,7 +11,6 @@ from opentech.apply.funds.models import ApplicationSubmission, RoundsAndLabs
from opentech.apply.review.models import Review, ReviewOpinion from opentech.apply.review.models import Review, ReviewOpinion
from opentech.apply.review.options import RECOMMENDATION_CHOICES from opentech.apply.review.options import RECOMMENDATION_CHOICES
from opentech.apply.users.groups import PARTNER_GROUP_NAME, STAFF_GROUP_NAME from opentech.apply.users.groups import PARTNER_GROUP_NAME, STAFF_GROUP_NAME
from .models import ApplicationSubmission, RoundsAndLabs
User = get_user_model() User = get_user_model()
...@@ -202,7 +201,7 @@ class RoundLabSerializer(serializers.ModelSerializer): ...@@ -202,7 +201,7 @@ class RoundLabSerializer(serializers.ModelSerializer):
class CommentSerializer(serializers.ModelSerializer): class CommentSerializer(serializers.ModelSerializer):
user = serializers.StringRelatedField() user = serializers.StringRelatedField()
message = serializers.SerializerMethodField() 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() editable = serializers.SerializerMethodField()
timestamp = TimestampField(read_only=True) timestamp = TimestampField(read_only=True)
edited = TimestampField(read_only=True) edited = TimestampField(read_only=True)
...@@ -220,7 +219,7 @@ class CommentSerializer(serializers.ModelSerializer): ...@@ -220,7 +219,7 @@ class CommentSerializer(serializers.ModelSerializer):
class CommentCreateSerializer(serializers.ModelSerializer): class CommentCreateSerializer(serializers.ModelSerializer):
user = serializers.StringRelatedField() 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() editable = serializers.SerializerMethodField()
timestamp = TimestampField(read_only=True) timestamp = TimestampField(read_only=True)
edited = 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 ...@@ -11,7 +11,7 @@ from opentech.apply.users.tests.factories import UserFactory
class TestCommentEdit(TestCase): class TestCommentEdit(TestCase):
def post_to_edit(self, comment_pk, message='my message'): def post_to_edit(self, comment_pk, message='my message'):
return self.client.post( 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, secure=True,
data={'message': message}, data={'message': message},
) )
...@@ -59,7 +59,7 @@ class TestCommentEdit(TestCase): ...@@ -59,7 +59,7 @@ class TestCommentEdit(TestCase):
self.client.force_login(user) self.client.force_login(user)
response = self.client.post( 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, secure=True,
data={ data={
'message': 'the new message', 'message': 'the new message',
......
from django.urls import include, path from django.urls import include, path
from .views import ( from .views import (
CommentEdit,
CommentList, CommentList,
CommentListCreate, CommentListCreate,
RoundLabDetail, RoundLabDetail,
...@@ -25,5 +26,6 @@ urlpatterns = [ ...@@ -25,5 +26,6 @@ urlpatterns = [
], 'rounds'))), ], 'rounds'))),
path('comments/', include(([ path('comments/', include(([
path('', CommentList.as_view(), name='list'), path('', CommentList.as_view(), name='list'),
path('<int:pk>/edit/', CommentEdit.as_view(), name='edit'),
], 'comments'))) ], 'comments')))
] ]
...@@ -22,7 +22,7 @@ from opentech.apply.review.models import Review ...@@ -22,7 +22,7 @@ from opentech.apply.review.models import Review
from opentech.apply.funds.models import FundType, LabType from opentech.apply.funds.models import FundType, LabType
from .pagination import StandardResultsSetPagination from .pagination import StandardResultsSetPagination
from .permissions import IsApplyStaffUser from .permissions import IsApplyStaffUser, IsAuthor
from .serializers import ( from .serializers import (
CommentSerializer, CommentSerializer,
CommentCreateSerializer, CommentCreateSerializer,
...@@ -33,8 +33,6 @@ from .serializers import ( ...@@ -33,8 +33,6 @@ from .serializers import (
SubmissionListSerializer, SubmissionListSerializer,
SubmissionDetailSerializer, SubmissionDetailSerializer,
) )
from .permissions import IsApplyStaffUser, IsAuthor
from .workflow import PHASES
class RoundLabFilter(filters.ModelChoiceFilter): 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 ( ...@@ -20,16 +20,6 @@ from .views import (
SubmissionUserFlaggedView, SubmissionUserFlaggedView,
SubmissionStaffFlaggedView, SubmissionStaffFlaggedView,
) )
from .api_views import (
CommentEdit,
CommentList,
CommentListCreate,
RoundLabDetail,
RoundLabList,
SubmissionAction,
SubmissionList,
SubmissionDetail,
)
revision_urls = ([ revision_urls = ([
...@@ -68,23 +58,6 @@ submission_urls = ([ ...@@ -68,23 +58,6 @@ submission_urls = ([
path('<slug:status>/', SubmissionsByStatus.as_view(), name='status'), path('<slug:status>/', SubmissionsByStatus.as_view(), name='status'),
], 'submissions') ], '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 = ([ rounds_urls = ([
path('', RoundListView.as_view(), name="list"), path('', RoundListView.as_view(), name="list"),
path('<int:pk>/', SubmissionsByRound.as_view(), name="detail"), 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