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")
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")
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)
def setUp(self): self.temp_uploads_path = media_root.joinpath("temp_uploads") self.filename = get_random_id()