From 469fc63ca86de9334e2a7841d71f4fd0f533f67b Mon Sep 17 00:00:00 2001 From: sandeepsajan0 <sandeepsajan0@gmail.com> Date: Thu, 17 Feb 2022 10:58:58 +0530 Subject: [PATCH] Add tests for EditInvoiceForm --- hypha/apply/projects/tests/test_forms.py | 74 ++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/hypha/apply/projects/tests/test_forms.py b/hypha/apply/projects/tests/test_forms.py index 37273cc11..d4d5bb883 100644 --- a/hypha/apply/projects/tests/test_forms.py +++ b/hypha/apply/projects/tests/test_forms.py @@ -1,3 +1,4 @@ +import json from io import BytesIO from unittest import mock @@ -15,6 +16,7 @@ from ..files import get_files from ..forms.payment import ( ChangeInvoiceStatusForm, CreateInvoiceForm, + EditInvoiceForm, SelectDocumentForm, filter_request_choices, ) @@ -39,6 +41,7 @@ from .factories import ( DocumentCategoryFactory, InvoiceFactory, ProjectFactory, + SupportingDocumentFactory, address_to_form_data, ) @@ -365,6 +368,77 @@ class TestCreateInvoiceForm(TestCase): self.assertFalse(form.is_valid()) +class TestEditInvoiceForm(TestCase): + + def test_remove_existing_supporting_document(self): + invoice = InvoiceFactory() + SupportingDocumentFactory(invoice=invoice, document=invoice.document) + self.assertTrue(invoice.supporting_documents.exists()) + + form = EditInvoiceForm( + data={ + 'document': invoice.document, + 'supporting_documents-uploads': '[]', + 'date_from': '2018-08-15', + 'date_to': '2019-08-15', + 'amount': invoice.amount, + }, + files={ + 'supporting_documents': [], + }, + instance=invoice) + self.assertTrue(form.is_valid()) + + form.save() + self.assertFalse(invoice.supporting_documents.exists()) + + def test_keep_existing_supporting_document(self): + invoice = InvoiceFactory() + supporting_document = SupportingDocumentFactory(invoice=invoice) + self.assertEqual(invoice.supporting_documents.count(), 1) + + form = EditInvoiceForm( + data={ + 'document': invoice.document, + 'supporting_documents-uploads': json.dumps( + [{"name": supporting_document.document.name, + "size": supporting_document.document.size, + "type": "existing"}] + ), + 'date_from': '2018-08-15', + 'date_to': '2019-08-15', + 'amount': invoice.amount, + }, + instance=invoice) + self.assertTrue(form.is_valid()) + + invoice = form.save() + self.assertEqual(invoice.supporting_documents.count(), 1) + + def test_add_new_supporting_document(self): + invoice = InvoiceFactory() + self.assertEqual(invoice.supporting_documents.count(), 0) + + supporting_document = [SimpleUploadedFile('invoice.pdf', BytesIO(b'somebinarydata').read())] + form = EditInvoiceForm( + data={ + 'document': invoice.document, + 'supporting_documents-uploads': '[]', + 'date_from': '2018-08-15', + 'date_to': '2019-08-15', + 'amount': invoice.amount, + }, + files={ + 'supporting_documents': supporting_document, + }, + instance=invoice, + ) + self.assertTrue(form.is_valid()) + + invoice = form.save() + self.assertEqual(invoice.supporting_documents.count(), 1) + + @override_settings(ROOT_URLCONF='hypha.apply.urls') class TestSelectDocumentForm(TestCase): def test_copying_files(self): -- GitLab