import { it, expect } from 'vitest' import { compileSchema } from '..' it("compileSchema compiles a decl with a single get", () => { const schema = compileSchema({ name: 'Test', attrs: ['a'], funcs: ['get(a)'], }) expect(schema.attrs.length).toEqual(1); expect(schema.attrs[0].attr).toEqual('a'); // todo: check for func }); it("compileSchema compiles a decl with an autogenerated id", () => { const schema = compileSchema({ name: 'Test', attrs: ['a auto'], funcs: ['get(a)'], }) expect(schema.attrs[0].attr).toEqual('a'); expect(schema.attrs[0].isAuto).toEqual(true); expect(schema.preInsert).toEqual([{t:'init_auto_attr',attr: 'a'}]); }); it("compileSchema compiles a decl with an autogenerated id (updated syntax)", () => { const schema = compileSchema({ name: 'Test', attrs: ['a(auto)'], funcs: ['get(a)'], }) expect(schema.attrs[0].attr).toEqual('a'); expect(schema.attrs[0].isAuto).toEqual(true); expect(schema.preInsert).toEqual([{t:'init_auto_attr',attr: 'a'}]); }); it("findFuncWithParams works", () => { const schema = compileSchema({ name: 'Test', funcs: ['get(a)', 'get(b c)'], }) expect(schema.findFuncWithParams('getWithIndexKey', ['a'])?.publicName).toEqual('get_with_a'); }); it("getPublicFuncNameForDeleteUsingIndex works", () => { const schema = compileSchema({ name: 'Test', funcs: ['delete(a)', 'delete(b c)'], }); expect(schema.getPublicFuncNameForDeleteUsingIndex("a")).toEqual('delete(a)'); expect(schema.getPublicFuncNameForDeleteUsingIndex("b,c")).toEqual('delete(b c)'); }); it("adding a get() function automatically adds a has() function", () => { const schema = compileSchema({ name: 'Test', funcs: ['get(a)'], }); schema.assertSupportsFunc('has_a'); });