2
0
mirror of https://github.com/frappe/books.git synced 2024-09-20 11:29:00 +00:00
books/tests/testInvoice.js
2022-01-21 02:27:29 +05:30

56 lines
2.0 KiB
JavaScript

import assert from 'assert';
import frappe from 'frappe';
import helpers from 'frappe/tests/helpers';
import models from '../models';
async function makeFixtures() {
if (!(await frappe.db.exists('Party', 'Test Customer'))) {
await frappe.insert({doctype:'Party', name:'Test Customer'})
await frappe.insert({doctype:'Item', name:'Test Item 1', description:'Test Item Description 1', unit:'No', rate: 100})
await frappe.insert({doctype:'Item', name:'Test Item 2', description:'Test Item Description 2', unit:'No', rate: 200})
await frappe.insert({doctype:'Account', name:'GST', parentAccount: 'Liabilities'});
await frappe.insert({doctype:'Tax', name:'GST',
details: [{account: 'GST', rate:10}]
})
}
}
describe('Invoice', () => {
before(async function() {
await helpers.initSqlite({models: models});
await makeFixtures();
});
it('show create an invoice', async () => {
let invoice = await frappe.insert({
doctype:'Invoice',
customer: 'Test Customer',
items: [
{item: 'Test Item 1', quantity: 5},
{item: 'Test Item 2', quantity: 7},
]
});
assert.equal(invoice.items[0].amount, 500);
assert.equal(invoice.items[1].amount, 1400);
assert.equal(invoice.netTotal, 1900);
});
it('show create an invoice with tax', async () => {
let invoice = await frappe.insert({
doctype:'Invoice',
customer: 'Test Customer',
items: [
{item: 'Test Item 1', quantity: 5, tax: 'GST'},
{item: 'Test Item 2', quantity: 7, tax: 'GST'},
]
});
assert.equal(invoice.items[0].amount, 500);
assert.equal(invoice.items[1].amount, 1400);
assert.equal(invoice.netTotal, 1900);
assert.equal(invoice.taxes[0].amount, 190);
assert.equal(invoice.grandTotal, 2090);
});
});