require "spec_helper"
require "massive_sitemap/builder"
require "massive_sitemap/writer/string"
describe MassiveSitemap::Builder::Base do
let(:header) { %Q(\n) }
let(:writer) { MassiveSitemap::Writer::String.new }
let(:builder) { MassiveSitemap::Builder.new(writer) }
describe "#arguments" do
it 'fail if no writer given' do
expect do
MassiveSitemap::Builder.new
end.to raise_error(ArgumentError)
end
end
context "no content added" do
it 'empty per default' do
builder
writer.should == ""
end
it 'generate basic skeleton' do
builder.init!
writer.should == header
end
it 'generate basic skeleton on double init' do
builder.init!
builder.init!
writer.should == header
end
it 'generate nothing when not inited' do
builder.close!
writer.should == ""
end
it "same result on double close" do
builder.close!
builder.close!
writer.should == ""
end
it "same result on double close" do
builder.init!
builder.close!
builder.close!
writer.should == %Q(#{header}\n)
end
it "same result on double close" do
builder.init! do
add "test"
end
writer.should == %Q(#{header}\n \n /test\n \n)
end
end
context "adding content" do
it 'seq: generate one url' do
builder.add 'test'
builder.close!
writer.should == %Q(#{header}\n \n /test\n \n)
end
end
context "as block" do
it 'generate basic skeleton' do
MassiveSitemap::Builder.new(writer) {}
writer.should == ""
end
it 'generate one url' do
MassiveSitemap::Builder.new(writer) do
add 'test'
end
writer.should == %Q(#{header}\n \n /test\n \n)
end
it 'generate one url with init!' do
MassiveSitemap::Builder.new(writer) do
init!
add 'test'
end
writer.should == %Q(#{header}\n \n /test\n \n)
end
it 'generate one url with init! block' do
MassiveSitemap::Builder.new(writer) do
init! do
add 'test'
end
end
writer.should == %Q(#{header}\n \n /test\n \n)
end
it 'generate one url with close!' do
MassiveSitemap::Builder.new(writer) do
add 'test'
close!
end
writer.should == %Q(#{header}\n \n /test\n \n)
end
it 'generate one url, no indent' do
MassiveSitemap::Builder.new(writer, :indent_by => 0) do
add_url! 'test'
end
writer.should == %Q(#{header}\n\ntest\n\n)
end
it 'generate two url' do
MassiveSitemap::Builder.new(writer) do
add_url! 'test'
add_url! 'test2'
end
writer.should == %Q(#{header}\n \n test\n \n \n test2\n \n)
end
it 'generate one url with attrs' do
MassiveSitemap::Builder.new(writer, :indent_by => 0) do
add_url! 'test', :change_frequency => 'weekly', :priority => 0.8
end
writer.should include("test\nweekly\n0.8")
end
end
describe ".base_url" do
URLS = %w(
http://test.de/
test.de/
test.de
)
URLS.each do |url|
it "transforms to valid url" do
MassiveSitemap::Builder.new(writer, :base_url => url).send(:base_url).should == "http://test.de/"
end
end
it "transforms to valid url with https" do
MassiveSitemap::Builder.new(writer, :base_url => "https://test.de/").send(:base_url).should == "https://test.de/"
end
end
end