diff --git a/server/basicknowledge/migrations/0012_auto_20211101_1008.py b/server/basicknowledge/migrations/0012_auto_20211101_1008.py index 929e4e92..89096978 100644 --- a/server/basicknowledge/migrations/0012_auto_20211101_1008.py +++ b/server/basicknowledge/migrations/0012_auto_20211101_1008.py @@ -13,7 +13,7 @@ def create_new_types(apps, schema_editor): language_communication_types = [ 'Analyse', 'Argumentation', 'Beschreibung', 'Grafiken', 'Interview', 'Kommunikation', 'Korrespondenz', 'Orthografie', 'Präsentation', - 'Struktur', 'Umfrage', 'Zusammenfassung' + 'Struktur', 'Umfrage', 'Zusammenfassung', 'Blog' ] society_types = [ 'Ethik', 'Identität und Sozialisation', 'Kultur', 'Ökologie', diff --git a/server/basicknowledge/migrations/0013_auto_20211110_1140.py b/server/basicknowledge/migrations/0013_auto_20211110_1140.py new file mode 100644 index 00000000..1918a76c --- /dev/null +++ b/server/basicknowledge/migrations/0013_auto_20211110_1140.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.24 on 2021-11-10 11:40 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('basicknowledge', '0012_auto_20211101_1008'), + ] + + operations = [ + migrations.AlterField( + model_name='basicknowledge', + name='new_type', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='instruments', to='basicknowledge.InstrumentType'), + ), + ] diff --git a/server/basicknowledge/models.py b/server/basicknowledge/models.py index 3c987493..5b5ae791 100644 --- a/server/basicknowledge/models.py +++ b/server/basicknowledge/models.py @@ -53,7 +53,7 @@ class BasicKnowledge(StrictHierarchyPage): ('subtitle', SubtitleBlock()), ], null=True, blank=True) - new_type = models.ForeignKey(InstrumentType, null=True, on_delete=models.PROTECT) + new_type = models.ForeignKey(InstrumentType, null=True, on_delete=models.PROTECT, related_name='instruments') old_type = models.CharField( max_length=100, diff --git a/server/basicknowledge/queries.py b/server/basicknowledge/queries.py index 0b27f10b..8304d3e0 100644 --- a/server/basicknowledge/queries.py +++ b/server/basicknowledge/queries.py @@ -64,4 +64,4 @@ class InstrumentQuery(object): return BasicKnowledge.objects.all().live() def resolve_instrument_types(self, info, **kwargs): - return InstrumentType.objects.all() + return InstrumentType.objects.filter(instruments__isnull=False) diff --git a/server/basicknowledge/tests/__init__.py b/server/basicknowledge/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/basicknowledge/tests/test_instrument_types_query.py b/server/basicknowledge/tests/test_instrument_types_query.py new file mode 100644 index 00000000..d90b3f4e --- /dev/null +++ b/server/basicknowledge/tests/test_instrument_types_query.py @@ -0,0 +1,27 @@ +from books.factories import InstrumentFactory, InstrumentTypeFactory +from core.tests.base_test import SkillboxTestCase + +INSTRUMENT_TYPES_QUERY = """ +query InstrumentTypesQuery { + instrumentTypes { + name + type + category + } +} +""" + + +class InstrumentTypesQueryTestCase(SkillboxTestCase): + def setUp(self) -> None: + self.createDefault() + self.type = InstrumentTypeFactory(name='Type O Negative') + second_type = InstrumentTypeFactory(name='Typecast') + InstrumentTypeFactory(name='Guitar') + self.instrument = InstrumentFactory(new_type=self.type) + InstrumentFactory(new_type=second_type) + + def test_instrument_types_empty_not_returned(self): + result = self.get_client().get_result(INSTRUMENT_TYPES_QUERY) + self.assertIsNone(result.errors) + self.assertEqual(len(result.data['instrumentTypes']), 2) diff --git a/server/core/tests/base_test.py b/server/core/tests/base_test.py index 63468630..2532be57 100644 --- a/server/core/tests/base_test.py +++ b/server/core/tests/base_test.py @@ -23,7 +23,7 @@ class SkillboxTestCase(TestCase): self.school_class = SchoolClass.objects.get(name='skillbox') - def get_client(self, user=None) -> Client: + def get_client(self, user=None) -> GQLClient: request = RequestFactory().get('/') if user is None: user = self.teacher