def test_validation_filters(self): """ Test the admin validation filters. This filters receipts by the validation status. """ validated_receipt = fixtures.ReceiptFactory() failed_validation_receipt = fixtures.ReceiptFactory() not_validated_receipt = fixtures.ReceiptFactory() fixtures.ReceiptValidationFactory(receipt=validated_receipt) fixtures.ReceiptValidationFactory( result=models.ReceiptValidation.RESULT_REJECTED, receipt=failed_validation_receipt, ) client = Client() client.force_login(User.objects.first()) response = client.get('/admin/afip/receipt/?status=validated') self.assertContains( response, '<input class="action-select" name="_selected_action" value="{}" ' 'type="checkbox">'.format(validated_receipt.pk), html=True, ) self.assertNotContains( response, '<input class="action-select" name="_selected_action" value="{}" ' 'type="checkbox">'.format(not_validated_receipt.pk), html=True, ) self.assertNotContains( response, '<input class="action-select" name="_selected_action" value="{}" ' 'type="checkbox">'.format(failed_validation_receipt.pk), html=True, ) response = client.get('/admin/afip/receipt/?status=not_validated') self.assertNotContains( response, '<input class="action-select" name="_selected_action" value="{}" ' 'type="checkbox">'.format(validated_receipt.pk), html=True, ) self.assertContains( response, '<input class="action-select" name="_selected_action" value="{}" ' 'type="checkbox">'.format(not_validated_receipt.pk), html=True, ) self.assertContains( response, '<input class="action-select" name="_selected_action" value="{}" ' 'type="checkbox">'.format(failed_validation_receipt.pk), html=True, )
def test_failed_validation(self): # These should never really exist,but oh well: receipt = fixtures.ReceiptFactory() fixtures.ReceiptValidationFactory( receipt=receipt, result=models.ReceiptValidation.RESULT_REJECTED, ) self.assertEqual(receipt.is_validated, False) receipt = fixtures.ReceiptFactory(receipt_number=1) fixtures.ReceiptValidationFactory( receipt=receipt, result=models.ReceiptValidation.RESULT_REJECTED, ) self.assertEqual(receipt.is_validated, False)
def test_validate_empty(self): fixtures.ReceiptFactory() errs = models.Receipt.objects.none().validate() self.assertEqual(errs, []) self.assertEqual(models.ReceiptValidation.objects.count(), 0)
def test_download_name(self): fixtures.ReceiptFactory(pk=9, receipt_number=32) view = views.ReceiptPDFView() view.kwargs = {'pk': 9} self.assertEqual(view.get_download_name(), '0001-00000032.pdf')
def setUp(self): super().setUp() self.receipt = fixtures.ReceiptFactory( document_type__code=80, point_of_sales=models.PointOfSales.objects.first(), ) fixtures.VatFactory(vat_type__code=5, receipt=self.receipt) fixtures.TaxFactory(tax_type__code=3, receipt=self.receipt)
def _bad_receipt(self): receipt = fixtures.ReceiptFactory( point_of_sales=models.PointOfSales.objects.first(), document_type__code=80, ) fixtures.VatFactory(vat_type__code=5, receipt=receipt) fixtures.TaxFactory(tax_type__code=3, receipt=receipt) return receipt
def test_validate(self): receipt = fixtures.ReceiptFactory() ticket = MagicMock() self.called = False def fake_validate(qs, ticket=None): self.assertQuerysetEqual(qs, [receipt.pk], lambda r: r.pk) self.called = True with patch( 'django_afip.models.ReceiptQuerySet.validate', fake_validate, ): receipt.validate(ticket) self.assertTrue(self.called)
def test_validation_good_without_tax(self): """Test validating valid receipts.""" receipt = fixtures.ReceiptFactory( point_of_sales=models.PointOfSales.objects.first(), total_amount=121, ) fixtures.VatFactory(vat_type__code=5, receipt=receipt) errs = models.Receipt.objects.all().validate() self.assertEqual(len(errs), 0) self.assertEqual( receipt.validation.result, models.ReceiptValidation.RESULT_APPROVED, ) self.assertEqual(models.ReceiptValidation.objects.count(), 1)
def test_validate(self): receipt = fixtures.ReceiptFactory() queryset = models.Receipt.objects.filter(pk=receipt.pk) ticket = MagicMock() with patch( 'django_afip.models.ReceiptQuerySet._assign_numbers', spec=True, ) as mocked_assign_numbers, patch( 'django_afip.models.ReceiptQuerySet._validate', spec=True, ) as mocked__validate: queryset.validate(ticket) self.assertEqual(mocked_assign_numbers.call_count, 1) self.assertEqual(mocked__validate.call_count, 1) self.assertEqual(mocked__validate.call_args, call(ticket))
def test_validation_with_observations(self): receipt = fixtures.ReceiptFactory( document_number=20291144404, document_type__code=80, point_of_sales=models.PointOfSales.objects.first(), receipt_type__code=1, ) fixtures.VatFactory(vat_type__code=5, receipt=receipt) fixtures.TaxFactory(tax_type__code=3, receipt=receipt) errs = models.Receipt.objects.all().validate() self.assertEqual(len(errs), 0) self.assertEqual( receipt.validation.result, models.ReceiptValidation.RESULT_APPROVED, ) self.assertEqual(models.ReceiptValidation.objects.count(), 1) self.assertEqual(models.Observation.objects.count(), 1) self.assertEqual(receipt.validation.observations.count(), 1)
def test_proper_filtering(self): receipt = fixtures.ReceiptFactory() fixtures.TaxFactory(receipt=receipt) fixtures.TaxFactory() self.assertEqual(receipt.total_tax, 9)
def test_multiple_taxes(self): receipt = fixtures.ReceiptFactory() fixtures.TaxFactory(receipt=receipt) fixtures.TaxFactory(receipt=receipt) self.assertEqual(receipt.total_tax, 18)
def test_no_tax(self): receipt = fixtures.ReceiptFactory() self.assertEqual(receipt.total_tax, 0)
def test_multiple_vats(self): receipt = fixtures.ReceiptFactory() fixtures.VatFactory(receipt=receipt) fixtures.VatFactory(receipt=receipt) self.assertEqual(receipt.total_vat, 42)
def test_validated(self): receipt = fixtures.ReceiptFactory(receipt_number=1) fixtures.ReceiptValidationFactory(receipt=receipt) self.assertEqual(receipt.is_validated, True)
def test_not_validated(self): receipt = fixtures.ReceiptFactory() self.assertEqual(receipt.is_validated, False)