/
test_parser.rb
49 lines (43 loc) · 1.16 KB
/
test_parser.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# frozen_string_literal: true
require "helper"
class TestNokogiri < Nokogiri::TestCase
describe Nokogiri::CSS::Parser do
let(:parser) { Nokogiri::CSS::Parser.new }
it "#find_by_type" do
ast = parser.parse("a:nth-child(2)").first
matches = ast.find_by_type(
[:CONDITIONAL_SELECTOR,
[:ELEMENT_NAME],
[:PSEUDO_CLASS,
[:FUNCTION],],]
)
assert_equal(1, matches.length)
assert_equal(ast, matches.first)
end
it "#to_type" do
ast = parser.parse("a:nth-child(2)").first
assert_equal(
[:CONDITIONAL_SELECTOR,
[:ELEMENT_NAME],
[:PSEUDO_CLASS,
[:FUNCTION],],], ast.to_type
)
end
it "#to_a_" do
asts = parser.parse("a:nth-child(2)")
assert_equal(
[:CONDITIONAL_SELECTOR,
[:ELEMENT_NAME, ["a"]],
[:PSEUDO_CLASS,
[:FUNCTION, ["nth-child("], ["2"]],],], asts.first.to_a
)
end
it "parses xpath attributes" do
ast = parser.parse("a/@href").first
assert_equal(
[:CHILD_SELECTOR, [:ELEMENT_NAME, ["a"]], [:ATTRIB_NAME, ["@href"]]],
ast.to_a
)
end
end
end