diff options
Diffstat (limited to 'pyblackbird_cc/resources/tests/test_views.py')
-rw-r--r-- | pyblackbird_cc/resources/tests/test_views.py | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/pyblackbird_cc/resources/tests/test_views.py b/pyblackbird_cc/resources/tests/test_views.py deleted file mode 100644 index 87b9fc0..0000000 --- a/pyblackbird_cc/resources/tests/test_views.py +++ /dev/null @@ -1,190 +0,0 @@ -import unittest -from pathlib import Path - -import pytest -from django.conf import settings -from django.contrib.auth import get_user_model -from django.contrib.auth.models import User -from django.core.files.uploadedfile import SimpleUploadedFile -from django.test import RequestFactory -from django.test import TestCase -from django.urls import reverse - -from pyblackbird_cc.resources import services -from pyblackbird_cc.resources.forms import ResourceCreateForm -from pyblackbird_cc.resources.models import ResourceCategory -from pyblackbird_cc.resources.models import ResourceType -from pyblackbird_cc.resources.views import create_resource - -pytestmark = pytest.mark.django_db - - -def test_create_featured_resource_view(client): - url = reverse("resources:create_featured") - response = client.get(url) - assert response.status_code == 302 - - -def test_create_resource_view(client): - url = reverse("resources:create_resource") - response = client.get(url) - assert response.status_code == 302 - - -@pytest.mark.django_db -def test_create_resource_has_form(client): - User = get_user_model() - user = User.objects.create_user(email="testuser@example.com", password="12345") - client.login(email="testuser@example.com", password="12345") - - url = reverse("resources:create_resource") - response = client.get(url) - assert response.status_code == 200 - assert "form" in response.context - assert isinstance(response.context["form"], ResourceCreateForm) - - -class PDFFileUploadTestCase(TestCase): - def setUp(self): - self.url = reverse("resources:create_resource") - self.two_page_pdf = Path( - settings.BASE_DIR / "pyblackbird_cc" / "resources/tests/testdata/two_page.pdf" - ) - self.seven_page_pdf = Path( - settings.BASE_DIR / "pyblackbird_cc" / "resources/tests/testdata/seven_page.pdf" - ) - - # Create a test user - self.email = "testuser@example.com" - self.password = "testpassword" - self.user = get_user_model().objects.create_user( - email=self.email, - password=self.password, - ) - - # Log in the test user - self.client.login(email=self.email, password=self.password) - - # Open the test files and create SimpleUploadedFile objects - with open(self.two_page_pdf, "rb") as file: - self.uploaded_two_page_pdf = SimpleUploadedFile( - "two_page.pdf", - file.read(), - content_type="application/pdf", - ) - with open(self.seven_page_pdf, "rb") as file: - self.uploaded_seven_page_pdf = SimpleUploadedFile( - "seven_page.pdf", - file.read(), - content_type="application/pdf", - ) - - def tearDown(self): - # Close the SimpleUploadedFile objects - self.uploaded_two_page_pdf.close() - self.uploaded_seven_page_pdf.close() - - def test_file_upload_is_pdf(self): - """ - Test that a file can be uploaded successfully using our create_resource view. - """ - response = self.client.post( - self.url, - {"pdf_files": [self.uploaded_two_page_pdf, self.uploaded_seven_page_pdf]}, - ) - - two_page_metadata = services.get_pdf_metadata_from_path(self.two_page_pdf) - seven_page_metadata = services.get_pdf_metadata_from_path(self.seven_page_pdf) - image_files_two_pager = list(services.export_pages_as_images(self.two_page_pdf)) - image_files_seven_pager = list( - services.export_pages_as_images(self.seven_page_pdf), - ) - - self.assertEqual(two_page_metadata.n_pages, 2) - self.assertEqual(seven_page_metadata.n_pages, 7) - self.assertGreater(two_page_metadata.file_size, 0) - self.assertGreater(seven_page_metadata.file_size, 0) - self.assertEqual(len(image_files_two_pager), 2) - self.assertEqual(len(image_files_seven_pager), 7) - self.assertEqual(response.status_code, 200) - - -@unittest.skip("Currently not able to mock S3 API at this point") -class TestCreateResourceUsingResourceFactory(TestCase): - def setUp(self): - self.factory = RequestFactory() - self.user = User.objects.create_user( - username="testuser", - password="testpassword", - ) - self.two_page_pdf = "resources/tests/testdata/two_page.pdf" - self.seven_page_pdf = "resources/tests/testdata/seven_page.pdf" - - # Create resource type - self.resource_type = ResourceType.objects.create(name="Test Resource Type") - - # Create resource categories - self.main_resource_category = ResourceCategory.objects.create( - name="Test Main Category", - ) - self.additional_resource_category = ResourceCategory.objects.create( - name="Test Additional Category", - ) - - def test_post_pdf(self): - # Open the test files and create SimpleUploadedFile objects - with open(self.two_page_pdf, "rb") as file: - uploaded_two_page_pdf = SimpleUploadedFile( - "two_page.pdf", - file.read(), - content_type="application/pdf", - ) - with open(self.seven_page_pdf, "rb") as file: - uploaded_seven_page_pdf = SimpleUploadedFile( - "seven_page.pdf", - file.read(), - content_type="application/pdf", - ) - - # Create a thumbnail file (you can use a dummy file for testing) - thumbnail_file = SimpleUploadedFile( - "thumbnail.jpg", - b"thumbnail_content", - content_type="image/jpeg", - ) - - # Prepare the form data - form_data = { - "name": "Test Resource", - "description": "Test Description", - "resource_type": self.resource_type.id, - "age_range": "5-7", - "curriculum": "English", - "main_resource_category": self.main_resource_category.id, - "additional_resource_category": self.additional_resource_category.id, - "pdf_files": [uploaded_two_page_pdf, uploaded_seven_page_pdf], - "thumbnail_files": [thumbnail_file], - } - - # Prepare the form files - form_files = { - "pdf_files": [uploaded_two_page_pdf, uploaded_seven_page_pdf], - "thumbnail_files": [thumbnail_file], - } - - # Create the request object with form data and files - request = self.factory.post("/create/", data=form_data) - request.user = self.user - - # TODO mock the call to the Spaces S3 service inside the view - - # Call the create_resource view function - response = create_resource(request) - - # Assert the response status code - self.assertEqual( - response.status_code, - 302, - ) # Assuming a successful form submission redirects (status code 302) - - # Add more assertions as needed |