const R = require("ramda"); const fs = require("fs"); const { getDomains } = require("../utils/get-domain"); const { validateDomainData } = require("../utils/validations"); const { DOMAINS_PATH } = require("../utils/constants"); describe("Domains", () => { it("should all be json", async () => { const files = await fs.promises.readdir(DOMAINS_PATH, {}); expect(files.filter((f) => !/\.json$/g.test(f)).length).toBe(0); }); it("should be valid", (done) => { getDomains() .then(R.reject(R.propEq("name", "_psl"))) .then( R.map((data) => { const { errors } = validateDomainData(data); if (errors.length) { const message = errors .map( ([key, { reason }]) => `[${data.name}.${key}]: ${reason}`, ) .join("\n"); return `\nValidation errors in ${data.name}.json: \n${message}`; } return ""; }), ) .then(R.filter(R.complement(R.isEmpty))) .then((messages) => messages.length ? done(messages.join("\n")) : done(), ) .catch(done); }); });