prefer-inline-snapshots.js 1.17 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
'use strict';

const { getDocsUrl } = require('./util');

module.exports = {
  meta: {
    docs: {
      url: getDocsUrl(__filename),
    },
    fixable: 'code',
  },
  create(context) {
    return {
      CallExpression(node) {
        const propertyName = node.callee.property && node.callee.property.name;
        if (propertyName === 'toMatchSnapshot') {
          context.report({
            fix(fixer) {
              return [
                fixer.replaceText(
                  node.callee.property,
                  'toMatchInlineSnapshot'
                ),
              ];
            },
            message: 'Use toMatchInlineSnapshot() instead',
            node: node.callee.property,
          });
        } else if (propertyName === 'toThrowErrorMatchingSnapshot') {
          context.report({
            fix(fixer) {
              return [
                fixer.replaceText(
                  node.callee.property,
                  'toThrowErrorMatchingInlineSnapshot'
                ),
              ];
            },
            message: 'Use toThrowErrorMatchingInlineSnapshot() instead',
            node: node.callee.property,
          });
        }
      },
    };
  },
};