@transferwise/eslint-plugin
Version:
TransferWise ESLint plugin
73 lines (67 loc) • 1.95 kB
JavaScript
/**
* @fileoverview Ensures getServerSideProps is within the pages directory
* @author fergusjordantw
*/
//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------
const { RuleTester } = require('eslint');
const rule = require('./get-server-side-props-is-in-pages-directory');
RuleTester.setDefaultConfig({
languageOptions: {
ecmaVersion: 2020,
sourceType: 'module',
},
});
const ruleTester = new RuleTester();
ruleTester.run('get-server-side-props-is-in-pages-directory', rule, {
valid: [
{
code: 'export async function getServerSideProps() {}',
filename: 'pages/index.tsx',
},
{
code: 'export const getServerSideProps = async () => {}',
filename: 'pages/[someNestedDirectory]/index.js',
},
{
code: 'export default function() {}',
filename: 'pages/[someNestedDirectory]/index.js',
},
],
invalid: [
{
code: 'export const getServerSideProps = async () => {}',
filename: 'src/containers/SomeComponent.tsx',
errors: [
{
message:
'getServerSideProps can only be exported from the pages directory',
type: 'Identifier',
},
],
},
{
code: 'export async function getServerSideProps() {}',
filename: 'src/components/DifferentComponent.tsx',
errors: [
{
message:
'getServerSideProps can only be exported from the pages directory',
type: 'Identifier',
},
],
},
{
code: 'export default function getServerSideProps() {}',
filename: 'src/components/DifferentComponent/getServerSideProps.ts',
errors: [
{
message:
'getServerSideProps can only be exported from the pages directory',
type: 'Identifier',
},
],
},
],
});