mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-17 13:20:31 +00:00
WIP pass the failed tests.
This commit is contained in:
50
common/lib/Parser.test.js
Normal file
50
common/lib/Parser.test.js
Normal file
@@ -0,0 +1,50 @@
|
||||
import { expect } from '~/testInit';
|
||||
import { Lexer } from '@/lib/LogicEvaluation/Lexer';
|
||||
import Parser from '@/lib/LogicEvaluation/Parser';
|
||||
import QueryParser from '@/lib/LogicEvaluation/QueryParser';
|
||||
import Expense from '@/models/Expense';
|
||||
import knex from '@/database/knex';
|
||||
|
||||
describe('LoginEvaluation: Parser', () => {
|
||||
|
||||
it('Should parse the logic', async () => {
|
||||
const lexer = new Lexer('(1 OR 2) AND (1 AND 3)');
|
||||
const tokens = lexer.getTokens();
|
||||
|
||||
const parser = new Parser(tokens);
|
||||
const parsedTree = parser.parse();
|
||||
|
||||
const queries = {
|
||||
1: (query) => {
|
||||
query.where('expense_account_id', 1);
|
||||
},
|
||||
2: (query) => {
|
||||
query.where('payment_account_id', 2);
|
||||
},
|
||||
3: (query) => {
|
||||
query.where('amount', '<', 100);
|
||||
},
|
||||
};
|
||||
|
||||
const queryParser = new QueryParser(parsedTree, queries);
|
||||
const parsedQuery = queryParser.parse();
|
||||
|
||||
const parsedQueryWrapper = (builder) => {
|
||||
parsedQuery(builder);
|
||||
console.log(builder.toString());
|
||||
};
|
||||
const query = await knex.select('*').from('expenses')
|
||||
.modify(parsedQueryWrapper);
|
||||
|
||||
// console.log(query);
|
||||
|
||||
|
||||
// });
|
||||
|
||||
// console.log(a);
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user