ava-fixture
TypeScript icon, indicating that this package has built-in type declarations

0.11.0 • Public • Published

ava-fixture

stable NPM version NPM downloads Build status Coverage Status

This library helps you to write fixture tests: test-per-folder or test-per-file.

Usage

For example, you are testing code that process files (e.g. a compiler, config-reader, etc).

You put each test case inside its own folder:

+ fixtures
  + cases
    + empty
      - somefiles
    + basic-case
      - someOtherFiles
    + single-line
      - ...
    + ...

You can run each test case like this:

import ava from 'ava';
import fixture from 'ava-fixture';
 
// Point to the base folder which contain the fixtures.
// Use relative path starts from project root or absolute path
const ftest = fixture(ava, 'fixtures/cases', 'fixtures/baselines', 'fixtures/results');
 
ftest.each((t, d) => {
  // d.caseName: 'empty', 'basic-case', 'single-line', etc
  // d.casePath: absolute path points to each test case folder
  // d.resultPath: absolute path points to each test result folder
 
  // Your test target reads from `d.casePath` and writes to `d.resultPath`
  target.process(d.casePath, d.resultPath)
 
  // d.match() will compare the result folder against the baseline folder
  return d.match()
})

You can also use this library to run tests that only read files:

import ava from 'ava';
import fixture from 'ava-fixture';
 
// Point to the base folder which contain the fixtures.
// Relative path starts from project root.
const ftest = fixture(ava, 'fixture/cases');
 
ftest('test title', 'case-1', (t, d) => {
  // t is ava test assertion.
  t.is(d.casePath, 'absolut path the the case folder')
 
  const result = target.read(d.casePath)
 
  t.deepEqual(result, 'expected result')
});
 
// test title can be omitted
ftest('case-1', (t, d) => {
  // ...
})
 
// go through each test
ftest.each((t, d) => {
  // ...
})
 
// or run certain test based on filter
ftest.each(/some filter/, (t, d) => {
  // ...
})

Other API

import test from 'ava';
import fixture from 'ava-fixture';
 
const ftest = fixture(test, 'fixture/cases');
 
ftest.only(...)
ftest.skip(...)
ftest.failing(...)
ftest.only.each.failing(...)

For before(), beforeEach(), after(), afterEach(), todo(), use ava directly.

Contribute

# right after clone 
npm install
 
# begin making changes 
git checkout -b <branch>
npm run watch
 
# edit `webpack.config.es5.js` and `rollup.config.es2015.js` to exclude dependencies for the bundle if needed 
 
# after making change(s) 
git commit -m "<commit message>"
git push
 
# create PR 

Npm Commands

There are a few useful commands you can use during development.

# Run tests (and lint) automatically whenever you save a file. 
npm run watch
 
# Run tests with coverage stats (but won't fail you if coverage does not meet criteria) 
npm run test
 
# Manually verify the project. 
# This will be ran during 'npm preversion' so you normally don't need to run this yourself. 
npm run verify
 
# Build the project. 
# You normally don't need to do this. 
npm run build
 
# Run tslint 
# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you. 
npm run lint

Generated by generator-unional@0.9.0

Readme

Keywords

Package Sidebar

Install

npm i ava-fixture

Weekly Downloads

8

Version

0.11.0

License

MIT

Last publish

Collaborators

  • unional