mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-15 12:20:31 +00:00
153 lines
4.9 KiB
JavaScript
153 lines
4.9 KiB
JavaScript
import { request, expect, create, login } from '~/testInit';
|
|
import ManualJournal from '../../src/models/ManualJournal';
|
|
import AccountTransaction from '@/models/AccountTransaction';
|
|
let loginRes;
|
|
|
|
describe('routes: `/accountOpeningBalance`', () => {
|
|
beforeEach(async () => {
|
|
loginRes = await login();
|
|
});
|
|
afterEach(() => {
|
|
loginRes = null;
|
|
});
|
|
describe('POST `/accountOpeningBalance`', () => {
|
|
it('Should `accounts` be array type.', async () => {
|
|
const res = await request()
|
|
.post('/api/accounts_opening_balances')
|
|
.send({
|
|
accounts: 1000,
|
|
});
|
|
|
|
expect(res.status).equals(422);
|
|
expect(res.body.code).equals('validation_error');
|
|
});
|
|
|
|
it('Should `accounts.*.id` be integer', async () => {
|
|
const res = await request()
|
|
.post('/api/accounts_opening_balances')
|
|
.send({
|
|
accounts: [
|
|
{ id: 'id' },
|
|
]
|
|
});
|
|
expect(res.status).equals(422);
|
|
expect(res.body.code).equals('validation_error');
|
|
expect(res.body.errors).include.something.that.deep.equals({
|
|
value: 'id',
|
|
msg: 'Invalid value',
|
|
param: 'accounts[0].id',
|
|
location: 'body',
|
|
});
|
|
});
|
|
|
|
it('Should `accounts.*.debit` be numeric.', async () => {
|
|
const res = await request()
|
|
.post('/api/accounts_opening_balances')
|
|
.send({
|
|
balance_adjustment_account: 10,
|
|
accounts: [{ id: 100, debit: 'id' }],
|
|
});
|
|
expect(res.status).equals(422);
|
|
});
|
|
|
|
it('Should `accounts.*.id` be exist in the storage.', async () => {
|
|
const res = await request()
|
|
.post('/api/accounts_opening_balances')
|
|
.send({
|
|
balance_adjustment_account: 10,
|
|
accounts: [
|
|
{ id: 100, credit: 100 },
|
|
],
|
|
});
|
|
expect(res.status).equals(422);
|
|
expect(res.body.errors).include.something.that.deep.equals({
|
|
type: 'NOT_FOUND_ACCOUNT', code: 100, ids: [100],
|
|
});
|
|
});
|
|
|
|
it('Should response bad request in case balance adjustment account was not exist.', async () => {
|
|
const debitAccount = await create('account');
|
|
const creditAccount = await create('account');
|
|
|
|
const res = await request()
|
|
.post('/api/accounts_opening_balances')
|
|
.send({
|
|
balance_adjustment_account: 10,
|
|
accounts: [
|
|
{ id: debitAccount.id, credit: 100, debit: 2 },
|
|
{ id: creditAccount.id, credit: 0, debit: 100 },
|
|
]
|
|
});
|
|
|
|
expect(res.body.errors).include.something.that.deep.equals({
|
|
type: 'BALANCE.ADJUSTMENT.ACCOUNT.NOT.EXIST', code: 300,
|
|
});
|
|
});
|
|
|
|
it('Should store the manual transaction to the storage.', async () => {
|
|
const debitAccount = await create('account');
|
|
const creditAccount = await create('account');
|
|
const balance = await create('account');
|
|
|
|
const res = await request()
|
|
.post('/api/accounts_opening_balances')
|
|
.set('x-access-token', loginRes.body.token)
|
|
.send({
|
|
balance_adjustment_account: balance.id,
|
|
accounts: [
|
|
{ id: debitAccount.id, credit: 100, debit: 2 },
|
|
{ id: creditAccount.id, credit: 0, debit: 100 },
|
|
]
|
|
});
|
|
|
|
const manualJournal = await ManualJournal.query().findById(res.body.id);
|
|
expect(manualJournal.amount).equals(100);
|
|
expect(manualJournal.transaction_type).equals('OpeningBalance');
|
|
});
|
|
|
|
it('Should store the jouranl entries of account balance transaction.', async () => {
|
|
const debitAccount = await create('account');
|
|
const creditAccount = await create('account');
|
|
const balance = await create('account');
|
|
|
|
const res = await request()
|
|
.post('/api/accounts_opening_balances')
|
|
.set('x-access-token', loginRes.body.token)
|
|
.send({
|
|
balance_adjustment_account: balance.id,
|
|
accounts: [
|
|
{ id: debitAccount.id, credit: 100, debit: 2 },
|
|
{ id: creditAccount.id, credit: 0, debit: 100 },
|
|
]
|
|
});
|
|
|
|
const transactions = await AccountTransaction.query()
|
|
.where('reference_type', 'OpeningBalance')
|
|
.where('reference_id', res.body.id);
|
|
|
|
expect(transactions.length).equals(2);
|
|
});
|
|
|
|
it('Should adjustment with balance adjustment account with bigger than zero.', async () => {
|
|
const debitAccount = await create('account');
|
|
const balance = await create('account');
|
|
|
|
const res = await request()
|
|
.post('/api/accounts_opening_balances')
|
|
.set('x-access-token', loginRes.body.token)
|
|
.send({
|
|
balance_adjustment_account: balance.id,
|
|
accounts: [
|
|
{ id: debitAccount.id, credit: 0, debit: 100 },
|
|
]
|
|
});
|
|
|
|
const transactions = await AccountTransaction.query()
|
|
.where('reference_type', 'OpeningBalance')
|
|
.where('reference_id', res.body.id);
|
|
|
|
expect(transactions.length).equals(2);
|
|
});
|
|
});
|
|
});
|