Пример #1
0
    def test_edit_record(self):
        original_filename = get_random_id()
        example = Example.objects.create(
            title="title1",
            input_file=ContentFile("original", original_filename),
        )
        try:
            page = self.page
            temp_file = page.create_temp_file("new_content")

            page.open(f"/admin/django_file_form_example/example/{example.id}/")
            page.assert_page_contains_text("Change example")

            page.fill_input("title", "changed title")
            page.upload_using_js(temp_file)
            page.assert_page_contains_text("11 Bytes")

            page.submit()
            page.assert_page_contains_text("Select example to change")

            example.refresh_from_db()
            self.assertEqual(example.title, "changed title")
            self.assertEqual(read_file(example.input_file), b"new_content")
        finally:
            remove_example_file(original_filename)
    def test_model_form_multipe_edit_add_file(self):
        page = self.page

        filename1 = "test1_" + get_random_id()
        temp_file = page.create_temp_file("content2")

        example = Example2.objects.create(title="title1")
        ExampleFile.objects.create(
            input_file=ContentFile("content1", filename1), example=example
        )

        page.open(f"/model_form_multiple/{example.id}")
        page.find_upload_success_with_filename(filename=filename1, upload_index=0)

        page.upload_using_js(temp_file)
        page.find_upload_success(temp_file, upload_index=1)
        page.submit()

        example = Example2.objects.get(pk=example.id)

        examples_files = example.files.all()

        self.assertSetEqual(
            {f.input_file.name for f in examples_files},
            {f"example/{filename1}", f"example/{temp_file.base_name()}"},
        )

        self.assertSetEqual(
            {read_file(example_file.input_file) for example_file in examples_files},
            {b"content1", b"content2"},
        )
    def test_model_form_edit(self):
        example = Example.objects.create(
            title="title1",
            input_file=ContentFile("original", get_random_id()),
        )

        page = self.page
        temp_file = page.create_temp_file("new_content")

        page.open(f"/model_form/{example.id}")

        page.assert_page_contains_text("8 Bytes")
        self.assertEqual(page.find_title_field().get_property("value"), "title1")

        page.find_title_field().clear()
        page.fill_title_field("changed title")

        page.upload_using_js(temp_file)
        page.assert_page_contains_text("11 Bytes")
        page.submit()

        page.assert_page_contains_text("Upload success")

        example.refresh_from_db()
        self.assertEqual(example.title, "changed title")
        self.assertEqual(read_file(example.input_file), b"new_content")
Пример #4
0
    def test_uploaded_file_unicode(self):
        filename = get_random_id()

        uploaded_file = TemporaryUploadedFile.objects.create(
            uploaded_file=ContentFile("xyz", filename),
            original_filename="ooo.txt")
        try:
            self.assertEqual(str(uploaded_file), "ooo.txt")
            self.assertEqual(str(TemporaryUploadedFile()), "")
        finally:
            uploaded_file.uploaded_file.delete()
    def test_model_form_multipe_edit_add_and_remove(self):
        page = self.page

        filename1 = "test1_" + get_random_id()
        filename2 = "test2_" + get_random_id()

        example = Example2.objects.create(title="title1")
        ExampleFile.objects.create(
            input_file=ContentFile("content1", filename1), example=example
        )
        ExampleFile.objects.create(
            input_file=ContentFile("content2", filename2), example=example
        )

        page.open(f"/model_form_multiple/{example.id}")
        page.find_upload_success_with_filename(filename=filename1, upload_index=0)
        page.find_upload_success_with_filename(filename=filename2, upload_index=1)

        page.delete_ajax_file(upload_index=1)
        page.wait_until_upload_is_removed(upload_index=1)

        page.submit()

        example = Example2.objects.get(pk=example.id)

        examples_files = example.files.all()

        self.assertSetEqual(
            {f.input_file.name for f in examples_files},
            {f"example/{filename1}"},
        )

        self.assertSetEqual(
            {read_file(example_file.input_file) for example_file in examples_files},
            {b"content1"},
        )
    def test_model_form_multipe_edit_remove_all_files(self):
        page = self.page

        filename = "test1_" + get_random_id()
        example = Example2.objects.create(title="title1")
        ExampleFile.objects.create(
            input_file=ContentFile("content1", filename), example=example
        )

        page.open(f"/model_form_multiple/{example.id}")
        page.find_upload_success_with_filename(filename=filename)
        page.delete_ajax_file()
        page.wait_until_upload_is_removed()
        page.submit()

        page.assert_page_contains_text("This field is required")
    def test_model_form_edit_remove_file(self):
        example = Example.objects.create(
            title="title1",
            input_file=ContentFile("original", get_random_id()),
        )

        page = self.page
        page.open(f"/model_form/{example.id}")
        page.assert_page_contains_text("8 Bytes")

        page.delete_ajax_file()
        page.wait_until_upload_is_removed()

        page.submit()

        page.assert_page_contains_text("This field is required")
Пример #8
0
        def test_with_files():
            filename = get_random_id()
            uploaded_file_path = self.temp_uploads_path.joinpath(filename)
            try:
                uploaded_file = TemporaryUploadedFile.objects.create(
                    created=encode_datetime(2010, 1, 1),
                    uploaded_file=ContentFile("", filename),
                )

                output = call_delete_unused_files_command()
                self.assertEqual(
                    output.strip(),
                    f"Deleted files: {Path(uploaded_file.uploaded_file.name).name}",
                )
                self.assertEqual(TemporaryUploadedFile.objects.count(), 0)
            finally:
                remove_p(uploaded_file_path)
Пример #9
0
 def setUp(self):
     self.temp_uploads_path = media_root.joinpath("temp_uploads")
     self.filename = get_random_id()