import { doesntExistFilter, doesntMatchFilter, excludeFilter, existsFilter, greaterThanFilter, greaterThanOrEqualFilter, includeFilter, lessThanFilter, lessThanOrEqualFilter, matchFilter, regexFilter, } from "../src/filters"; import { Movie } from "../src/models"; describe("filters", () => { describe("matchFilter", () => { it("generates the right filter rule", () => { const rule = matchFilter("name", "The Return of the King"); expect(rule).toEqual("name=The Return of the King"); }); }); describe("doesntMatchFilter", () => { it("generates the right filter rule", () => { const rule = doesntMatchFilter("name", "The Return of the King"); expect(rule).toEqual("name!=The Return of the King"); }); }); describe("include", () => { it("generates the right filter rule", () => { const rule = includeFilter("name", [ "The Return of the King", "The Two Towers", ]); expect(rule).toEqual("name=The Return of the King,The Two Towers"); }); }); describe("exclude", () => { it("generates the right filter rule", () => { const rule = excludeFilter("name", [ "The Return of the King", "The Two Towers", ]); expect(rule).toEqual("name!=The Return of the King,The Two Towers"); }); }); describe("exists", () => { it("generates the right filter rule", () => { const rule = existsFilter("name"); expect(rule).toEqual("name"); }); }); describe("doesn't exist", () => { it("generates the right filter rule", () => { const rule = doesntExistFilter("name"); expect(rule).toEqual("!name"); }); }); describe("regex", () => { it("generates the right filter rule", () => { const rule = regexFilter("name", /King/i); expect(rule).toEqual("name=/King/i"); }); }); describe("less than", () => { it("generates the right filter rule", () => { const rule = lessThanFilter("budgetInMillions", 100); expect(rule).toEqual("budgetInMillions<100"); }); }); describe("less than or equal", () => { it("generates the right filter rule", () => { const rule = lessThanOrEqualFilter("budgetInMillions", 100); expect(rule).toEqual("budgetInMillions<=100"); }); }); describe("greater than", () => { it("generates the right filter rule", () => { const rule = greaterThanFilter("budgetInMillions", 100); expect(rule).toEqual("budgetInMillions>100"); }); }); describe("greater than or equal", () => { it("generates the right filter rule", () => { const rule = greaterThanOrEqualFilter("budgetInMillions", 100); expect(rule).toEqual("budgetInMillions>=100"); }); }); });