def test_only_items(self): invoice_path = os.path.join(self.file_base_dir, 'only_items.pdf') if os.path.exists(invoice_path): os.remove(invoice_path) invoice = SimpleInvoice(invoice_path) # Before add items item_data, item_subtotal = invoice._item_raw_data_and_subtotal() self.assertEqual(len(item_data), 0) self.assertEqual(item_subtotal, Decimal('0')) item_data, style = invoice._item_data_and_style() self.assertEqual(len(item_data), 0) self.assertEqual(style, []) # Add items invoice.add_item(Item('Item1', 'Item desc', 1, 1.1)) invoice.add_item(Item('Item2', 'Item desc', 2, u'2.2')) invoice.add_item(Item(u'Item3', 'Item desc', 3, '3.3')) # After add items items = invoice.items self.assertEqual(len(items), 3) self.assertEqual(items[0].name, 'Item1') self.assertEqual(items[0].amount, Decimal('1.1')) self.assertEqual(items[1].amount, Decimal('4.4')) self.assertEqual(items[2].name, u'Item3') self.assertEqual(items[2].amount, Decimal('9.9')) item_data, item_subtotal = invoice._item_raw_data_and_subtotal() self.assertEqual(item_subtotal, Decimal('15.4')) self.assertEqual(len(item_data), 3) item_data, style = invoice._item_data_and_style() self.assertEqual(len(item_data), 6) # header, subtotal, total self.assertEqual(item_data[-2][-1], Decimal('15.4')) # subtotal self.assertEqual(item_data[-1][-1], Decimal('15.4')) # total # test style # ## Subtotal self.assertEqual(style[-4], ('SPAN', (0, 4), (3, 4))) self.assertEqual(style[-3], ('ALIGN', (0, 4), (-2, -1), 'RIGHT')) # ## Total self.assertEqual(style[-2], ('SPAN', (0, 5), (3, 5))) self.assertEqual(style[-1], ('ALIGN', (0, 5), (-2, -1), 'RIGHT')) invoice.finish() self.assertTrue(os.path.exists(invoice_path))
def test_only_items_with_tax_rate(self): invoice_path = os.path.join(self.file_base_dir, 'only_items_with_tax.pdf') if os.path.exists(invoice_path): os.remove(invoice_path) invoice = SimpleInvoice(invoice_path) # Before add items item_data, item_subtotal = invoice._item_raw_data_and_subtotal() self.assertEqual(len(item_data), 0) self.assertEqual(item_subtotal, Decimal('0')) item_data, style = invoice._item_data_and_style() self.assertEqual(len(item_data), 0) self.assertEqual(style, []) # Add items invoice.add_item(Item('Item1', 'Item desc', 1, 1.1)) invoice.add_item(Item('Item2', 'Item desc', 2, u'2.2')) invoice.add_item(Item(u'Item3', 'Item desc', 3, '3.3')) # set tax rate invoice.set_item_tax_rate(19) # After add items items = invoice.items self.assertEqual(len(items), 3) self.assertEqual(items[0].name, 'Item1') self.assertEqual(items[0].amount, Decimal('1.1')) self.assertEqual(items[1].amount, Decimal('4.4')) self.assertEqual(items[2].name, u'Item3') self.assertEqual(items[2].amount, Decimal('9.9')) item_data, item_subtotal = invoice._item_raw_data_and_subtotal() self.assertEqual(item_subtotal, Decimal('15.4')) self.assertEqual(len(item_data), 3) item_data, style = invoice._item_data_and_style() self.assertEqual(len(item_data), 7) # header, subtotal, tax, total self.assertEqual(item_data[-3][-1], Decimal('15.4')) # subtotal self.assertEqual(item_data[-2][-1], Decimal('2.93')) # tax self.assertEqual(item_data[-1][-1], Decimal('18.33')) # total invoice.finish() self.assertTrue(os.path.exists(invoice_path))
def test_only_items_with_tax_rate(self): invoice_path = os.path.join(self.file_base_dir, 'only_items_with_tax.pdf') if os.path.exists(invoice_path): os.remove(invoice_path) invoice = SimpleInvoice(invoice_path) # Before add items item_data, item_subtotal = invoice._item_raw_data_and_subtotal() self.assertEqual(len(item_data), 0) self.assertEqual(item_subtotal, Decimal('0')) item_data, style = invoice._item_data_and_style() self.assertEqual(len(item_data), 0) self.assertEqual(style, []) # Add items invoice.add_item(Item('Item1', 'Item desc', 1, 1.1)) invoice.add_item(Item('Item2', 'Item desc', 2, u'2.2')) invoice.add_item(Item(u'Item3', 'Item desc', 3, '3.3')) # set tax rate invoice.set_item_tax_rate(19) # After add items items = invoice.items self.assertEqual(len(items), 3) self.assertEqual(items[0].name, 'Item1') self.assertEqual(items[0].amount, Decimal('1.1')) self.assertEqual(items[1].amount, Decimal('4.4')) self.assertEqual(items[2].name, u'Item3') self.assertEqual(items[2].amount, Decimal('9.9')) item_data, item_subtotal = invoice._item_raw_data_and_subtotal() self.assertEqual(item_subtotal, Decimal('15.4')) self.assertEqual(len(item_data), 3) item_data, style = invoice._item_data_and_style() self.assertEqual(len(item_data), 7) # header, subtotal, tax, total self.assertEqual(item_data[-3][-1], Decimal('15.4')) # subtotal self.assertEqual(item_data[-2][-1], Decimal('2.926')) # tax self.assertEqual(item_data[-1][-1], Decimal('18.326')) # total invoice.finish() self.assertTrue(os.path.exists(invoice_path))