sql-dynamic-where
Version:
Dynamically handle multiple WHERE SQL statements
87 lines (58 loc) • 3.25 kB
JavaScript
const sdw = require('../SQLDynamicWhere');
dynamicWhere = new sdw();
test('Creating WHERE clause', () => {
dynamicWhere.clear();
dynamicWhere.add(sdw.Logic.And, 'name', sdw.Comparison.Equals, 'Jacob');
expect(dynamicWhere.getClauses()).toBe(' WHERE name = \'Jacob\'');
expect(dynamicWhere.getValues()[0]).toBe('Jacob')
});
test('Creating WHERE clause with leading operator', () => {
dynamicWhere.clear();
dynamicWhere.add(sdw.Logic.And, 'color', sdw.Comparison.Equals, 'red');
expect(dynamicWhere.getClauses(true)).toBe(' AND color = \'red\'');
expect(dynamicWhere.getValues()[0]).toBe('red')
});
test('Creating WHERE clause with multiple values', () => {
dynamicWhere.clear();
dynamicWhere.add(sdw.Logic.And, 'name', sdw.Comparison.Equals, 'Kevan');
dynamicWhere.add(sdw.Logic.And, 'age', sdw.Comparison.GreaterThanOrEqual, 50);
dynamicWhere.add(sdw.Logic.Or, 'height', sdw.Comparison.Equals, '4ft');
expect(dynamicWhere.getClauses()).toBe(' WHERE name = \'Kevan\' AND age >= 50 OR height = \'4ft\'');
expect(dynamicWhere.getValues()[0]).toBe('Kevan')
expect(dynamicWhere.getValues()[1]).toBe(50)
expect(dynamicWhere.getValues()[2]).toBe('4ft')
});
test('Creating WHERE clause with multiple values, some undefined', () => {
dynamicWhere.clear();
dynamicWhere.add(sdw.Logic.And, 'name', sdw.Comparison.Equals, 'Parker');
dynamicWhere.add(sdw.Logic.And, 'age', sdw.Comparison.GreaterThanOrEqual, undefined);
dynamicWhere.add(sdw.Logic.Or, 'height', sdw.Comparison.Equals, '6ft');
expect(dynamicWhere.getClauses()).toBe(' WHERE name = \'Parker\' OR height = \'6ft\'');
expect(dynamicWhere.getValues()[0]).toBe('Parker')
expect(dynamicWhere.getValues()[1]).toBe('6ft')
});
test('Creating WHERE clause with multiple values, some overrides', () => {
dynamicWhere.clear();
dynamicWhere.add(sdw.Logic.And, 'make', sdw.Comparison.Equals, 'Honda');
dynamicWhere.add(sdw.Logic.And, 'model', sdw.Comparison.GreaterThanOrEqual, 'HRV', ['HRV']);
dynamicWhere.add(sdw.Logic.Or, 'year', sdw.Comparison.Equals, 2022);
expect(dynamicWhere.getClauses()).toBe(' WHERE make = \'Honda\' OR year = 2022');
expect(dynamicWhere.getValues()[0]).toBe('Honda')
expect(dynamicWhere.getValues()[1]).toBe(2022)
});
test('Creating WHERE clause using add first', () => {
dynamicWhere.clear();
dynamicWhere.addFirst('make', sdw.Comparison.Equals, 'Honda');
dynamicWhere.add(sdw.Logic.Or, 'year', sdw.Comparison.Equals, 2022);
expect(dynamicWhere.getClauses()).toBe(' WHERE make = \'Honda\' OR year = 2022');
expect(dynamicWhere.getValues()[0]).toBe('Honda')
expect(dynamicWhere.getValues()[1]).toBe(2022)
});
test('Creating WHERE clause using add first, show default leading operator', () => {
dynamicWhere.clear();
dynamicWhere.addFirst('make', sdw.Comparison.Equals, 'Honda');
dynamicWhere.add(sdw.Logic.Or, 'year', sdw.Comparison.Equals, 2022);
expect(dynamicWhere.getClauses(true)).toBe(' AND make = \'Honda\' OR year = 2022');
expect(dynamicWhere.getValues()[0]).toBe('Honda')
expect(dynamicWhere.getValues()[1]).toBe(2022)
});