UNPKG

europa-test

Version:

Test framework for Europa Core implementations

88 lines 3.84 kB
/* * Copyright (C) 2022 neocotic * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ (function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "./bundled-fixtures"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.test = void 0; const bundled_fixtures_1 = require("./bundled-fixtures"); /** * Creates a full test suite for a `europa-core` implementation package using the `options` provided. * * @param options - The options to be used. */ function test(options) { const { createEuropa, extraFixtures, loadFixtureFile, packageName } = options; const fixtures = getFixtures(extraFixtures); describe(`europa-test: ${packageName}`, () => { fixtures.forEach((fixture) => { describe(fixture.description, () => { let input; let europa; let expected; beforeAll(async () => { europa = createEuropa(fixture.options); if (isFileFixture(fixture)) { const bundled = isBundledFixture(fixture); input = await loadFixtureFile(`${fixture.baseFilePath}.html`, bundled); expected = await loadFixtureFile(`${fixture.baseFilePath}.md`, bundled); } else { input = fixture.input; expected = fixture.expected; } }); it(`should correctly convert ${getInputType(fixture)} into Markdown`, () => { expect(input).toBeDefined(); expect(expected).toBeDefined(); expect(europa.convert(input)).toBe(expected); }); }); }); }); } exports.test = test; function getFixtures(extras) { const fixtures = [...bundled_fixtures_1.bundledFixtures]; if (extras) { fixtures.push(...extras); } return fixtures; } function getInputType(fixture) { return isFileFixture(fixture) || typeof fixture.input === 'string' ? 'HTML' : 'DOM'; } function isBundledFixture(fixture) { return 'bundled' in fixture && fixture.bundled; } function isFileFixture(fixture) { return 'baseFilePath' in fixture; } }); //# sourceMappingURL=test.js.map