mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-19 14:20:31 +00:00
WIP pass the failed tests.
This commit is contained in:
262
common/routes/budget.js
Normal file
262
common/routes/budget.js
Normal file
@@ -0,0 +1,262 @@
|
||||
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);
|
||||
})
|
||||
})
|
||||
});
|
||||
Reference in New Issue
Block a user