* style: enforce sorting of imports * style: alphabetize imports * style: merge duplicated imports
66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
import * as monthUtils from '../../shared/months';
|
|
import * as db from '../db';
|
|
import * as sheet from '../sheet';
|
|
import { createAllBudgets } from './base';
|
|
|
|
beforeEach(() => {
|
|
return global.emptyDatabase()();
|
|
});
|
|
|
|
describe('Base budget', () => {
|
|
it('Recomputes budget cells when account fields change', async () => {
|
|
await sheet.loadSpreadsheet(db);
|
|
|
|
await db.insertCategoryGroup({ id: 'group1', name: 'group1' });
|
|
await db.insertCategoryGroup({
|
|
id: 'group2',
|
|
name: 'income',
|
|
is_income: 1
|
|
});
|
|
let catId = await db.insertCategory({
|
|
name: 'foo',
|
|
cat_group: 'group1'
|
|
});
|
|
|
|
await createAllBudgets();
|
|
|
|
// Insert a transaction referencing an account that doesn't exist
|
|
// yet
|
|
await db.insertTransaction({
|
|
date: '2016-12-15',
|
|
amount: -5000,
|
|
account: '29eef937-9933-49ef-80d9-71627074cf31',
|
|
category: catId
|
|
});
|
|
|
|
// Make sure that the spreadsheet finishes processing to make sure
|
|
// the next change doesn't get batched in with it
|
|
await sheet.waitOnSpreadsheet();
|
|
|
|
// The category should have nothing spent on it yet
|
|
expect(
|
|
sheet.getCellValue(
|
|
monthUtils.sheetForMonth('2016-12'),
|
|
`sum-amount-${catId}`
|
|
)
|
|
).toBe(0);
|
|
|
|
// Create the referenced account
|
|
await db.insertAccount({
|
|
id: '29eef937-9933-49ef-80d9-71627074cf31',
|
|
name: 'foo'
|
|
});
|
|
|
|
// Make sure the spreadsheet finishes processing
|
|
await sheet.waitOnSpreadsheet();
|
|
|
|
// The category should see the transaction
|
|
expect(
|
|
sheet.getCellValue(
|
|
monthUtils.sheetForMonth('2016-12'),
|
|
`sum-amount-${catId}`
|
|
)
|
|
).toBe(-5000);
|
|
});
|
|
});
|