jsx-child-element-spacing.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. 'use strict';
  2. const rule = require('../../../lib/rules/jsx-child-element-spacing');
  3. const RuleTester = require('eslint').RuleTester;
  4. const parserOptions = {
  5. sourceType: 'module',
  6. ecmaFeatures: {
  7. jsx: true
  8. }
  9. };
  10. const ruleTester = new RuleTester({parserOptions});
  11. ruleTester.run('jsx-child-element-spacing', rule, {
  12. valid: [{
  13. code: `
  14. <App>
  15. foo
  16. </App>
  17. `
  18. }, {
  19. code: `
  20. <App>
  21. <a>bar</a>
  22. </App>
  23. `
  24. }, {
  25. code: `
  26. <App>
  27. <a>
  28. <b>nested</b>
  29. </a>
  30. </App>
  31. `
  32. }, {
  33. code: `
  34. <App>
  35. foo
  36. bar
  37. </App>
  38. `
  39. }, {
  40. code: `
  41. <App>
  42. foo<a>bar</a>baz
  43. </App>
  44. `
  45. }, {
  46. code: `
  47. <App>
  48. foo
  49. {' '}
  50. <a>bar</a>
  51. {' '}
  52. baz
  53. </App>
  54. `
  55. }, {
  56. code: `
  57. <App>
  58. foo
  59. {' '}<a>bar</a>{' '}
  60. baz
  61. </App>
  62. `
  63. }, {
  64. code: `
  65. <App>
  66. foo{' '}
  67. <a>bar</a>
  68. {' '}baz
  69. </App>
  70. `
  71. }, {
  72. code: `
  73. <App>
  74. foo{/*
  75. */}<a>bar</a>{/*
  76. */}baz
  77. </App>
  78. `
  79. }, {
  80. code: `
  81. <App>
  82. Please take a look at <a href="https://js.org">this link</a>.
  83. </App>
  84. `
  85. }, {
  86. code: `
  87. <App>
  88. Please take a look at
  89. {' '}
  90. <a href="https://js.org">this link</a>.
  91. </App>
  92. `
  93. }, {
  94. code: `
  95. <App>
  96. <p>A</p>
  97. <p>B</p>
  98. </App>
  99. `
  100. }, {
  101. code: `
  102. <App>
  103. <p>A</p><p>B</p>
  104. </App>
  105. `
  106. }, {
  107. code: `
  108. <App>
  109. <a>foo</a>
  110. <a>bar</a>
  111. </App>
  112. `
  113. }, {
  114. code: `
  115. <App>
  116. <a>
  117. <b>nested1</b>
  118. <b>nested2</b>
  119. </a>
  120. </App>
  121. `
  122. }, {
  123. code: `
  124. <App>
  125. A
  126. B
  127. </App>
  128. `
  129. }],
  130. invalid: [{
  131. code: `
  132. <App>
  133. foo
  134. <a>bar</a>
  135. </App>
  136. `,
  137. errors: [
  138. {
  139. message: 'Ambiguous spacing before next element a',
  140. line: 4,
  141. column: 3
  142. }
  143. ]
  144. }, {
  145. code: `
  146. <App>
  147. <a>bar</a>
  148. baz
  149. </App>
  150. `,
  151. errors: [
  152. {
  153. message: 'Ambiguous spacing after previous element a',
  154. line: 3,
  155. column: 13
  156. }
  157. ]
  158. }, {
  159. code: `
  160. <App>
  161. {' '}<a>bar</a>
  162. baz
  163. </App>
  164. `,
  165. errors: [
  166. {
  167. message: 'Ambiguous spacing after previous element a',
  168. line: 3,
  169. column: 18
  170. }
  171. ]
  172. }, {
  173. code: `
  174. <App>
  175. Please take a look at
  176. <a href="https://js.org">this link</a>.
  177. </App>
  178. `,
  179. errors: [
  180. {
  181. message: 'Ambiguous spacing before next element a',
  182. line: 4,
  183. column: 3
  184. }
  185. ]
  186. }, {
  187. code: `
  188. <App>
  189. Some <code>loops</code> and some
  190. <code>if</code> statements.
  191. </App>
  192. `,
  193. errors: [
  194. {
  195. message: 'Ambiguous spacing before next element code',
  196. line: 4,
  197. column: 3
  198. }
  199. ]
  200. }, {
  201. code: `
  202. <App>
  203. Here is
  204. <a href="https://js.org">a link</a> and here is
  205. <a href="https://js.org">another</a>
  206. </App>
  207. `,
  208. errors: [
  209. {
  210. message: 'Ambiguous spacing before next element a',
  211. line: 4,
  212. column: 3
  213. },
  214. {
  215. message: 'Ambiguous spacing before next element a',
  216. line: 5,
  217. column: 3
  218. }
  219. ]
  220. }]
  221. });