Commit 6bf86e89 by Ibrahim Committed by Matt Tuchfarber

test cases for whitelabel journal

parent d4d9eea3
import factory
from django.contrib.sites.models import Site
from course_discovery.apps.core.models import Partner, User
from course_discovery.apps.core.models import Currency, Partner, User
from course_discovery.apps.core.tests.utils import FuzzyUrlRoot
USER_PASSWORD = 'password'
......@@ -60,3 +60,11 @@ class PartnerFactory(factory.DjangoModelFactory):
class Meta(object):
model = Partner
class CurrencyFactory(factory.DjangoModelFactory):
code = factory.fuzzy.FuzzyText()
name = factory.fuzzy.FuzzyText()
class Meta(object):
model = Currency
from django.contrib import admin
from .models import JournalBundle, Journal
from .models import Journal, JournalBundle
@admin.register(Journal)
......
'''Filter class for Journals'''
from course_discovery.apps.journal.models import Journal
from course_discovery.apps.journal.choices import JournalStatus
from django_filters import rest_framework as filters
from course_discovery.apps.journal.choices import JournalStatus
from course_discovery.apps.journal.models import Journal
class CharListFilter(filters.CharFilter):
""" Filters a field via a comma-delimited list of values. """
......
......@@ -2,9 +2,9 @@
from rest_framework import serializers
from course_discovery.apps.api.serializers import MinimalCourseSerializer
from course_discovery.apps.journal.models import Journal, JournalBundle
from course_discovery.apps.core.models import Currency, Partner
from course_discovery.apps.course_metadata.models import Organization
from course_discovery.apps.journal.models import Journal, JournalBundle
class JournalSerializer(serializers.ModelSerializer):
......
from pytest import mark
from rest_framework.reverse import reverse
from rest_framework.test import APITestCase
from course_discovery.apps.core.tests.factories import USER_PASSWORD, UserFactory
from course_discovery.apps.journal.tests.factories import JournalBundleFactory, JournalFactory
@mark.django_db
class JournalViewSetTests(APITestCase):
""" Tests for the JournalViewSet. """
def setUp(self):
super(JournalViewSetTests, self).setUp()
self.user = UserFactory(is_staff=True)
self.journal = JournalFactory()
self.client.login(username=self.user.username, password=USER_PASSWORD)
self.journal_url = reverse('journal:api:v1:journal-list')
def test_without_authentication(self):
""" Verify authentication is required when accessing the endpoint. """
self.client.logout()
response = self.client.get(self.journal_url)
self.assertEqual(response.status_code, 403)
def test_list(self):
""" Verify response on list view. """
response = self.client.get(self.journal_url)
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data['results']), 1)
self.assertTrue('partner' in response.data['results'][0])
@mark.django_db
class JournalBundleViewSetTests(APITestCase):
""" Tests for the JournalBundleViewSet. """
def setUp(self):
super(JournalBundleViewSetTests, self).setUp()
self.user = UserFactory(is_staff=True)
self.journal_bundle = JournalBundleFactory()
self.client.login(username=self.user.username, password=USER_PASSWORD)
self.journal_bundle_url = reverse('journal:api:v1:journal_bundle-list')
def test_without_authentication(self):
""" Verify authentication is required when accessing the endpoint. """
self.client.logout()
response = self.client.get(self.journal_bundle_url)
self.assertEqual(response.status_code, 403)
def test_list(self):
""" Verify response on list view. """
response = self.client.get(self.journal_bundle_url)
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data['results']), 1)
self.assertTrue('journals' in response.data['results'][0])
""" API v1 URLs. """
from rest_framework.routers import DefaultRouter
from .views import JournalViewSet, JournalBundleViewSet
from .views import JournalBundleViewSet, JournalViewSet
router = DefaultRouter()
router.register(r'journals', JournalViewSet, base_name='journal')
......
'''JournalViewSet'''
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import viewsets
from rest_framework_extensions.cache.mixins import CacheResponseMixin
from rest_framework.permissions import IsAdminUser
from rest_framework_extensions.cache.mixins import CacheResponseMixin
from course_discovery.apps.journal.models import Journal, JournalBundle
from course_discovery.apps.journal.api.filters import JournalFilter
from course_discovery.apps.journal.api.serializers import JournalSerializer, JournalBundleSerializer
from course_discovery.apps.journal import constants as journal_constants
from course_discovery.apps.journal.api.filters import JournalFilter
from course_discovery.apps.journal.api.serializers import JournalBundleSerializer, JournalSerializer
from course_discovery.apps.journal.models import Journal, JournalBundle
class JournalViewSet(viewsets.ModelViewSet):
......
from django.utils.translation import ugettext_lazy as _
from djchoices import ChoiceItem, DjangoChoices
class JournalStatus(DjangoChoices):
Active = ChoiceItem('active', _('Active'))
Inactive = ChoiceItem('inactive', _('Inactive'))
......@@ -2,10 +2,11 @@
# Generated by Django 1.11.3 on 2018-03-21 20:02
from __future__ import unicode_literals
from django.db import migrations, models
import uuid
import django.db.models.deletion
import django_extensions.db.fields
import uuid
from django.db import migrations, models
class Migration(migrations.Migration):
......
......@@ -2,10 +2,11 @@
# Generated by Django 1.11.3 on 2018-03-22 18:23
from __future__ import unicode_literals
from django.db import migrations, models
import django_extensions.db.fields
import uuid
import django_extensions.db.fields
from django.db import migrations, models
class Migration(migrations.Migration):
......
......@@ -2,8 +2,8 @@
# Generated by Django 1.11.3 on 2018-03-22 20:17
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
......
......@@ -2,8 +2,8 @@
# Generated by Django 1.11.11 on 2018-03-29 20:09
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
......
......@@ -2,9 +2,10 @@
# Generated by Django 1.11.11 on 2018-04-03 19:27
from __future__ import unicode_literals
from django.db import migrations, models
import uuid
from django.db import migrations, models
class Migration(migrations.Migration):
......
......@@ -2,8 +2,8 @@
# Generated by Django 1.11.3 on 2018-04-11 20:03
from __future__ import unicode_literals
from django.db import migrations, models
import djchoices.choices
from django.db import migrations, models
class Migration(migrations.Migration):
......
from uuid import uuid4
from django.db import models
from django_extensions.db.models import TimeStampedModel
from django.utils.translation import ugettext_lazy as _
from uuid import uuid4
from django_extensions.db.models import TimeStampedModel
from course_discovery.apps.core.models import Currency, Partner
from course_discovery.apps.course_metadata.models import Course, Organization, SeatType
......
from django.test import TestCase
# Create your tests here.
import uuid
import factory
from factory.fuzzy import FuzzyDecimal, FuzzyText
from course_discovery.apps.core.tests.factories import CurrencyFactory, PartnerFactory, add_m2m_data
from course_discovery.apps.course_metadata.tests.factories import OrganizationFactory
from course_discovery.apps.journal.models import Journal, JournalBundle
class JournalFactory(factory.DjangoModelFactory):
uuid = uuid.uuid4()
title = FuzzyText()
price = FuzzyDecimal(0.0, 650.0)
short_description = FuzzyText()
full_description = FuzzyText()
status = "active"
currency = factory.SubFactory(CurrencyFactory)
partner = factory.SubFactory(PartnerFactory)
organization = factory.SubFactory(OrganizationFactory)
class Meta:
model = Journal
class JournalBundleFactory(factory.DjangoModelFactory):
uuid = uuid.uuid4()
title = FuzzyText()
partner = factory.SubFactory(PartnerFactory)
class Meta:
model = JournalBundle
@factory.post_generation
def journals(self, create, extracted, **kwargs):
# pylint: disable=unused-argument
if create: # pragma: no cover
add_m2m_data(self.journals, extracted)
@factory.post_generation
def courses(self, create, extracted, **kwargs):
# pylint: disable=unused-argument
if create: # pragma: no cover
add_m2m_data(self.courses, extracted)
@factory.post_generation
def applicable_seat_types(self, create, extracted, **kwargs):
# pylint: disable=unused-argument
if create: # pragma: no cover
add_m2m_data(self.applicable_seat_types, extracted)
""" Tests for core models. """
from django.test import TestCase
from pytest import mark
from course_discovery.apps.journal.tests.factories import JournalBundleFactory, JournalFactory
@mark.django_db
class JournalTests(TestCase):
""" Journal model tests. """
def setUp(self):
super(JournalTests, self).setUp()
self.journal = JournalFactory()
def test_str(self):
self.assertTrue(self.journal, self.journal.title)
@mark.django_db
class JournalBundleTests(TestCase):
""" JournalBundle model tests. """
def setUp(self):
super(JournalBundleTests, self).setUp()
self.journal_bundle = JournalBundleFactory()
def test_str(self):
self.assertTrue(self.journal_bundle, self.journal_bundle.title)
from django.shortcuts import render
# Create your views here.
......@@ -248,6 +248,7 @@ msgid "Self-paced"
msgstr ""
#: apps/course_metadata/choices.py:20
#: apps/course_metadata/choices.py apps/journal/choices.py
msgid "Active"
msgstr ""
......@@ -283,6 +284,7 @@ msgstr ""
#: apps/course_metadata/models.py:217 apps/course_metadata/models.py:262
#: apps/course_metadata/models.py:340 apps/course_metadata/models.py:456
#: apps/course_metadata/models.py:933
#: apps/course_metadata/models.py apps/journal/models.py
msgid "UUID"
msgstr ""
......@@ -522,6 +524,18 @@ msgstr ""
msgid "The program was changed successfully."
msgstr ""
#: apps/journal/choices.py
msgid "Inactive"
msgstr ""
#: apps/journal/models.py
msgid "Used to determine whether journal is marketed or not."
msgstr ""
#: apps/journal/models.py
msgid "The user-facing display title for this Journal Bundle"
msgstr ""
#: apps/publisher/api/serializers.py:81
#, python-brace-format
msgid "Invalid course key \"{lms_course_id}\""
......
......@@ -299,7 +299,7 @@ msgstr "Ìnstrüçtör-päçéd Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αм#
msgid "Self-paced"
msgstr "Sélf-päçéd Ⱡ'σяєм ιρѕυм ∂σłσ#"
#: apps/course_metadata/choices.py
#: apps/course_metadata/choices.py apps/journal/choices.py
msgid "Active"
msgstr "Àçtïvé Ⱡ'σяєм ιρѕυ#"
......@@ -337,6 +337,7 @@ msgstr "Öthérs Ⱡ'σяєм ιρѕυ#"
#: apps/course_metadata/models.py apps/course_metadata/models.py
#: apps/course_metadata/models.py apps/course_metadata/models.py
#: apps/course_metadata/models.py
#: apps/course_metadata/models.py apps/journal/models.py
msgid "UUID"
msgstr "ÛÛÌD Ⱡ'σяєм ι#"
......@@ -665,6 +666,22 @@ msgstr ""
"Thé prögräm wäs çhängéd süççéssfüllý. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, "
"¢σηѕє¢тєтυ#"
#: apps/journal/choices.py
msgid "Inactive"
msgstr "Ìnäçtïvé Ⱡ'σяєм ιρѕυм ∂#"
#: apps/journal/models.py
msgid "Used to determine whether journal is marketed or not."
msgstr ""
"Ûséd tö détérmïné whéthér jöürnäl ïs märkétéd ör nöt. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт"
" αмєт, ¢σηѕє¢тєтυя α#"
#: apps/journal/models.py
msgid "The user-facing display title for this Journal Bundle"
msgstr ""
"Thé üsér-fäçïng dïspläý tïtlé för thïs Jöürnäl Bündlé Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт"
" αмєт, ¢σηѕє¢тєтυя α#"
#: apps/publisher/api/serializers.py
#, python-brace-format
msgid "Invalid course key \"{lms_course_id}\""
......
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