mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-15 12:20:31 +00:00
262 lines
6.9 KiB
JavaScript
262 lines
6.9 KiB
JavaScript
import {
|
|
request,
|
|
expect,
|
|
create,
|
|
login,
|
|
} from '~/testInit';
|
|
import Budget from '@/models/Budget';
|
|
import BudgetEntry from '@/models/BudgetEntry';
|
|
|
|
let loginRes;
|
|
|
|
describe('routes: `/budget`', () => {
|
|
beforeEach(async () => {
|
|
loginRes = await login();
|
|
});
|
|
afterEach(() => {
|
|
loginRes = null;
|
|
});
|
|
describe('POST: `/budget', () => {
|
|
it('Should `name` be required.', async () => {
|
|
const res = await request()
|
|
.post('/api/budget')
|
|
.set('x-access-token', loginRes.body.token).send();
|
|
|
|
expect(res.status).equals(422);
|
|
expect(res.body.errors).include.something.that.deep.equal({
|
|
msg: 'Invalid value', param: 'name', location: 'body',
|
|
});
|
|
});
|
|
|
|
it('Should `period` be required.', async () => {
|
|
const res = await request()
|
|
.post('/api/budget')
|
|
.set('x-access-token', loginRes.body.token).send();
|
|
|
|
expect(res.status).equals(422);
|
|
expect(res.body.errors).include.something.that.deep.equal({
|
|
msg: 'Invalid value', param: 'period', location: 'body',
|
|
});
|
|
});
|
|
|
|
it('Should `fiscal_year` be required.', async () => {
|
|
const res = await request()
|
|
.post('/api/budget')
|
|
.set('x-access-token', loginRes.body.token)
|
|
.send();
|
|
|
|
expect(res.status).equals(422);
|
|
expect(res.body.errors).include.something.that.deep.equal({
|
|
msg: 'Invalid value', param: 'fiscal_year', location: 'body',
|
|
});
|
|
});
|
|
|
|
it('Should `entries` alteast one item', () => {
|
|
|
|
});
|
|
|
|
it('Should account id be exist in the storage.', async () => {
|
|
const res = await request()
|
|
.post('/api/budget')
|
|
.set('x-access-token', loginRes.body.token)
|
|
.send({
|
|
name: 'Budget Name',
|
|
fiscal_year: '2020',
|
|
period: 'year',
|
|
accounts_type: 'profit_loss',
|
|
accounts: [
|
|
{
|
|
account_id: 100,
|
|
entries: [
|
|
{
|
|
amount: 1000,
|
|
order: 1,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
});
|
|
|
|
expect(res.status).equals(400);
|
|
expect(res.body.errors).include.something.that.deep.equals({
|
|
type: 'ACCOUNT.NOT.FOUND', code: 200, accounts: [100],
|
|
});
|
|
});
|
|
|
|
it('Should response success with budget id after post valid data.', async () => {
|
|
const account = await create('account');
|
|
|
|
const res = await request()
|
|
.post('/api/budget')
|
|
.set('x-access-token', loginRes.body.token)
|
|
.send({
|
|
name: 'Budget Name',
|
|
fiscal_year: '2020',
|
|
period: 'year',
|
|
accounts_type: 'profit_loss',
|
|
accounts: [
|
|
{
|
|
account_id: account.id,
|
|
entries: [
|
|
{
|
|
amount: 1000,
|
|
order: 1,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
});
|
|
|
|
expect(res.status).equals(200);
|
|
});
|
|
|
|
it('Should save budget to the storage.', async () => {
|
|
const account = await create('account');
|
|
|
|
const res = await request()
|
|
.post('/api/budget')
|
|
.set('x-access-token', loginRes.body.token)
|
|
.send({
|
|
name: 'Budget Name',
|
|
fiscal_year: '2020',
|
|
period: 'year',
|
|
accounts_type: 'profit_loss',
|
|
accounts: [
|
|
{
|
|
account_id: account.id,
|
|
entries: [
|
|
{
|
|
amount: 1000,
|
|
order: 1,
|
|
}
|
|
],
|
|
},
|
|
],
|
|
});
|
|
|
|
// const storedBudget = await Budget.query().findById(res.body.id);
|
|
// expect(storedBudget.name).equals('Budget Name');
|
|
|
|
const storedBudgetEntries = await BudgetEntry.query()
|
|
.where('budget_id', storedBudget.id)
|
|
.where('account_id', account.id);
|
|
|
|
expect(storedBudgetEntries.length).equals(1);
|
|
});
|
|
|
|
it('Should save budget entries to the storage.', () => {
|
|
|
|
});
|
|
|
|
it('Should response success with correct data format.', () => {
|
|
|
|
});
|
|
});
|
|
|
|
describe('GET: `/budget/:id`', () => {
|
|
it('Should response not found in case budget id was not found.', async () => {
|
|
const budget = await create('budget');
|
|
|
|
const res = await request()
|
|
.get('/api/budget/1000')
|
|
.set('x-access-token', loginRes.body.token)
|
|
.send();
|
|
|
|
expect(res.status).equals(404);
|
|
});
|
|
|
|
it('Should retrieve columns of budget year date range with year period.', async () => {
|
|
const budget = await create('budget', { period: 'year' });
|
|
const res = await request()
|
|
.get(`/api/budget/${budget.id}`)
|
|
.set('x-access-token', loginRes.body.token)
|
|
.send();
|
|
|
|
expect(res.body.columns.length).equals(1);
|
|
});
|
|
|
|
it('Should retrieve columns of budget year range with month period.', async () => {
|
|
const budget = await create('budget', {
|
|
period: 'month',
|
|
});
|
|
|
|
const res = await request()
|
|
.get(`/api/budget/${budget.id}`)
|
|
.set('x-access-token', loginRes.body.token)
|
|
.send();
|
|
|
|
expect(res.body.columns.length).equals(12);
|
|
});
|
|
|
|
it('Should retrieve columns of budget year range with quarter period.', async () => {
|
|
const budget = await create('budget', {
|
|
period: 'quarter',
|
|
});
|
|
|
|
const res = await request()
|
|
.get(`/api/budget/${budget.id}`)
|
|
.set('x-access-token', loginRes.body.token)
|
|
.send();
|
|
|
|
expect(res.body.columns.length).equals(4);
|
|
});
|
|
|
|
it('Should retrieve columns of budget year range with half year period.', async () => {
|
|
const budget = await create('budget', {
|
|
period: 'half-year',
|
|
});
|
|
|
|
const res = await request()
|
|
.get(`/api/budget/${budget.id}`)
|
|
.set('x-access-token', loginRes.body.token)
|
|
.send();
|
|
|
|
expect(res.body.columns.length).equals(2);
|
|
});
|
|
|
|
it('Should retrieve budget accounts with associated entries.', async () => {
|
|
const budget = await create('budget', { period: 'year' });
|
|
const budgetEntry = await create('budget_entry', {
|
|
budget_id: budget.id,
|
|
});
|
|
|
|
const res = await request()
|
|
.get(`/api/budget/${budget.id}`)
|
|
.set('x-access-token', loginRes.body.token)
|
|
.send();
|
|
|
|
expect(res.body);
|
|
});
|
|
});
|
|
|
|
describe('DELETE: `/budget/:id`', () => {
|
|
it('Should response not found in case budget id was not found.', () => {
|
|
|
|
});
|
|
|
|
it('Should delete budget from the storage', () => {
|
|
|
|
});
|
|
|
|
it('Should delete budget entries from the storage.', () => {
|
|
|
|
});
|
|
|
|
it('Should response success in case budget was exists before the delete.', () => {
|
|
|
|
});
|
|
});
|
|
|
|
describe('GET: `/budget`', () => {
|
|
it('Should retrieve all budgets with pagination metadata.', async () => {
|
|
const res = await request()
|
|
.get('/api/budget')
|
|
.set('x-access-token', loginRes.body.token)
|
|
.send();
|
|
|
|
console.log(res.body);
|
|
|
|
expect(res.status).equals(200);
|
|
})
|
|
})
|
|
}); |