factory/apps/wpm/tests/test_mlogbw_files.py

37 lines
1.3 KiB
Python

from django.test import SimpleTestCase
from django.urls import reverse
from apps.system.models import File
from apps.wpm.models import Mlogbw
from apps.wpm.serializers import MlogbwFilesSerializer, MlogbwListSerializer
from apps.wpm.views import MlogbwViewSet
class MlogbwFilesDefinitionTests(SimpleTestCase):
def test_files_field_links_system_file(self):
field = Mlogbw._meta.get_field("files")
self.assertTrue(field.blank)
self.assertIs(field.remote_field.model, File)
self.assertEqual(field.remote_field.related_name, "mlogbw_outputs")
def test_list_serializer_exposes_file_ids_and_details(self):
fields = MlogbwListSerializer().fields
self.assertTrue(fields["files"].read_only)
self.assertTrue(fields["files_"].read_only)
def test_files_serializer_only_writes_file_relations(self):
fields = MlogbwFilesSerializer().fields
self.assertEqual(set(fields), {"id", "files", "files_"})
self.assertFalse(fields["files"].read_only)
def test_files_action_supports_read_and_update(self):
self.assertEqual(MlogbwViewSet.files.mapping["get"], "files")
self.assertEqual(MlogbwViewSet.files.mapping["put"], "files")
self.assertEqual(
reverse("mlogbw-files", kwargs={"pk": "single-id"}),
"/api/wpm/mlogbw/single-id/files/",
)