Fix python tests
This commit is contained in:
parent
8ab17f9370
commit
e230c0b8e5
|
|
@ -1,100 +0,0 @@
|
||||||
import uuid
|
|
||||||
|
|
||||||
import wagtail_factories
|
|
||||||
|
|
||||||
from vbv_lernwelt.competence.content_blocks import MediaContentCollection, AnchorBlock, LinkBlock, \
|
|
||||||
CrossReferenceBlock
|
|
||||||
from vbv_lernwelt.competence.models import LibraryDocument, MediaLibraryPage, MediaCategoryPage
|
|
||||||
|
|
||||||
|
|
||||||
class LibraryDocumentFactory(wagtail_factories.DocumentFactory):
|
|
||||||
link_display_text = 'Dokument herunter laden'
|
|
||||||
thumbnail = 'https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/thumbnails/image/file.jpg'
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = LibraryDocument
|
|
||||||
|
|
||||||
|
|
||||||
class MediaLibraryPageFactory(wagtail_factories.PageFactory):
|
|
||||||
title = 'Mediathek'
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = MediaLibraryPage
|
|
||||||
|
|
||||||
|
|
||||||
class AnchorBlockFactory(wagtail_factories.StructBlockFactory):
|
|
||||||
class Meta:
|
|
||||||
model = AnchorBlock
|
|
||||||
|
|
||||||
|
|
||||||
class LinkBlockFactory(wagtail_factories.StructBlockFactory):
|
|
||||||
title = 'Interesting link'
|
|
||||||
description = 'This link is really interesting...'
|
|
||||||
url = 'https://www.vbv.ch/'
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = LinkBlock
|
|
||||||
|
|
||||||
|
|
||||||
class CrossReferenceBlockFactory(wagtail_factories.StructBlockFactory):
|
|
||||||
class Meta:
|
|
||||||
model = CrossReferenceBlock
|
|
||||||
|
|
||||||
|
|
||||||
class MediaContentCollectionFactory(wagtail_factories.StructBlockFactory):
|
|
||||||
title = 'Links'
|
|
||||||
contents = wagtail_factories.StreamFieldFactory({
|
|
||||||
'Links': LinkBlockFactory,
|
|
||||||
'Documents': LibraryDocumentFactory
|
|
||||||
})
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = MediaContentCollection
|
|
||||||
|
|
||||||
|
|
||||||
class MediaCategoryPageFactory(wagtail_factories.PageFactory):
|
|
||||||
title = 'Fahrzeug'
|
|
||||||
introduction_text = 'Das Auto ist für viele der grösste Stolz! Es birgt aber ...'
|
|
||||||
description_title = 'Das erwartet dich in diesem Handlungsfeld'
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = MediaCategoryPage
|
|
||||||
|
|
||||||
|
|
||||||
def create_media_content_link(link_block=None):
|
|
||||||
if link_block is None:
|
|
||||||
link_block = LinkBlockFactory()
|
|
||||||
return {
|
|
||||||
"id": str(uuid.uuid4()),
|
|
||||||
"type": "Links",
|
|
||||||
"value": dict(link_block.items())
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def create_link_collection(links_dict=None):
|
|
||||||
return {
|
|
||||||
"id": str(uuid.uuid4()),
|
|
||||||
"type": "content_collection",
|
|
||||||
"value": {
|
|
||||||
"title": "Links",
|
|
||||||
"contents": [link_dict for link_dict in links_dict]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def create_document_collection(document_ids=None):
|
|
||||||
if document_ids is None:
|
|
||||||
document_ids = [d.id for d in LibraryDocument.objects.all()]
|
|
||||||
|
|
||||||
return {
|
|
||||||
"id": str(uuid.uuid4()),
|
|
||||||
"type": "content_collection",
|
|
||||||
"value": {
|
|
||||||
"title": "Lernmedien",
|
|
||||||
"contents": [{
|
|
||||||
"id": str(uuid.uuid4()),
|
|
||||||
"type": "Documents",
|
|
||||||
"value": doc_id
|
|
||||||
} for doc_id in document_ids]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
|
from vbv_lernwelt.competence.models import CompetenceProfilePage
|
||||||
|
from vbv_lernwelt.core.admin import User
|
||||||
|
from vbv_lernwelt.core.create_default_users import create_default_users
|
||||||
|
from vbv_lernwelt.course.creators.test_course import create_test_course
|
||||||
|
|
||||||
|
|
||||||
|
class CompetenceAPITestCase(APITestCase):
|
||||||
|
def setUp(self) -> None:
|
||||||
|
create_default_users()
|
||||||
|
create_test_course()
|
||||||
|
self.user = User.objects.get(username='student')
|
||||||
|
self.client.login(username='student', password='test')
|
||||||
|
|
||||||
|
def test_get_learnpathPage(self):
|
||||||
|
slug = 'test-lehrgang-competence'
|
||||||
|
competence_profile = CompetenceProfilePage.objects.get(slug=slug)
|
||||||
|
response = self.client.get(f'/api/course/page/{slug}/')
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
data = response.json()
|
||||||
|
|
||||||
|
self.assertEqual(competence_profile.title, data['title'])
|
||||||
|
self.assertEqual('Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die Ziele und Pläne des Kunden zu ergründen (SOLL).', data['children'][1]['children'][0]['title'])
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
from wagtail.core.models import Collection
|
|
||||||
|
|
||||||
from vbv_lernwelt.core.create_default_users import create_default_users
|
|
||||||
from vbv_lernwelt.core.tests.helpers import create_locales_for_wagtail
|
|
||||||
from vbv_lernwelt.competence.create_default_documents import create_default_collections, create_default_documents
|
|
||||||
from vbv_lernwelt.competence.models import LibraryDocument
|
|
||||||
|
|
||||||
|
|
||||||
class TestCreateDefaultDocuments(TestCase):
|
|
||||||
def setUp(self) -> None:
|
|
||||||
create_default_users()
|
|
||||||
create_locales_for_wagtail()
|
|
||||||
|
|
||||||
def test_create_default_collections(self):
|
|
||||||
create_default_collections()
|
|
||||||
qs = Collection.objects.filter(name="Versicherungsvermittler/in")
|
|
||||||
self.assertTrue(qs.exists())
|
|
||||||
|
|
||||||
def test_create_default_documents(self):
|
|
||||||
create_default_collections()
|
|
||||||
|
|
||||||
create_default_documents()
|
|
||||||
qs = LibraryDocument.objects.all()
|
|
||||||
self.assertTrue(qs.exists())
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
from vbv_lernwelt.core.create_default_users import create_default_users
|
|
||||||
from vbv_lernwelt.core.tests.helpers import create_locales_for_wagtail
|
|
||||||
from vbv_lernwelt.learnpath.tests.learning_path_factories import LearningPathFactory
|
|
||||||
from vbv_lernwelt.competence.create_default_competence import create_default_competence
|
|
||||||
from vbv_lernwelt.competence.models import MediaLibraryPage, MediaCategoryPage
|
|
||||||
|
|
||||||
|
|
||||||
class TestCreateDefaultDocuments(TestCase):
|
|
||||||
def setUp(self) -> None:
|
|
||||||
create_default_users()
|
|
||||||
create_locales_for_wagtail()
|
|
||||||
LearningPathFactory()
|
|
||||||
create_default_competence()
|
|
||||||
|
|
||||||
|
|
||||||
def test_create_default_competence(self):
|
|
||||||
|
|
||||||
self.assertEqual(MediaLibraryPage.objects.all().count(), 1)
|
|
||||||
self.assertEqual(MediaCategoryPage.objects.all().count(), 12)
|
|
||||||
|
|
||||||
def test_create_category_fahrzeug_contains_content(self):
|
|
||||||
fahrzeug = MediaCategoryPage.objects.get(title='Fahrzeug')
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
import json
|
|
||||||
|
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
from vbv_lernwelt.core.create_default_users import create_default_users
|
|
||||||
from vbv_lernwelt.core.tests.helpers import create_locales_for_wagtail
|
|
||||||
from vbv_lernwelt.competence.models import MediaCategoryPage
|
|
||||||
from vbv_lernwelt.competence.tests.competence_factories import MediaContentCollectionFactory, MediaCategoryPageFactory, \
|
|
||||||
LinkBlockFactory, generate_default_content2, collection_body_dict
|
|
||||||
|
|
||||||
|
|
||||||
class TestMediaLibraryFactories(TestCase):
|
|
||||||
def setUp(self) -> None:
|
|
||||||
create_default_users()
|
|
||||||
create_locales_for_wagtail()
|
|
||||||
|
|
||||||
def test_content_collection_factory(self):
|
|
||||||
content_collection = MediaContentCollectionFactory()
|
|
||||||
self.assertEqual(content_collection.get('title'), 'Links')
|
|
||||||
self.assertEqual(content_collection.get('collection_type'), 'LearningMedia')
|
|
||||||
|
|
||||||
def test_link_block_factory(self):
|
|
||||||
link = LinkBlockFactory(title='MyLink')
|
|
||||||
self.assertEqual(link.get('description'), 'This link is really interesting...')
|
|
||||||
self.assertEqual(link.get('url'), 'www.example.com')
|
|
||||||
self.assertEqual(link.get('link_display_text'), 'Link öffnen')
|
|
||||||
self.assertEqual(link.get('title'), 'MyLink')
|
|
||||||
|
|
||||||
def test_category_contains_content_collection(self):
|
|
||||||
default_content = generate_default_content2()
|
|
||||||
default_content['body__content_collection__0__title'] = 'Spidf'
|
|
||||||
|
|
||||||
category = MediaCategoryPageFactory(**default_content)
|
|
||||||
print(category.body.raw_data)
|
|
||||||
self.assertNotEqual(category.body.raw_data, [])
|
|
||||||
|
|
||||||
def collection_via_dict_generation(self):
|
|
||||||
category = MediaCategoryPageFactory()
|
|
||||||
category.body = json.dumps(collection_body_dict())
|
|
||||||
category.save()
|
|
||||||
category_id = category.id
|
|
||||||
new_category = MediaCategoryPage.objects.get(id=category_id)
|
|
||||||
self.assertNotEqual(new_category.body, [])
|
|
||||||
self.assertNotEqual(new_category.body, [])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,20 +1,31 @@
|
||||||
|
import json
|
||||||
|
|
||||||
import wagtail_factories
|
import wagtail_factories
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from wagtail.models import Site
|
from wagtail.models import Site
|
||||||
|
|
||||||
|
from vbv_lernwelt.competence.factories import CompetenceProfilePageFactory, CompetencePageFactory, \
|
||||||
|
PerformanceCriteriaFactory
|
||||||
|
from vbv_lernwelt.competence.models import CompetencePage
|
||||||
from vbv_lernwelt.core.tests.helpers import create_locales_for_wagtail
|
from vbv_lernwelt.core.tests.helpers import create_locales_for_wagtail
|
||||||
from vbv_lernwelt.course.consts import COURSE_TEST_ID
|
from vbv_lernwelt.course.consts import COURSE_TEST_ID
|
||||||
from vbv_lernwelt.course.factories import CoursePageFactory
|
from vbv_lernwelt.course.factories import CoursePageFactory
|
||||||
from vbv_lernwelt.course.models import CoursePage, CourseCategory
|
from vbv_lernwelt.course.models import CoursePage, CourseCategory, Course
|
||||||
|
from vbv_lernwelt.learnpath.models import LearningUnit
|
||||||
from vbv_lernwelt.learnpath.tests.learning_path_factories import CircleFactory, LearningSequenceFactory, \
|
from vbv_lernwelt.learnpath.tests.learning_path_factories import CircleFactory, LearningSequenceFactory, \
|
||||||
LearningContentFactory, DocumentBlockFactory, LearningUnitFactory, TestBlockFactory, ExerciseBlockFactory, \
|
LearningContentFactory, DocumentBlockFactory, LearningUnitFactory, TestBlockFactory, ExerciseBlockFactory, \
|
||||||
LearningPathFactory, TopicFactory, OnlineTrainingBlockFactory
|
LearningPathFactory, TopicFactory, OnlineTrainingBlockFactory
|
||||||
|
from vbv_lernwelt.media_library.tests.media_library_factories import MediaLibraryPageFactory, \
|
||||||
|
create_document_collection, create_link_collection, create_media_content_link, LinkBlockFactory, \
|
||||||
|
MediaCategoryPageFactory
|
||||||
|
|
||||||
|
|
||||||
def create_test_course():
|
def create_test_course():
|
||||||
create_locales_for_wagtail()
|
create_locales_for_wagtail()
|
||||||
create_test_course_with_categories()
|
create_test_course_with_categories()
|
||||||
create_test_learning_path()
|
create_test_learning_path()
|
||||||
|
create_test_competence_profile()
|
||||||
|
create_test_media_library()
|
||||||
|
|
||||||
|
|
||||||
def create_test_course_with_categories(apps=None, schema_editor=None):
|
def create_test_course_with_categories(apps=None, schema_editor=None):
|
||||||
|
|
@ -27,7 +38,7 @@ def create_test_course_with_categories(apps=None, schema_editor=None):
|
||||||
|
|
||||||
course, _ = Course.objects.get_or_create(
|
course, _ = Course.objects.get_or_create(
|
||||||
id=COURSE_TEST_ID,
|
id=COURSE_TEST_ID,
|
||||||
title='Test Lerngang',
|
title='Test Lehrgang',
|
||||||
category_name='Handlungsfeld'
|
category_name='Handlungsfeld'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -164,3 +175,116 @@ def create_test_learning_path(user=None, skip_locales=True):
|
||||||
contents=[('document', DocumentBlockFactory())]
|
contents=[('document', DocumentBlockFactory())]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def create_test_competence_profile():
|
||||||
|
course = Course.objects.get(id=COURSE_TEST_ID)
|
||||||
|
course_page = CoursePage.objects.get(course_id=COURSE_TEST_ID)
|
||||||
|
|
||||||
|
competence_profile_page = CompetenceProfilePageFactory(
|
||||||
|
title='Kompetenzprofil',
|
||||||
|
parent=course_page,
|
||||||
|
)
|
||||||
|
|
||||||
|
competences = [{
|
||||||
|
'competence_id': 'X1',
|
||||||
|
'title': 'Weiterempfehlung für Neukunden generieren',
|
||||||
|
'items': [
|
||||||
|
'Verhandlungsgeschick',
|
||||||
|
'Überzeugtes Auftreten',
|
||||||
|
],
|
||||||
|
}, {
|
||||||
|
'competence_id': 'Y1',
|
||||||
|
'title': 'Wünsche, Ziele und Bedürfnisse der Kunden im Gespräch ermitteln',
|
||||||
|
'items': [
|
||||||
|
'Gesprächsführung',
|
||||||
|
'Fragetechniken',
|
||||||
|
'Kundenpsychologie',
|
||||||
|
]
|
||||||
|
}, {
|
||||||
|
'competence_id': 'Y2',
|
||||||
|
'title': 'Analyse des Kundenbedarfs und des Kundenbedürfnisses durchführen',
|
||||||
|
'items': [
|
||||||
|
'Fragetechniken',
|
||||||
|
'Visuelle Hilfsmittel / Visualisierungstechniken',
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
|
||||||
|
for c in competences:
|
||||||
|
CompetencePageFactory(
|
||||||
|
parent=competence_profile_page,
|
||||||
|
competence_id=c['competence_id'],
|
||||||
|
title=c['title'],
|
||||||
|
items=[
|
||||||
|
('item', i) for i in c['items']
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
PerformanceCriteriaFactory(
|
||||||
|
parent=CompetencePage.objects.get(competence_id='Y1'),
|
||||||
|
competence_id='Y1.3',
|
||||||
|
title='Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die Ziele und Pläne des Kunden zu ergründen (SOLL).',
|
||||||
|
learning_unit=LearningUnit.objects.get(slug='test-lehrgang-lp-circle-analyse-lu-fahrzeug'),
|
||||||
|
)
|
||||||
|
PerformanceCriteriaFactory(
|
||||||
|
parent=CompetencePage.objects.get(competence_id='Y2'),
|
||||||
|
competence_id='Y2.1',
|
||||||
|
title='Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die IST-Situation des Kunden mit der geeigneten Gesprächs-/Fragetechnik zu erfassen.',
|
||||||
|
learning_unit=LearningUnit.objects.get(slug='test-lehrgang-lp-circle-analyse-lu-fahrzeug'),
|
||||||
|
)
|
||||||
|
|
||||||
|
PerformanceCriteriaFactory(
|
||||||
|
parent=CompetencePage.objects.get(competence_id='Y1'),
|
||||||
|
competence_id='Y1.3',
|
||||||
|
title='Innerhalb des Handlungsfelds «Reisen» bin ich fähig, die Ziele und Pläne des Kunden zu ergründen (SOLL).',
|
||||||
|
learning_unit=LearningUnit.objects.get(slug='test-lehrgang-lp-circle-analyse-lu-reisen'),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def create_test_media_library():
|
||||||
|
course = Course.objects.get(id=COURSE_TEST_ID)
|
||||||
|
course_page = CoursePage.objects.get(course_id=COURSE_TEST_ID)
|
||||||
|
|
||||||
|
media_lib_page = MediaLibraryPageFactory(
|
||||||
|
title='Mediathek',
|
||||||
|
parent=course_page,
|
||||||
|
)
|
||||||
|
|
||||||
|
icons = ['icon-hf-fahrzeug', 'icon-hf-reisen', 'icon-hf-einkommenssicherung', ]
|
||||||
|
for idx, cat in enumerate(course.coursecategory_set.all()):
|
||||||
|
overview_icon = icons[(idx + 2) % len(icons)]
|
||||||
|
introduction_text = '''
|
||||||
|
Das Auto ist für viele der grösste Stolz! Es birgt aber auch ein grosses Gefahrenpotenzial.
|
||||||
|
Dabei geht es bei den heutigen Fahrzeugpreisen und Reparaturkosten rasch um namhafte Summen,
|
||||||
|
die der Fahrzeugbesitzer und die Fahrzeugbesitzerin in einem grösseren Schadenfall oft nur schwer selbst aufbringen kann.'''.strip()
|
||||||
|
description_title = 'Das erwartet dich in diesem Handlungsfeld'
|
||||||
|
description_text = '''
|
||||||
|
In diesem berufstypischem Handlungsfeld lernst du alles rund um Motorfahrzeugversicherungen,
|
||||||
|
wie man sein Auto optimal schützen kann, wie du vorgehst bei einem Fahrzeugwechsel,
|
||||||
|
welche Aspekte du bei einer Offerte beachten musst und wie du dem Kunden die Lösung präsentierst.'''.strip()
|
||||||
|
items = [
|
||||||
|
('item', 'Motorfahrzeughaftpflichtversicherung'),
|
||||||
|
('item', 'Motorfahrzeugkaskoversicherung'),
|
||||||
|
('item', 'Insassenunfallversicherung'),
|
||||||
|
]
|
||||||
|
body_data = json.dumps([
|
||||||
|
create_document_collection(),
|
||||||
|
create_link_collection(
|
||||||
|
links_dict=[
|
||||||
|
create_media_content_link(
|
||||||
|
LinkBlockFactory(title='Nationales Versicherungsbüro', url='https://www.vbv.ch/')),
|
||||||
|
create_media_content_link(
|
||||||
|
LinkBlockFactory(title='Adressen der Strassenverkehrsämter', url='https://www.vbv.ch/')),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
])
|
||||||
|
media_category = MediaCategoryPageFactory(
|
||||||
|
overview_icon=overview_icon,
|
||||||
|
title=cat.title,
|
||||||
|
course_category=cat,
|
||||||
|
parent=media_lib_page,
|
||||||
|
introduction_text=introduction_text,
|
||||||
|
description_title=description_title,
|
||||||
|
description_text=description_text,
|
||||||
|
items=items,
|
||||||
|
body=body_data,
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import djclick as click
|
import djclick as click
|
||||||
|
|
||||||
from vbv_lernwelt.competence.create_default_competence_profile import create_default_competence_profile
|
from vbv_lernwelt.competence.create_default_competence_profile import create_default_competence_profile
|
||||||
|
from vbv_lernwelt.course.creators.test_course import create_test_course
|
||||||
from vbv_lernwelt.course.creators.versicherungsvermittlerin import create_versicherungsvermittlerin_with_categories
|
from vbv_lernwelt.course.creators.versicherungsvermittlerin import create_versicherungsvermittlerin_with_categories
|
||||||
from vbv_lernwelt.learnpath.create_default_learning_path import create_default_learning_path
|
from vbv_lernwelt.learnpath.create_default_learning_path import create_default_learning_path
|
||||||
from vbv_lernwelt.media_library.create_default_documents import create_default_collections, create_default_documents
|
from vbv_lernwelt.media_library.create_default_documents import create_default_collections, create_default_documents
|
||||||
|
|
@ -19,3 +20,6 @@ def command():
|
||||||
create_default_collections()
|
create_default_collections()
|
||||||
create_default_documents()
|
create_default_documents()
|
||||||
create_default_media_library()
|
create_default_media_library()
|
||||||
|
|
||||||
|
# test course
|
||||||
|
create_test_course()
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
# Generated by Django 3.2.13 on 2022-09-28 12:51
|
# Generated by Django 3.2.13 on 2022-09-28 12:51
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
@ -23,7 +23,7 @@ class Migration(migrations.Migration):
|
||||||
('category_name', models.CharField(default='Kategorie', max_length=255, verbose_name='Kategorie-Name')),
|
('category_name', models.CharField(default='Kategorie', max_length=255, verbose_name='Kategorie-Name')),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'verbose_name': 'Lerngang',
|
'verbose_name': 'Lehrgang',
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
|
|
@ -33,7 +33,7 @@ class Migration(migrations.Migration):
|
||||||
('course', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='course.course')),
|
('course', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='course.course')),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'verbose_name': 'Lerngang-Seite',
|
'verbose_name': 'Lehrgang-Seite',
|
||||||
},
|
},
|
||||||
bases=('wagtailcore.page',),
|
bases=('wagtailcore.page',),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ class Course(models.Model):
|
||||||
category_name = models.CharField(_('Kategorie-Name'), max_length=255, default='Kategorie')
|
category_name = models.CharField(_('Kategorie-Name'), max_length=255, default='Kategorie')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("Lerngang")
|
verbose_name = _("Lehrgang")
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.title}"
|
return f"{self.title}"
|
||||||
|
|
@ -35,7 +35,7 @@ class CoursePage(Page):
|
||||||
course = models.ForeignKey('course.Course', on_delete=models.PROTECT)
|
course = models.ForeignKey('course.Course', on_delete=models.PROTECT)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("Lerngang-Seite")
|
verbose_name = _("Lehrgang-Seite")
|
||||||
|
|
||||||
def full_clean(self, *args, **kwargs):
|
def full_clean(self, *args, **kwargs):
|
||||||
self.slug = find_available_slug(slugify(self.title, allow_unicode=True))
|
self.slug = find_available_slug(slugify(self.title, allow_unicode=True))
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
|
from vbv_lernwelt.core.admin import User
|
||||||
|
from vbv_lernwelt.core.create_default_users import create_default_users
|
||||||
|
from vbv_lernwelt.course.creators.test_course import create_test_course
|
||||||
|
from vbv_lernwelt.media_library.models import MediaLibraryPage
|
||||||
|
|
||||||
|
|
||||||
|
class MediaCenterAPITestCase(APITestCase):
|
||||||
|
def setUp(self) -> None:
|
||||||
|
create_default_users()
|
||||||
|
create_test_course()
|
||||||
|
self.user = User.objects.get(username='student')
|
||||||
|
self.client.login(username='student', password='test')
|
||||||
|
|
||||||
|
def test_get_learnpathPage(self):
|
||||||
|
slug = 'test-lehrgang-media'
|
||||||
|
media_library = MediaLibraryPage.objects.get(slug=slug)
|
||||||
|
response = self.client.get(f'/api/course/page/{slug}/')
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
data = response.json()
|
||||||
|
|
||||||
|
self.assertEqual(media_library.title, data['title'])
|
||||||
|
self.assertEqual('Fahrzeug', data['children'][1]['title'])
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
from wagtail.core.models import Collection
|
|
||||||
|
|
||||||
from vbv_lernwelt.core.create_default_users import create_default_users
|
|
||||||
from vbv_lernwelt.core.tests.helpers import create_locales_for_wagtail
|
|
||||||
from vbv_lernwelt.media_library.create_default_documents import create_default_collections, create_default_documents
|
|
||||||
from vbv_lernwelt.media_library.models import LibraryDocument
|
|
||||||
|
|
||||||
|
|
||||||
class TestCreateDefaultDocuments(TestCase):
|
|
||||||
def setUp(self) -> None:
|
|
||||||
create_default_users()
|
|
||||||
create_locales_for_wagtail()
|
|
||||||
|
|
||||||
def test_create_default_collections(self):
|
|
||||||
create_default_collections()
|
|
||||||
qs = Collection.objects.filter(name="Versicherungsvermittler/in")
|
|
||||||
self.assertTrue(qs.exists())
|
|
||||||
|
|
||||||
def test_create_default_documents(self):
|
|
||||||
create_default_collections()
|
|
||||||
|
|
||||||
create_default_documents()
|
|
||||||
qs = LibraryDocument.objects.all()
|
|
||||||
self.assertTrue(qs.exists())
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
from vbv_lernwelt.core.create_default_users import create_default_users
|
|
||||||
from vbv_lernwelt.core.tests.helpers import create_locales_for_wagtail
|
|
||||||
from vbv_lernwelt.learnpath.tests.learning_path_factories import LearningPathFactory
|
|
||||||
from vbv_lernwelt.media_library.create_default_media_library import create_default_media_library
|
|
||||||
from vbv_lernwelt.media_library.models import MediaLibraryPage, MediaCategoryPage
|
|
||||||
|
|
||||||
|
|
||||||
class TestCreateDefaultDocuments(TestCase):
|
|
||||||
def setUp(self) -> None:
|
|
||||||
create_default_users()
|
|
||||||
create_locales_for_wagtail()
|
|
||||||
LearningPathFactory()
|
|
||||||
create_default_media_library()
|
|
||||||
|
|
||||||
|
|
||||||
def test_create_default_media_library(self):
|
|
||||||
|
|
||||||
self.assertEqual(MediaLibraryPage.objects.all().count(), 1)
|
|
||||||
self.assertEqual(MediaCategoryPage.objects.all().count(), 12)
|
|
||||||
|
|
||||||
def test_create_category_fahrzeug_contains_content(self):
|
|
||||||
fahrzeug = MediaCategoryPage.objects.get(title='Fahrzeug')
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
import json
|
|
||||||
|
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
from vbv_lernwelt.core.create_default_users import create_default_users
|
|
||||||
from vbv_lernwelt.core.tests.helpers import create_locales_for_wagtail
|
|
||||||
from vbv_lernwelt.media_library.models import MediaCategoryPage
|
|
||||||
from vbv_lernwelt.media_library.tests.media_library_factories import MediaContentCollectionFactory, MediaCategoryPageFactory, \
|
|
||||||
LinkBlockFactory, generate_default_content2, collection_body_dict
|
|
||||||
|
|
||||||
|
|
||||||
class TestMediaLibraryFactories(TestCase):
|
|
||||||
def setUp(self) -> None:
|
|
||||||
create_default_users()
|
|
||||||
create_locales_for_wagtail()
|
|
||||||
|
|
||||||
def test_content_collection_factory(self):
|
|
||||||
content_collection = MediaContentCollectionFactory()
|
|
||||||
self.assertEqual(content_collection.get('title'), 'Links')
|
|
||||||
self.assertEqual(content_collection.get('collection_type'), 'LearningMedia')
|
|
||||||
|
|
||||||
def test_link_block_factory(self):
|
|
||||||
link = LinkBlockFactory(title='MyLink')
|
|
||||||
self.assertEqual(link.get('description'), 'This link is really interesting...')
|
|
||||||
self.assertEqual(link.get('url'), 'www.example.com')
|
|
||||||
self.assertEqual(link.get('link_display_text'), 'Link öffnen')
|
|
||||||
self.assertEqual(link.get('title'), 'MyLink')
|
|
||||||
|
|
||||||
def test_category_contains_content_collection(self):
|
|
||||||
default_content = generate_default_content2()
|
|
||||||
default_content['body__content_collection__0__title'] = 'Spidf'
|
|
||||||
|
|
||||||
category = MediaCategoryPageFactory(**default_content)
|
|
||||||
print(category.body.raw_data)
|
|
||||||
self.assertNotEqual(category.body.raw_data, [])
|
|
||||||
|
|
||||||
def collection_via_dict_generation(self):
|
|
||||||
category = MediaCategoryPageFactory()
|
|
||||||
category.body = json.dumps(collection_body_dict())
|
|
||||||
category.save()
|
|
||||||
category_id = category.id
|
|
||||||
new_category = MediaCategoryPage.objects.get(id=category_id)
|
|
||||||
self.assertNotEqual(new_category.body, [])
|
|
||||||
self.assertNotEqual(new_category.body, [])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue