Files
bigcapital/common/lib/Parser.test.js
2020-05-17 07:08:12 +02:00

50 lines
1.2 KiB
JavaScript

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