"""Which quotes the Site approves at checkout and which wait for a person.""" import os import unittest from unittest import mock from app.quote_review import review_reason def item(mode='avulsa', metres='2', grade=90, quality='ok', version=2): return {'mode': mode, 'metres': metres, 'grade': grade, 'quality_status': quality, 'quality_acknowledged': quality == 'warning', 'production': {'version': version}} class ReviewReasonTest(unittest.TestCase): def reason(self, *items, **env): with mock.patch.dict(os.environ, env): return review_reason({'items': list(items)}) def test_a_priced_cart_is_approved(self): self.assertIsNone(self.reason(item())) # Accepted resolution warnings and unanalysed art at the full rate too. self.assertIsNone(self.reason(item(quality='warning'), item(grade=0, quality='unverified'))) def test_large_orders_wait_for_review(self): self.assertIsNone(self.reason(item(metres='30'), item(metres='20'))) self.assertEqual(self.reason(item(metres='30'), item(metres='20.1')), 'Pedido acima de 50 m') self.assertEqual(self.reason(item(metres='6'), QUOTE_AUTO_MAX_METRES='5'), 'Pedido acima de 5 m') def test_a_discount_the_site_could_not_have_given_waits(self): self.assertEqual(self.reason(item(grade=90, quality='unverified')), 'Nota informada sem análise da arte') def test_old_layouts_and_switching_it_off(self): self.assertEqual(self.reason(item(version=1)), 'Montagem antiga') self.assertEqual(self.reason(item(), QUOTE_AUTO_APPROVE='false'), 'Aprovação automática desligada') if __name__ == '__main__': unittest.main()