import { ALL_VENDORS, getVendorConfig } from '../vendors'; describe('vendor configs', () => { it('exposes all five vendors', () => { expect(ALL_VENDORS).toEqual(['sls', 'cls', 'tls', 'lts', 'bls']); }); it.each(ALL_VENDORS)('vendor %s has the required fields populated', (vendor) => { const cfg = getVendorConfig(vendor); expect(cfg.id).toBe(vendor); expect(cfg.label).toBeTruthy(); // Shared search keywords must always be present. expect(cfg.searchKeywords).toEqual(expect.arrayContaining(['AND', 'OR', 'NOT'])); // Every vendor must support `:` as a field-assign operator. expect(cfg.fieldAssignOperators).toContain(':'); // SQL keyword & function lists should not be empty. expect(cfg.sqlKeywords.length).toBeGreaterThan(10); expect(cfg.sqlFunctions.length).toBeGreaterThan(0); // Standard SQL keywords every dialect supports. expect(cfg.sqlKeywords).toEqual(expect.arrayContaining(['SELECT', 'FROM', 'WHERE', 'GROUP', 'BY'])); // COUNT should be present everywhere. expect(cfg.sqlFunctions.map((f) => f.name)).toContain('COUNT'); }); it('LTS and BLS additionally accept `=` as a field-assign operator', () => { expect(getVendorConfig('lts').fieldAssignOperators).toContain('='); expect(getVendorConfig('bls').fieldAssignOperators).toContain('='); }); it('SLS exposes its dialect-specific builtin fields', () => { const sls = getVendorConfig('sls'); const names = (sls.searchBuiltinFields ?? []).map((f) => f.name); expect(names).toEqual(expect.arrayContaining(['__topic__', '__source__'])); }); it('LTS exposes the _exists_ builtin field for existence search', () => { const lts = getVendorConfig('lts'); const names = (lts.searchBuiltinFields ?? []).map((f) => f.name); expect(names).toContain('_exists_'); }); });