Commit 70053336 by muhammad-ammar Committed by Muhammad Ammar

fix serializer fields

parent edec9391
...@@ -61,14 +61,17 @@ class CourseSerializer(serializers.Serializer): # pylint: disable=abstract-meth ...@@ -61,14 +61,17 @@ class CourseSerializer(serializers.Serializer): # pylint: disable=abstract-meth
""" """
Returns a dict containing `status` and `date` for course team status. Returns a dict containing `status` and `date` for course team status.
""" """
default_status = {
'status': '',
'date': ''
}
try: try:
course_team_status = course.course_state.course_team_status course_team_status = course.course_state.course_team_status
except ObjectDoesNotExist: except ObjectDoesNotExist:
return { return default_status
'status': '',
'date': ''
}
course_team_status = default_status if course_team_status is None else course_team_status
course_team_status_date = course_team_status.get('date', '') course_team_status_date = course_team_status.get('date', '')
return { return {
'status': course_team_status.get('status_text', ''), 'status': course_team_status.get('status_text', ''),
...@@ -79,14 +82,17 @@ class CourseSerializer(serializers.Serializer): # pylint: disable=abstract-meth ...@@ -79,14 +82,17 @@ class CourseSerializer(serializers.Serializer): # pylint: disable=abstract-meth
""" """
Returns a dict containing `status` and `date` for internal user status. Returns a dict containing `status` and `date` for internal user status.
""" """
default_status = {
'status': '',
'date': ''
}
try: try:
internal_user_status = course.course_state.internal_user_status internal_user_status = course.course_state.internal_user_status
except ObjectDoesNotExist: except ObjectDoesNotExist:
return { return default_status
'status': '',
'date': ''
}
internal_user_status = default_status if internal_user_status is None else internal_user_status
internal_user_status_date = internal_user_status.get('date', '') internal_user_status_date = internal_user_status.get('date', '')
return { return {
'status': internal_user_status.get('status_text', ''), 'status': internal_user_status.get('status_text', ''),
......
...@@ -11,6 +11,7 @@ from django.conf import settings ...@@ -11,6 +11,7 @@ from django.conf import settings
from django.contrib.auth.models import Group from django.contrib.auth.models import Group
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
from django.core import mail from django.core import mail
from django.core.exceptions import ObjectDoesNotExist
from django.db import IntegrityError from django.db import IntegrityError
from django.forms import model_to_dict from django.forms import model_to_dict
from django.test import TestCase from django.test import TestCase
...@@ -1956,6 +1957,33 @@ class CourseListViewPaginationTests(PaginationMixin, TestCase): ...@@ -1956,6 +1957,33 @@ class CourseListViewPaginationTests(PaginationMixin, TestCase):
self.assertEqual(response.context_data['publisher_courses_url'], reverse('publisher:publisher_courses')) self.assertEqual(response.context_data['publisher_courses_url'], reverse('publisher:publisher_courses'))
self.assertEqual(response.context_data['allowed_page_sizes'], json.dumps(COURSES_ALLOWED_PAGE_SIZES)) self.assertEqual(response.context_data['allowed_page_sizes'], json.dumps(COURSES_ALLOWED_PAGE_SIZES))
@mock.patch('course_discovery.apps.publisher.models.CourseState.course_team_status', new_callable=mock.PropertyMock)
@mock.patch('course_discovery.apps.publisher.models.CourseState.internal_user_status',
new_callable=mock.PropertyMock)
def test_course_state_statuses(self, mocked_internal_user_status, mocked_course_team_status):
""" Verify that course_state statuses raise no exception. """
mocked_internal_user_status.return_value = None
mocked_course_team_status.return_value = None
courses = self.get_courses()
for course in courses:
self.assertEqual(course['course_team_status'], {'status': '', 'date': ''})
self.assertEqual(course['internal_user_status'], {'status': '', 'date': ''})
@mock.patch('course_discovery.apps.publisher.models.CourseState.course_team_status', new_callable=mock.PropertyMock)
@mock.patch('course_discovery.apps.publisher.models.CourseState.internal_user_status',
new_callable=mock.PropertyMock)
def test_course_state_exceptions(self, mocked_internal_user_status, mocked_course_team_status):
"""
Verify that course_team_status and internal_user_status return
default status when course.course_status does not exist.
"""
mocked_internal_user_status.side_effect = ObjectDoesNotExist
mocked_course_team_status.side_effect = ObjectDoesNotExist
courses = self.get_courses()
for course in courses:
self.assertEqual(course['course_team_status'], {'status': '', 'date': ''})
self.assertEqual(course['internal_user_status'], {'status': '', 'date': ''})
class CourseDetailViewTests(TestCase): class CourseDetailViewTests(TestCase):
""" Tests for the course detail view. """ """ Tests for the course detail view. """
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment