zammad/zammad

View on GitHub
.eslint-plugin-zammad/tests/lib/rules/zammad-tailwind-ltr.js

Summary

Maintainability
A
0 mins
Test Coverage
// Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/

/**
 * @fileoverview Enforce "ltr/rtl" rule, if positioning classes are used
 * @author Vladimir Sheremet
 */

//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------

const { RuleTester } = require('eslint')
const rule = require('../../../lib/rules/zammad-tailwind-ltr.js')

//------------------------------------------------------------------------------
// Tests
//------------------------------------------------------------------------------

const error =
  'When positioning classes are used, they must be prefixed with ltr/rtl.'

const ruleTester = new RuleTester()
ruleTester.run('zammad-tailwind-ltr', rule, {
  valid: [
    {
      filename: 'test.ts',
      code: `console.log('i am testing')`,
    },
    {
      filename: 'test.ts',
      code: `'ltr:pl-2 rtl:pr-2'`,
    },
    {
      filename: 'test.ts',
      code: `'text-black flex flex-col'`,
    },
    {
      filename: 'test.ts',
      code: `{ name: 'ltr:pl-2 rtl:pr-2' }`,
    },
    {
      filename: 'test.js',
      code: `'pl-2 pr-2'`,
    },
    {
      filename: 'test.js',
      code: `{ name: 'pl-2 pr-2' }`,
    },
    {
      filename: 'test.js',
      code: `{ name: 'left-0 right-0' }`,
    },
    {
      filename: 'test.js',
      code: `'left-0 right-0'`,
    },
  ],
  invalid: [
    {
      filename: 'test.js',
      code: `'pl-2'`,
      output: `'rtl:pr-2 ltr:pl-2'`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.js',
      code: `'!pl-2'`,
      output: `'rtl:!pr-2 ltr:!pl-2'`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.js',
      code: `'-pl-2'`,
      output: `'rtl:-pr-2 ltr:-pl-2'`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.js',
      code: `'!-pl-2'`,
      output: `'rtl:!-pr-2 ltr:!-pl-2'`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.js',
      code: `'left-2'`,
      output: `'rtl:right-2 ltr:left-2'`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.js',
      code: `'!left-2'`,
      output: `'rtl:!right-2 ltr:!left-2'`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.js',
      code: `{ name: 'pl-2' }`,
      output: `{ name: 'rtl:pr-2 ltr:pl-2' }`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.js',
      code: `'pr-2'`,
      output: `'rtl:pl-2 ltr:pr-2'`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.js',
      code: `'right-2'`,
      output: `'rtl:left-2 ltr:right-2'`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.js',
      code: `{ name: 'pr-2' }`,
      output: `{ name: 'rtl:pl-2 ltr:pr-2' }`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.js',
      code: `{ name: 'rtl:pl-2 pr-2' }`,
      output: `{ name: 'rtl:pl-2 ltr:pr-2' }`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.js',
      code: `{ name: 'ml-2 pr-2' }`,
      output: `{ name: 'rtl:mr-2 ltr:ml-2 rtl:pl-2 ltr:pr-2' }`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.js',
      code: `{ name: 'ltr:mr-2' }`,
      output: `{ name: 'ltr:mr-2 rtl:ml-2' }`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.ts',
      code: `{ name: 'rtl:pl-2' }`,
      output: `{ name: 'rtl:pl-2 ltr:pr-2' }`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.ts',
      code: `{ name: 'rtl:left-2' }`,
      output: `{ name: 'rtl:left-2 ltr:right-2' }`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.ts',
      code: `'translate-x-2'`,
      output: `'rtl:-translate-x-2 ltr:translate-x-2'`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.ts',
      code: `'!translate-x-2'`,
      output: `'rtl:!-translate-x-2 ltr:!translate-x-2'`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.ts',
      code: `'-translate-x-2'`,
      output: `'rtl:translate-x-2 ltr:-translate-x-2'`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.ts',
      code: `'!-translate-x-2'`,
      output: `'rtl:!translate-x-2 ltr:!-translate-x-2'`,
      errors: [{ message: error }],
    },
    {
      filename: 'test.js',
      code: `'left-0 right-1'`,
      output: `'rtl:right-0 ltr:left-0 rtl:left-1 ltr:right-1'`,
      errors: [{ message: error }],
    },
  ],
})