Пример #1
0
class TestReceipt(unittest.TestCase):

    def setUp(self):
        self.input1_a = Receipt(1, 'book', '12.49')
        self.input1_b = Receipt(1, 'music CD', '14.99')
        self.input1_c = Receipt(1, 'chocolate bar', '0.85')

        self.input2_a = Receipt(1, 'imported box of chocolates', '10.00')
        self.input2_b = Receipt(1, 'imported bottle of perfume', '47.50')

        self.input3_a = Receipt(1, 'imported bottle of perfume', '27.99')
        self.input3_b = Receipt(1, 'bottle of perfume', '18.99')
        self.input3_c = Receipt(1, 'packet of headache pills', '9.75')
        self.input3_d = Receipt(1, 'box of imported chocolates', '11.25')

    def tearDown(self):
        db = shelve.open('shelve.db')
        db.clear()
        db.close()

    def test_tax_exempt_products(self):
        self.assertTrue(self.input1_a.product_tax_exempt())
        self.assertFalse(self.input1_b.product_tax_exempt())
        self.assertTrue(self.input1_c.product_tax_exempt())
        self.assertTrue(self.input2_a.product_tax_exempt())

    def test_imported_products(self):
        self.assertTrue(self.input2_a.product_imported())
        self.assertFalse(self.input3_b.product_imported())

    def test_product_price(self):
        self.assertEqual(self.input1_a.product_price(), 12.49)
        self.assertEqual(self.input1_b.product_price(), 16.49)
        self.assertEqual(self.input2_a.product_price(), 10.50)
        self.assertEqual(self.input2_b.product_price(), 54.65)
        self.assertEqual(self.input3_a.product_price(), 32.19)
        self.assertEqual(self.input3_b.product_price(), 20.89)
        self.assertEqual(self.input3_c.product_price(), 9.75)
        self.assertEqual(self.input3_d.product_price(), 11.8)

    def test_save_receipt_item(self):
        data = self.input1_a.receipt_save_item('input1')
        self.assertEqual(len(data['items']), 1)
        self.assertEqual(data['items'][0]['name'], 'book')

    def test_save_multiple_items(self):
        data = self.input1_a.receipt_save_item('input1')
        self.assertEqual(len(data['items']), 1)
        data = self.input1_b.receipt_save_item('input1')
        self.assertEqual(len(data['items']), 2)
        data = self.input1_c.receipt_save_item('input1')
        self.assertEqual(len(data['items']), 3)
        self.assertEqual(data['total'], 29.83)
        self.assertEqual(data['items'][0]['name'], 'book')

    def test_retrieve_receipt(self):
        self.input2_a.receipt_save_item('input2')
        self.input2_b.receipt_save_item('input2')
        receipt = self.input2_a.receipt_checkout('input2')
        self.assertEqual(receipt['total'], 65.15)

    def test_retrieve_non_existent_receipt(self):
        self.assertIsNone(self.input3_d.receipt_checkout('input2'))