npm.io
4.0.0 • Published 1 month ago

@natlibfi/fixugen

Licence
MIT
Version
4.0.0
Deps
1
Size
37 kB
Vulns
0
Weekly
0

Generate Node.js unit tests from fixtures and callbacks

NPM Version Node Version

Provides test callbacks with Fixura's functions to fetch test fixtures.

Usage

The test fixture directory is parsed as follows: Each subdirectory becomes a unit test group (node:test's describe) and inner subdirectories each represent individual tests (node:test's it). For custom test variables see metadata example.

import generateTests from '@natlibfi/fixugen';
import {dirname} from 'node:path';
import {fileURLToPath} from 'node:url';

const __dirname = dirname(fileURLToPath(import.meta.url));

generateTests({
  callback,
  path: [__dirname, '..', 'test-fixtures']
});

function callback({getFixture, custom}) {
  const expectedValue = getFixture('value.txt');
  const value = generateSomething(custom);
  expect(value).to.equal(expectedValue);
}

Options

  • callback: A callback function passed to node:test's it. Receives Fixura's function as arguments.
    • dirName: callback gets dirName variable that is one folder up
  • path: An array of path components which make up a path to the test fixtures directory
  • recurse: Whether to recurse into the subdirectories of path. If false the last directory of the path is used as the name of the node:test's describe-call and it's direct subdirectories are used as unit test directories. Defaults to true
  • fixura: Options that are passed to Fixura.
  • useMetadataFile: If set to true, reads and parses a file named metadata.json in each unit test directory. The content must be a JSON object and it's properties as passed to the unit test callback function.
    • If a property description is present, it is used as the test's description (Defaults to false and folder name is used).
    • If a property skip is present, it decides if test is skipped (Defaults to false).
    • If a property only is present, it decides if this/these tests are only run (Defaults to false).
  • hooks: An object which maps the following properties to node:test's corresponding callbacks: after, before, afterEach, beforeEach
Example metadata.json
{
  "description": "Example description of test",
  "skip": false,
  "only": false,
  "custom": "Custom variable delivered for test"
}

Copyright (c) 2020, 2023-2026 University Of Helsinki (The National Library Of Finland)

This project's source code is licensed under the terms of MIT or any later version.