jsx-pascal-case.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /**
  2. * @fileoverview Tests for jsx-pascal-case
  3. * @author Jake Marsh
  4. */
  5. 'use strict';
  6. // ------------------------------------------------------------------------------
  7. // Requirements
  8. // ------------------------------------------------------------------------------
  9. const rule = require('../../../lib/rules/jsx-pascal-case');
  10. const RuleTester = require('eslint').RuleTester;
  11. const parserOptions = {
  12. ecmaVersion: 2018,
  13. sourceType: 'module',
  14. ecmaFeatures: {
  15. jsx: true
  16. }
  17. };
  18. // ------------------------------------------------------------------------------
  19. // Tests
  20. // ------------------------------------------------------------------------------
  21. const ruleTester = new RuleTester({parserOptions});
  22. ruleTester.run('jsx-pascal-case', rule, {
  23. valid: [{
  24. code: '<testComponent />'
  25. }, {
  26. code: '<test_component />'
  27. }, {
  28. code: '<TestComponent />'
  29. }, {
  30. code: '<CSSTransitionGroup />'
  31. }, {
  32. code: '<BetterThanCSS />'
  33. }, {
  34. code: '<TestComponent><div /></TestComponent>'
  35. }, {
  36. code: '<Test1Component />'
  37. }, {
  38. code: '<TestComponent1 />'
  39. }, {
  40. code: '<T3stComp0nent />'
  41. }, {
  42. code: '<T />'
  43. }, {
  44. code: '<YMCA />',
  45. options: [{allowAllCaps: true}]
  46. }, {
  47. code: '<Modal.Header />'
  48. }, {
  49. code: '<Modal:Header />'
  50. }, {
  51. code: '<IGNORED />',
  52. options: [{ignore: ['IGNORED']}]
  53. }],
  54. invalid: [{
  55. code: '<Test_component />',
  56. errors: [{message: 'Imported JSX component Test_component must be in PascalCase'}]
  57. }, {
  58. code: '<TEST_COMPONENT />',
  59. errors: [{message: 'Imported JSX component TEST_COMPONENT must be in PascalCase'}]
  60. }, {
  61. code: '<YMCA />',
  62. errors: [{message: 'Imported JSX component YMCA must be in PascalCase'}]
  63. }]
  64. });