test/sitemap_test.rb in sitemap-0.1 vs test/sitemap_test.rb in sitemap-0.2b
- old
+ new
@@ -17,31 +17,33 @@
include SitemapTestSetup
def setup
create_db
+ Sitemap.defaults[:max_urls] = 10000
Sitemap::Generator.reset_instance
end
def teardown
drop_db
end
def test_xml_response
Sitemap::Generator.instance.load(:host => "someplace.com") {}
- doc = Nokogiri::XML(Sitemap::Generator.instance.build)
+ doc = Nokogiri::XML(Sitemap::Generator.instance.render)
assert doc.errors.empty?
assert_equal doc.root.name, "urlset"
end
def test_path_route
urls = ["http://someplace.com/", "http://someplace.com/questions"]
Sitemap::Generator.instance.load(:host => "someplace.com") do
path :root
path :faq
end
- doc = Nokogiri::HTML(Sitemap::Generator.instance.build)
+ Sitemap::Generator.instance.build!
+ doc = Nokogiri::HTML(Sitemap::Generator.instance.render)
elements = doc.xpath "//url/loc"
assert_equal elements.length, urls.length
elements.each_with_index do |element, i|
assert_equal element.text, urls[i]
end
@@ -49,47 +51,51 @@
def test_resources_route
Sitemap::Generator.instance.load(:host => "someplace.com") do
resources :activities
end
- doc = Nokogiri::HTML(Sitemap::Generator.instance.build)
+ Sitemap::Generator.instance.build!
+ doc = Nokogiri::HTML(Sitemap::Generator.instance.render)
elements = doc.xpath "//url/loc"
assert_equal elements.length, Activity.count + 1
assert_equal elements.first.text, "http://someplace.com/activities"
elements[1..-1].each_with_index do |element, i|
assert_equal element.text, "http://someplace.com/activities/#{i + 1}"
end
end
def test_custom_resource_objects
- activities = [Activity.first, Activity.last]
+ activities = proc { Activity.where(:published => true) }
Sitemap::Generator.instance.load(:host => "someplace.com") do
- resources :activities, :objects => proc { activities }, :skip_index => true
+ resources :activities, :objects => activities, :skip_index => true
end
- doc = Nokogiri::HTML(Sitemap::Generator.instance.build)
+ Sitemap::Generator.instance.build!
+ doc = Nokogiri::HTML(Sitemap::Generator.instance.render)
elements = doc.xpath "//url/loc"
- assert_equal elements.length, activities.length
- activities.each_with_index do |activity, i|
+ assert_equal elements.length, activities.call.length
+ activities.call.each_with_index do |activity, i|
assert_equal elements[i].text, "http://someplace.com/activities/%d" % activity.id
end
end
def test_params_options
Sitemap::Generator.instance.load(:host => "someplace.com") do
path :faq, :params => { :host => "anotherplace.com", :format => "html", :filter => "recent" }
end
- doc = Nokogiri::HTML(Sitemap::Generator.instance.build)
+ Sitemap::Generator.instance.build!
+ doc = Nokogiri::HTML(Sitemap::Generator.instance.render)
elements = doc.xpath "//url/loc"
assert_equal elements.first.text, "http://anotherplace.com/questions.html?filter=recent"
end
def test_params_blocks
Sitemap::Generator.instance.load(:host => "someplace.com") do
resources :activities, :skip_index => true, :params => { :host => proc { |obj| [obj.location, host].join(".") } }
end
activities = Activity.all
- doc = Nokogiri::HTML(Sitemap::Generator.instance.build)
+ Sitemap::Generator.instance.build!
+ doc = Nokogiri::HTML(Sitemap::Generator.instance.render)
elements = doc.xpath "//url/loc"
elements.each_with_index do |element, i|
assert_equal element.text, "http://%s.someplace.com/activities/%d" % [activities[i].location, activities[i].id]
end
end
@@ -97,11 +103,12 @@
def test_search_attribute_options
Sitemap::Generator.instance.load(:host => "someplace.com") do
path :faq, :priority => 1, :change_frequency => "always"
resources :activities, :change_frequency => "weekly"
end
- doc = Nokogiri::HTML(Sitemap::Generator.instance.build)
+ Sitemap::Generator.instance.build!
+ doc = Nokogiri::HTML(Sitemap::Generator.instance.render)
assert_equal doc.xpath("//url/priority").first.text, "1"
elements = doc.xpath "//url/changefreq"
assert_equal elements[0].text, "always"
elements[1..-1].each do |element|
assert_equal element.text, "weekly"
@@ -111,11 +118,11 @@
def test_search_attribute_blocks
Sitemap::Generator.instance.load(:host => "someplace.com") do
resources :activities, :priority => proc { |obj| obj.id <= 2 ? 1 : 0.5 }, :skip_index => true
end
activities = Activity.all
- doc = Nokogiri::HTML(Sitemap::Generator.instance.build)
+ doc = Nokogiri::HTML(Sitemap::Generator.instance.render)
elements = doc.xpath "//url/priority"
elements.each_with_index do |element, i|
value = activities[i].id <= 2 ? "1" : "0.5"
assert_equal element.text, value
end
@@ -123,17 +130,64 @@
def test_discards_empty_search_attributes # Empty or false (boolean).
Sitemap::Generator.instance.load(:host => "someplace.com") do
path :faq, :priority => "", :change_frequency => lambda { |e| return false}, :updated_at => Date.today
end
- doc = Nokogiri::HTML(Sitemap::Generator.instance.build)
+ Sitemap::Generator.instance.build!
+ doc = Nokogiri::HTML(Sitemap::Generator.instance.render)
assert_equal doc.xpath("//url/priority").count, 0
assert_equal doc.xpath("//url/changefreq").count, 0
assert_equal doc.xpath("//url/lastmod").text, Date.today.to_s
end
def test_file_url
Sitemap::Generator.instance.load(:host => "someplace.com") {}
assert_equal Sitemap::Generator.instance.file_url, "http://someplace.com/sitemap.xml"
+ end
+
+ def test_save_creates_file
+ path = File.join(Dir.tmpdir, "sitemap.xml")
+ File.unlink(path) if File.exist?(path)
+ Sitemap::Generator.instance.load(:host => "someplace.com") do
+ resources :activities
+ end
+ Sitemap::Generator.instance.build!
+ Sitemap::Generator.instance.save(path)
+ assert File.exist?(path)
+ File.unlink(path)
+ end
+
+ def test_saves_fragments
+ Sitemap.defaults[:max_urls] = 2
+ Sitemap::Generator.instance.load(:host => "someplace.com") do
+ path :root
+ path :root
+ path :root
+ path :root
+ end
+ path = File.join(Dir.tmpdir, "sitemap.xml")
+ root = File.join(Dir.tmpdir, "sitemap") # Directory is being removed at the end of the test.
+ assert !File.directory?(root)
+ Sitemap::Generator.instance.build!
+ Sitemap::Generator.instance.save(path)
+ 1.upto(2) { |i|
+ assert File.exists?(File.join(root, "sitemap-fragment-#{i}.xml"))
+ }
+ FileUtils.rm_rf(root)
+ end
+
+ def test_fragments_index
+ Sitemap.defaults[:max_urls] = 2
+ Sitemap::Generator.instance.load(:host => "someplace.com") do
+ path :root
+ path :root
+ path :root
+ path :root
+ path :root
+ end
+ Sitemap::Generator.instance.build!
+ doc = Nokogiri::HTML(Sitemap::Generator.instance.render("index"))
+ elements = doc.xpath "//sitemap"
+ assert_equal Sitemap::Generator.instance.fragments.length, 3
end
end