require 'spec_helper'
describe Arbre::HTML::Element, "Finder Methods" do
setup_arbre_context!
describe "finding elements by tag name" do
it "should return 0 when no elements exist" do
div.get_elements_by_tag_name("li").size.should == 0
end
it "should return a child element" do
html = div do
ul
li
ul
end
elements = html.get_elements_by_tag_name("li")
elements.size.should == 1
elements[0].should be_instance_of(Arbre::HTML::Li)
end
it "should return multple child elements" do
html = div do
ul
li
ul
li
end
elements = html.get_elements_by_tag_name("li")
elements.size.should == 2
elements[0].should be_instance_of(Arbre::HTML::Li)
elements[1].should be_instance_of(Arbre::HTML::Li)
end
it "should return children's child elements" do
html = div do
ul
li do
li
end
end
elements = html.get_elements_by_tag_name("li")
elements.size.should == 2
elements[0].should be_instance_of(Arbre::HTML::Li)
elements[1].should be_instance_of(Arbre::HTML::Li)
elements[1].parent.should == elements[0]
end
end
#TODO: describe "finding an element by id"
describe "finding an element by a class name" do
it "should return 0 when no elements exist" do
div.get_elements_by_class_name("my_class").size.should == 0
end
it "should return a child element" do
html = div do
div :class => "some_class"
div :class => "my_class"
end
elements = html.get_elements_by_class_name("my_class")
elements.size.should == 1
elements[0].should be_instance_of(Arbre::HTML::Div)
end
it "should return multple child elements" do
html = div do
div :class => "some_class"
div :class => "my_class"
div :class => "my_class"
end
elements = html.get_elements_by_class_name("my_class")
elements.size.should == 2
elements[0].should be_instance_of(Arbre::HTML::Div)
elements[1].should be_instance_of(Arbre::HTML::Div)
end
it "should return elements that match one of several classes" do
html = div do
div :class => "some_class this_class"
div :class => "some_class"
div :class => "other_class"
end
elements = html.get_elements_by_class_name("this_class")
elements.size.should == 1
elements[0].should be_instance_of(Arbre::HTML::Div)
end
#TODO: find children's children by class name
#it "should return elements that are nested" do
# html = div do
# div :class => "my_class"
# div :class => "some_class" do
# ul :class => "other_class" do
# li :class => "special_awesome_class"
# end
# end
# end
#
# elements = html.get_elements_by_class_name("special_awesome_class")
#
# elements.size.should == 1
# elements[0].should be_instance_of(Arbre::HTML::Li)
#end
end
end