@@ -1596,91 +1596,219 @@ describe(ruleName, () => {
1596
1596
} ,
1597
1597
)
1598
1598
1599
- ruleTester . run (
1600
- `${ ruleName } (${ type } ): allows to use "newlinesBetween" inside groups` ,
1601
- rule ,
1602
- {
1603
- invalid : [
1604
- {
1605
- options : [
1606
- {
1607
- ...options ,
1608
- customGroups : [
1609
- { elementNamePattern : 'a' , groupName : 'a' } ,
1610
- { elementNamePattern : 'b' , groupName : 'b' } ,
1611
- { elementNamePattern : 'c' , groupName : 'c' } ,
1612
- { elementNamePattern : 'd' , groupName : 'd' } ,
1613
- { elementNamePattern : 'e' , groupName : 'e' } ,
1614
- ] ,
1615
- groups : [
1599
+ describe ( `${ ruleName } (${ type } ): "newlinesBetween" inside groups` , ( ) => {
1600
+ ruleTester . run (
1601
+ `${ ruleName } (${ type } ): handles "newlinesBetween" between consecutive groups` ,
1602
+ rule ,
1603
+ {
1604
+ invalid : [
1605
+ {
1606
+ options : [
1607
+ {
1608
+ ...options ,
1609
+ groups : [
1610
+ 'a' ,
1611
+ { newlinesBetween : 'always' } ,
1612
+ 'b' ,
1613
+ { newlinesBetween : 'always' } ,
1614
+ 'c' ,
1615
+ { newlinesBetween : 'never' } ,
1616
+ 'd' ,
1617
+ { newlinesBetween : 'ignore' } ,
1618
+ 'e' ,
1619
+ ] ,
1620
+ customGroups : [
1621
+ { elementNamePattern : 'a' , groupName : 'a' } ,
1622
+ { elementNamePattern : 'b' , groupName : 'b' } ,
1623
+ { elementNamePattern : 'c' , groupName : 'c' } ,
1624
+ { elementNamePattern : 'd' , groupName : 'd' } ,
1625
+ { elementNamePattern : 'e' , groupName : 'e' } ,
1626
+ ] ,
1627
+ newlinesBetween : 'always' ,
1628
+ } ,
1629
+ ] ,
1630
+ errors : [
1631
+ {
1632
+ data : {
1633
+ right : 'b' ,
1634
+ left : 'a' ,
1635
+ } ,
1636
+ messageId : 'missedSpacingBetweenArrayIncludesMembers' ,
1637
+ } ,
1638
+ {
1639
+ data : {
1640
+ right : 'c' ,
1641
+ left : 'b' ,
1642
+ } ,
1643
+ messageId : 'extraSpacingBetweenArrayIncludesMembers' ,
1644
+ } ,
1645
+ {
1646
+ data : {
1647
+ right : 'd' ,
1648
+ left : 'c' ,
1649
+ } ,
1650
+ messageId : 'extraSpacingBetweenArrayIncludesMembers' ,
1651
+ } ,
1652
+ ] ,
1653
+ output : dedent `
1654
+ [
1616
1655
'a',
1617
- { newlinesBetween : 'always' } ,
1656
+
1618
1657
'b',
1619
- { newlinesBetween : 'always' } ,
1658
+
1620
1659
'c',
1621
- { newlinesBetween : 'never' } ,
1622
1660
'd',
1623
- { newlinesBetween : 'ignore' } ,
1624
- 'e' ,
1625
- ] ,
1626
- newlinesBetween : 'always' ,
1627
- } ,
1628
- ] ,
1629
- errors : [
1630
- {
1631
- data : {
1632
- right : 'b' ,
1633
- left : 'a' ,
1634
- } ,
1635
- messageId : 'missedSpacingBetweenArrayIncludesMembers' ,
1636
- } ,
1637
- {
1638
- data : {
1639
- right : 'c' ,
1640
- left : 'b' ,
1641
- } ,
1642
- messageId : 'extraSpacingBetweenArrayIncludesMembers' ,
1643
- } ,
1644
- {
1645
- data : {
1646
- right : 'd' ,
1647
- left : 'c' ,
1648
- } ,
1649
- messageId : 'extraSpacingBetweenArrayIncludesMembers' ,
1650
- } ,
1651
- ] ,
1652
- output : dedent `
1653
- [
1654
- 'a',
1655
1661
1656
- 'b',
1657
1662
1658
- 'c',
1659
- 'd',
1663
+ 'e'
1664
+ ].includes(value)
1665
+ ` ,
1666
+ code : dedent `
1667
+ [
1668
+ 'a',
1669
+ 'b',
1660
1670
1661
1671
1662
- 'e'
1663
- ].includes(value)
1664
- ` ,
1665
- code : dedent `
1666
- [
1667
- 'a',
1668
- 'b',
1672
+ 'c',
1669
1673
1674
+ 'd',
1670
1675
1671
- 'c',
1672
1676
1673
- 'd',
1677
+ 'e'
1678
+ ].includes(value)
1679
+ ` ,
1680
+ } ,
1681
+ ] ,
1682
+ valid : [ ] ,
1683
+ } ,
1684
+ )
1674
1685
1686
+ describe ( `${ ruleName } (${ type } ): "newlinesBetween" between non-consecutive groups` , ( ) => {
1687
+ for ( let [ globalNewlinesBetween , groupNewlinesBetween ] of [
1688
+ [ 'always' , 'never' ] as const ,
1689
+ [ 'always' , 'ignore' ] as const ,
1690
+ [ 'never' , 'always' ] as const ,
1691
+ [ 'ignore' , 'always' ] as const ,
1692
+ ] ) {
1693
+ ruleTester . run (
1694
+ `${ ruleName } (${ type } ): enforces a newline if the global option is "${ globalNewlinesBetween } " and the group option is "${ groupNewlinesBetween } "` ,
1695
+ rule ,
1696
+ {
1697
+ invalid : [
1698
+ {
1699
+ options : [
1700
+ {
1701
+ ...options ,
1702
+ customGroups : [
1703
+ { elementNamePattern : 'a' , groupName : 'a' } ,
1704
+ { elementNamePattern : 'b' , groupName : 'b' } ,
1705
+ { groupName : 'unusedGroup' , elementNamePattern : 'X' } ,
1706
+ ] ,
1707
+ groups : [
1708
+ 'a' ,
1709
+ 'unusedGroup' ,
1710
+ { newlinesBetween : groupNewlinesBetween } ,
1711
+ 'b' ,
1712
+ ] ,
1713
+ newlinesBetween : globalNewlinesBetween ,
1714
+ } ,
1715
+ ] ,
1716
+ errors : [
1717
+ {
1718
+ data : {
1719
+ right : 'b' ,
1720
+ left : 'a' ,
1721
+ } ,
1722
+ messageId : 'missedSpacingBetweenArrayIncludesMembers' ,
1723
+ } ,
1724
+ ] ,
1725
+ output : dedent `
1726
+ [
1727
+ a,
1728
+
1729
+ b,
1730
+ ].includes(value)
1731
+ ` ,
1732
+ code : dedent `
1733
+ [
1734
+ a,
1735
+ b,
1736
+ ].includes(value)
1737
+ ` ,
1738
+ } ,
1739
+ ] ,
1740
+ valid : [ ] ,
1741
+ } ,
1742
+ )
1743
+ }
1744
+
1745
+ for ( let [ globalNewlinesBetween , groupNewlinesBetween ] of [
1746
+ [ 'ignore' , 'never' ] as const ,
1747
+ [ 'never' , 'ignore' ] as const ,
1748
+ ] ) {
1749
+ ruleTester . run (
1750
+ `${ ruleName } (${ type } ): does not enforce a newline if the global option is "${ globalNewlinesBetween } " and the group option is "${ groupNewlinesBetween } "` ,
1751
+ rule ,
1752
+ {
1753
+ valid : [
1754
+ {
1755
+ options : [
1756
+ {
1757
+ ...options ,
1758
+ customGroups : [
1759
+ { elementNamePattern : 'a' , groupName : 'a' } ,
1760
+ { elementNamePattern : 'b' , groupName : 'b' } ,
1761
+ { groupName : 'unusedGroup' , elementNamePattern : 'X' } ,
1762
+ ] ,
1763
+ groups : [
1764
+ 'a' ,
1765
+ 'unusedGroup' ,
1766
+ { newlinesBetween : groupNewlinesBetween } ,
1767
+ 'b' ,
1768
+ ] ,
1769
+ newlinesBetween : globalNewlinesBetween ,
1770
+ } ,
1771
+ ] ,
1772
+ code : dedent `
1773
+ [
1774
+ a,
1675
1775
1676
- 'e'
1677
- ].includes(value)
1678
- ` ,
1679
- } ,
1680
- ] ,
1681
- valid : [ ] ,
1682
- } ,
1683
- )
1776
+ b,
1777
+ ].includes(value)
1778
+ ` ,
1779
+ } ,
1780
+ {
1781
+ options : [
1782
+ {
1783
+ ...options ,
1784
+ customGroups : [
1785
+ { elementNamePattern : 'a' , groupName : 'a' } ,
1786
+ { elementNamePattern : 'b' , groupName : 'b' } ,
1787
+ { groupName : 'unusedGroup' , elementNamePattern : 'X' } ,
1788
+ ] ,
1789
+ groups : [
1790
+ 'a' ,
1791
+ 'unusedGroup' ,
1792
+ { newlinesBetween : groupNewlinesBetween } ,
1793
+ 'b' ,
1794
+ ] ,
1795
+ newlinesBetween : globalNewlinesBetween ,
1796
+ } ,
1797
+ ] ,
1798
+ code : dedent `
1799
+ [
1800
+ a,
1801
+ b,
1802
+ ].includes(value)
1803
+ ` ,
1804
+ } ,
1805
+ ] ,
1806
+ invalid : [ ] ,
1807
+ } ,
1808
+ )
1809
+ }
1810
+ } )
1811
+ } )
1684
1812
1685
1813
ruleTester . run (
1686
1814
`${ ruleName } (${ type } ): handles newlines and comment after fixes` ,
0 commit comments