@@ -72,9 +72,7 @@ class SelectorsTest < Minitest::Spec
7272 pseudo_elements : [
7373 [
7474 Selectors ::PseudoElementSelector [
75- Selectors ::PseudoClassSelector [
76- value : { value : "first-line" }
77- ]
75+ value : { value : { value : "first-line" } }
7876 ] ,
7977 [ ]
8078 ]
@@ -84,6 +82,51 @@ class SelectorsTest < Minitest::Spec
8482 end
8583 end
8684
85+ it "parses a compound selector with a pseudo-class" do
86+ actual = parse_selectors ( "div.flex:hover" )
87+
88+ assert_pattern do
89+ actual => [
90+ Selectors ::CompoundSelector [
91+ type : { value : { name : { value : "div" } } } ,
92+ subclasses : [
93+ Selectors ::ClassSelector [ value : { value : "flex" } ] ,
94+ Selectors ::PseudoClassSelector [ value : { value : "hover" } ] ,
95+ ] ,
96+ ]
97+ ]
98+ end
99+ end
100+
101+ it "parses a compound selector with pseudo-elements and pseudo-classes" do
102+ actual = parse_selectors ( "div.flex:hover::first-line:last-child:active::first-letter" )
103+
104+ assert_pattern do
105+ actual => [
106+ Selectors ::CompoundSelector [
107+ type : { value : { name : { value : "div" } } } ,
108+ subclasses : [
109+ Selectors ::ClassSelector [ value : { value : "flex" } ] ,
110+ Selectors ::PseudoClassSelector [ value : { value : "hover" } ] ,
111+ ] ,
112+ pseudo_elements : [
113+ [
114+ Selectors ::PseudoElementSelector [ value : { value : { value : "first-line" } } ] ,
115+ [
116+ Selectors ::PseudoClassSelector [ value : { value : "last-child" } ] ,
117+ Selectors ::PseudoClassSelector [ value : { value : "active" } ] ,
118+ ] ,
119+ ] ,
120+ [
121+ Selectors ::PseudoElementSelector [ value : { value : { value : "first-letter" } } ] ,
122+ [ ] ,
123+ ]
124+ ]
125+ ]
126+ ]
127+ end
128+ end
129+
87130 it "parses a complex selector" do
88131 actual = parse_selectors ( "section>table" )
89132
0 commit comments