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); }); });