import { andWhere, andWhereOpen, ContainWhereQuery, formatWhere, orWhere, orWhereOpen, where, whereClose, } from "../src/aurora-data-api-query-builder/where-query"; import { QueryBuilderBaseParamEnum } from "../src/enums"; describe("Test Where Query Builder", () => { test("where raw", async (done) => { const qbconf: ContainWhereQuery = { wheres: [], }; andWhere(qbconf, "a = 1", []); orWhereOpen(qbconf); andWhere(qbconf, "a = 2", []); andWhere(qbconf, "b = 2", []); whereClose(qbconf); andWhereOpen(qbconf); where(qbconf, "c = 3", []); orWhere(qbconf, "c = 4", []); whereClose(qbconf); const result = formatWhere(qbconf); expect(result).toEqual({ params: [], str: "a = 1 OR ( a = 2 AND b = 2 ) AND ( c = 3 OR c = 4 )", }); done(); }); test("where param", async (done) => { const qbconf: ContainWhereQuery = { wheres: [], }; andWhere(qbconf, "a = :?", [{ type: QueryBuilderBaseParamEnum.Long, val: 1, }]); orWhere(qbconf, "( a = :? AND b = :? )", [{ type: QueryBuilderBaseParamEnum.Long, val: 2, }, { type: QueryBuilderBaseParamEnum.Boolean, val: false, }]); andWhereOpen(qbconf); where(qbconf, "c > NOW()", []); whereClose(qbconf); const result = formatWhere(qbconf); expect(result).toEqual({ params: [{ type: QueryBuilderBaseParamEnum.Long, val: 1, }, { type: QueryBuilderBaseParamEnum.Long, val: 2, }, { type: QueryBuilderBaseParamEnum.Boolean, val: false, }], str: "a = :? OR ( a = :? AND b = :? ) AND ( c > NOW() )", }); done(); }); });