# Snapshot report for `src/rollup-plugin-ava-test-example.unit.js`

The actual snapshot is saved in `rollup-plugin-ava-test-example.unit.js.snap`.

Generated by [AVA](https://avajs.dev).

## Rollup plugin transforms example code of files with local unit test

> Snapshot 1

    `import { avaTestToExample } from './lib/ava-test-to-example'␊
    import { parseFile as parseAvaFile } from 'ava-to-json'␊
    import { pathExists } from 'fs-extra'␊
    ␊
    /**␊
     * Embeds corresponding unit tests into the js-doc @example-test tag of a javascript file␊
     * @param {Object} options␊
     * @param {String} [options.suffix=.unit.js]␊
     * @param {String[]} [options.extensions=['.js']]␊
     * @param {Object} [options.ava2jsonOptions]␊
     * @param {Object} [options.jsdocTag=@example-test]␊
     * @return {Function}␊
     * @see https://github.com/devtin/ava-to-json␊
     * @example <caption>Rollup plugin transforms example code of files with local unit test</caption>␊
     * ␊
     * ```js␊
     * // instantiate plugin␊
     * const plugin = at2e()␊
     * ␊
     * // mock␊
     * const id = path.join(__dirname, './rollup-plugin-ava-test-example.js')␊
     * const code = fs.readFileSync(id).toString()␊
     * ␊
     * // emulate call␊
     * const res = await plugin.transform(code, id)␊
     * ␊
     * // test␊
     * t.truthy(res.code)␊
     * t.snapshot(res.code)␊
     * ```␊
     */␊
    export default function ({ suffix = `.unit.js`, extensions = ['.js'], ava2jsonOptions, jsdocTag = '@example-test' } = {}) {␊
      return {␊
        name: 'rollup-plugin-ava-test-example',␊
        async transform (code, id) {␊
          const extension = id.replace(/^.+(\\.[a-z0-9]+)$/, '$1')␊
    ␊
          if (extension && extensions.indexOf(extension) >= 0) {␊
            const unit = id.replace(new RegExp(`\\\\${ extension }$`), suffix)␊
            if (await pathExists(unit)) {␊
              const examples = (await parseAvaFile(unit, ava2jsonOptions)).map(avaTestToExample)␊
              const finalExample = examples.join('\\n\\n').split('\\n').map(l => ` * ${ l }`).join('\\n')␊
              code = code.replace(new RegExp(`^ \\\\* ${ jsdocTag }$`, 'mg'), finalExample)␊
            }␊
            return { code }␊
          }␊
          return null␊
        }␊
      }␊
    }␊
    `
