ftbpro_sitemap_generator 5.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +13 -0
  3. data/Gemfile.lock +35 -0
  4. data/MIT-LICENSE +20 -0
  5. data/README.md +1139 -0
  6. data/Rakefile +43 -0
  7. data/VERSION +1 -0
  8. data/lib/capistrano/sitemap_generator.rb +1 -0
  9. data/lib/capistrano/tasks/sitemap_generator.cap +36 -0
  10. data/lib/sitemap_generator.rb +85 -0
  11. data/lib/sitemap_generator/adapters.rb +0 -0
  12. data/lib/sitemap_generator/adapters/file_adapter.rb +43 -0
  13. data/lib/sitemap_generator/adapters/fog_adapter.rb +28 -0
  14. data/lib/sitemap_generator/adapters/s3_adapter.rb +41 -0
  15. data/lib/sitemap_generator/adapters/wave_adapter.rb +21 -0
  16. data/lib/sitemap_generator/application.rb +49 -0
  17. data/lib/sitemap_generator/builder.rb +8 -0
  18. data/lib/sitemap_generator/builder/sitemap_file.rb +172 -0
  19. data/lib/sitemap_generator/builder/sitemap_index_file.rb +149 -0
  20. data/lib/sitemap_generator/builder/sitemap_index_url.rb +28 -0
  21. data/lib/sitemap_generator/builder/sitemap_url.rb +250 -0
  22. data/lib/sitemap_generator/core_ext.rb +3 -0
  23. data/lib/sitemap_generator/core_ext/big_decimal.rb +45 -0
  24. data/lib/sitemap_generator/core_ext/numeric.rb +48 -0
  25. data/lib/sitemap_generator/helpers/number_helper.rb +237 -0
  26. data/lib/sitemap_generator/interpreter.rb +80 -0
  27. data/lib/sitemap_generator/link_set.rb +677 -0
  28. data/lib/sitemap_generator/railtie.rb +7 -0
  29. data/lib/sitemap_generator/sitemap_location.rb +192 -0
  30. data/lib/sitemap_generator/sitemap_namer.rb +75 -0
  31. data/lib/sitemap_generator/tasks.rb +53 -0
  32. data/lib/sitemap_generator/templates.rb +41 -0
  33. data/lib/sitemap_generator/utilities.rb +181 -0
  34. data/lib/tasks/sitemap_generator_tasks.rake +1 -0
  35. data/rails/install.rb +2 -0
  36. data/rails/uninstall.rb +2 -0
  37. data/spec/blueprint.rb +15 -0
  38. data/spec/files/sitemap.create.rb +12 -0
  39. data/spec/files/sitemap.groups.rb +49 -0
  40. data/spec/sitemap_generator/adapters/s3_adapter_spec.rb +23 -0
  41. data/spec/sitemap_generator/alternate_sitemap_spec.rb +79 -0
  42. data/spec/sitemap_generator/application_spec.rb +69 -0
  43. data/spec/sitemap_generator/builder/sitemap_file_spec.rb +110 -0
  44. data/spec/sitemap_generator/builder/sitemap_index_file_spec.rb +124 -0
  45. data/spec/sitemap_generator/builder/sitemap_index_url_spec.rb +28 -0
  46. data/spec/sitemap_generator/builder/sitemap_url_spec.rb +186 -0
  47. data/spec/sitemap_generator/core_ext/bigdecimal_spec.rb +20 -0
  48. data/spec/sitemap_generator/core_ext/numeric_spec.rb +43 -0
  49. data/spec/sitemap_generator/file_adaptor_spec.rb +20 -0
  50. data/spec/sitemap_generator/geo_sitemap_spec.rb +30 -0
  51. data/spec/sitemap_generator/helpers/number_helper_spec.rb +196 -0
  52. data/spec/sitemap_generator/interpreter_spec.rb +90 -0
  53. data/spec/sitemap_generator/link_set_spec.rb +864 -0
  54. data/spec/sitemap_generator/mobile_sitemap_spec.rb +27 -0
  55. data/spec/sitemap_generator/news_sitemap_spec.rb +42 -0
  56. data/spec/sitemap_generator/pagemap_sitemap_spec.rb +57 -0
  57. data/spec/sitemap_generator/sitemap_generator_spec.rb +582 -0
  58. data/spec/sitemap_generator/sitemap_groups_spec.rb +144 -0
  59. data/spec/sitemap_generator/sitemap_location_spec.rb +210 -0
  60. data/spec/sitemap_generator/sitemap_namer_spec.rb +96 -0
  61. data/spec/sitemap_generator/templates_spec.rb +24 -0
  62. data/spec/sitemap_generator/utilities/existence_spec.rb +26 -0
  63. data/spec/sitemap_generator/utilities/hash_spec.rb +57 -0
  64. data/spec/sitemap_generator/utilities/rounding_spec.rb +31 -0
  65. data/spec/sitemap_generator/utilities_spec.rb +101 -0
  66. data/spec/sitemap_generator/video_sitemap_spec.rb +117 -0
  67. data/spec/spec_helper.rb +24 -0
  68. data/spec/support/file_macros.rb +39 -0
  69. data/spec/support/schemas/siteindex.xsd +73 -0
  70. data/spec/support/schemas/sitemap-geo.xsd +41 -0
  71. data/spec/support/schemas/sitemap-mobile.xsd +32 -0
  72. data/spec/support/schemas/sitemap-news.xsd +159 -0
  73. data/spec/support/schemas/sitemap-pagemap.xsd +97 -0
  74. data/spec/support/schemas/sitemap-video.xsd +643 -0
  75. data/spec/support/schemas/sitemap.xsd +115 -0
  76. data/spec/support/xml_macros.rb +67 -0
  77. data/templates/sitemap.rb +27 -0
  78. metadata +226 -0
@@ -0,0 +1,144 @@
1
+ require "spec_helper"
2
+
3
+ def with_max_links(num)
4
+ SitemapGenerator::Utilities.with_warnings(nil) do
5
+ original = SitemapGenerator::MAX_SITEMAP_LINKS
6
+ SitemapGenerator.const_set(:MAX_SITEMAP_LINKS, num)
7
+ yield
8
+ SitemapGenerator.const_set(:MAX_SITEMAP_LINKS, original)
9
+ end
10
+ end
11
+
12
+ describe "Sitemap Groups" do
13
+ let(:linkset) { ::SitemapGenerator::LinkSet.new(:default_host => 'http://test.com') }
14
+
15
+ before :each do
16
+ FileUtils.rm_rf(SitemapGenerator.app.root + 'public/')
17
+ end
18
+
19
+ it "should not finalize the default sitemap if using groups" do
20
+ linkset.create do
21
+ group(:filename => :sitemap_en) do
22
+ add '/en'
23
+ end
24
+ end
25
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap.xml.gz')
26
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap_en.xml.gz')
27
+ file_should_not_exist(SitemapGenerator.app.root + 'public/sitemap1.xml.gz')
28
+ end
29
+
30
+ it "should not write out empty groups" do
31
+ linkset.create do
32
+ group(:filename => :sitemap_en) { }
33
+ end
34
+ file_should_not_exist(SitemapGenerator.app.root + 'public/sitemap_en.xml.gz')
35
+ end
36
+
37
+ it "should add default links if no groups are created" do
38
+ linkset.create do
39
+ end
40
+ linkset.link_count.should == 1
41
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap.xml.gz')
42
+ file_should_not_exist(SitemapGenerator.app.root + 'public/sitemap1.xml.gz')
43
+ end
44
+
45
+ it "should add links to the default sitemap" do
46
+ linkset.create do
47
+ add '/before'
48
+ group(:filename => :sitemap_en) do
49
+ add '/link'
50
+ end
51
+ add '/after'
52
+ end
53
+ linkset.link_count.should == 4
54
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap.xml.gz')
55
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap1.xml.gz')
56
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap_en.xml.gz')
57
+ end
58
+
59
+ it "should rollover when sitemaps are full" do
60
+ with_max_links(1) {
61
+ linkset.include_index = false
62
+ linkset.include_root = false
63
+ linkset.create do
64
+ add '/before'
65
+ group(:filename => :sitemap_en, :sitemaps_path => 'en/') do
66
+ add '/one'
67
+ add '/two'
68
+ end
69
+ add '/after'
70
+ end
71
+ }
72
+ linkset.link_count.should == 4
73
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap.xml.gz')
74
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap1.xml.gz')
75
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap2.xml.gz')
76
+ file_should_not_exist(SitemapGenerator.app.root + 'public/sitemap3.xml.gz')
77
+ file_should_exist(SitemapGenerator.app.root + 'public/en/sitemap_en.xml.gz')
78
+ file_should_exist(SitemapGenerator.app.root + 'public/en/sitemap_en1.xml.gz')
79
+ file_should_not_exist(SitemapGenerator.app.root + 'public/en/sitemap_en2.xml.gz')
80
+ end
81
+
82
+ it "should support multiple groups" do
83
+ linkset.create do
84
+ group(:filename => :sitemap_en, :sitemaps_path => 'en/') do
85
+ add '/one'
86
+ end
87
+ group(:filename => :sitemap_fr, :sitemaps_path => 'fr/') do
88
+ add '/one'
89
+ end
90
+ end
91
+ linkset.link_count.should == 2
92
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap.xml.gz')
93
+ file_should_exist(SitemapGenerator.app.root + 'public/en/sitemap_en.xml.gz')
94
+ file_should_exist(SitemapGenerator.app.root + 'public/fr/sitemap_fr.xml.gz')
95
+ end
96
+
97
+ it "the sitemap shouldn't be finalized until the end if the groups don't conflict" do
98
+ linkset.create do
99
+ add 'one'
100
+ group(:filename => :first) { add '/two' }
101
+ add 'three'
102
+ group(:filename => :second) { add '/four' }
103
+ add 'five'
104
+ end
105
+ linkset.link_count.should == 6
106
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap.xml.gz')
107
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap1.xml.gz')
108
+ file_should_exist(SitemapGenerator.app.root + 'public/first.xml.gz')
109
+ file_should_exist(SitemapGenerator.app.root + 'public/second.xml.gz')
110
+ gzipped_xml_file_should_validate_against_schema(SitemapGenerator.app.root + 'public/sitemap.xml.gz', 'siteindex')
111
+ gzipped_xml_file_should_validate_against_schema(SitemapGenerator.app.root + 'public/sitemap1.xml.gz', 'sitemap')
112
+ end
113
+
114
+ it "groups should share the sitemap if the sitemap location is unchanged" do
115
+ linkset.create do
116
+ add 'one'
117
+ group(:default_host => 'http://newhost.com') { add '/two' }
118
+ add 'three'
119
+ group(:default_host => 'http://betterhost.com') { add '/four' }
120
+ add 'five'
121
+ end
122
+ linkset.link_count.should == 6
123
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap.xml.gz')
124
+ file_should_not_exist(SitemapGenerator.app.root + 'public/sitemap1.xml.gz')
125
+ gzipped_xml_file_should_validate_against_schema(SitemapGenerator.app.root + 'public/sitemap.xml.gz', 'sitemap')
126
+ end
127
+
128
+ it "sitemaps should be finalized if virtual location settings are changed" do
129
+ linkset.create do
130
+ add 'one'
131
+ group(:sitemaps_path => :en) { add '/two' }
132
+ add 'three'
133
+ group(:sitemaps_host => 'http://newhost.com') { add '/four' }
134
+ add 'five'
135
+ end
136
+ linkset.link_count.should == 6
137
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap.xml.gz')
138
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap1.xml.gz')
139
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap2.xml.gz')
140
+ file_should_exist(SitemapGenerator.app.root + 'public/sitemap3.xml.gz')
141
+ file_should_not_exist(SitemapGenerator.app.root + 'public/sitemap4.xml.gz')
142
+ file_should_exist(SitemapGenerator.app.root + 'public/en/sitemap.xml.gz')
143
+ end
144
+ end
@@ -0,0 +1,210 @@
1
+ require 'spec_helper'
2
+
3
+ describe SitemapGenerator::SitemapLocation do
4
+ let(:default_host) { 'http://example.com' }
5
+ let(:location) { SitemapGenerator::SitemapLocation.new }
6
+
7
+ it "public_path should default to the public directory in the application root" do
8
+ location.public_path.should == SitemapGenerator.app.root + 'public/'
9
+ end
10
+
11
+ it "should have a default namer" do
12
+ location[:namer].should_not be_nil
13
+ location[:filename].should be_nil
14
+ location.filename.should == 'sitemap1.xml.gz'
15
+ end
16
+
17
+ it "should require a filename" do
18
+ location[:filename] = nil
19
+ lambda {
20
+ location.filename.should be_nil
21
+ }.should raise_error
22
+ end
23
+
24
+ it "should require a namer" do
25
+ location[:namer] = nil
26
+ lambda {
27
+ location.filename.should be_nil
28
+ }.should raise_error
29
+ end
30
+
31
+ it "should require a host" do
32
+ location = SitemapGenerator::SitemapLocation.new(:filename => nil, :namer => nil)
33
+ lambda {
34
+ location.host.should be_nil
35
+ }.should raise_error
36
+ end
37
+
38
+ it "should accept a Namer option" do
39
+ @namer = SitemapGenerator::SimpleNamer.new(:xxx)
40
+ location = SitemapGenerator::SitemapLocation.new(:namer => @namer)
41
+ location.filename.should == @namer.to_s
42
+ end
43
+
44
+ it "should protect the filename from further changes in the Namer" do
45
+ @namer = SitemapGenerator::SimpleNamer.new(:xxx)
46
+ location = SitemapGenerator::SitemapLocation.new(:namer => @namer)
47
+ location.filename.should == @namer.to_s
48
+ @namer.next
49
+ location.filename.should == @namer.previous.to_s
50
+ end
51
+
52
+ it "should allow changing the namer" do
53
+ @namer1 = SitemapGenerator::SimpleNamer.new(:xxx)
54
+ location = SitemapGenerator::SitemapLocation.new(:namer => @namer1)
55
+ location.filename.should == @namer1.to_s
56
+ @namer2 = SitemapGenerator::SimpleNamer.new(:yyy)
57
+ location[:namer] = @namer2
58
+ location.filename.should == @namer2.to_s
59
+ end
60
+
61
+ describe "testing options and #with" do
62
+
63
+ # Array of tuples with instance options and expected method return values
64
+ tests = [
65
+ [{
66
+ :sitemaps_path => nil,
67
+ :public_path => '/public',
68
+ :filename => 'sitemap.xml.gz',
69
+ :host => 'http://test.com' },
70
+ { :url => 'http://test.com/sitemap.xml.gz',
71
+ :directory => '/public',
72
+ :path => '/public/sitemap.xml.gz',
73
+ :path_in_public => 'sitemap.xml.gz'
74
+ }],
75
+ [{
76
+ :sitemaps_path => 'sitemaps/en/',
77
+ :public_path => '/public/system/',
78
+ :filename => 'sitemap.xml.gz',
79
+ :host => 'http://test.com/plus/extra/' },
80
+ { :url => 'http://test.com/plus/extra/sitemaps/en/sitemap.xml.gz',
81
+ :directory => '/public/system/sitemaps/en',
82
+ :path => '/public/system/sitemaps/en/sitemap.xml.gz',
83
+ :path_in_public => 'sitemaps/en/sitemap.xml.gz'
84
+ }]
85
+ ]
86
+ tests.each do |opts, returns|
87
+ returns.each do |method, value|
88
+ it "#{method} should return #{value}" do
89
+ location.with(opts).send(method).should == value
90
+ end
91
+ end
92
+ end
93
+ end
94
+
95
+ describe "when duplicated" do
96
+ it "should not inherit some objects" do
97
+ location = SitemapGenerator::SitemapLocation.new(:filename => 'xxx', :host => default_host, :public_path => 'public/')
98
+ location.url.should == default_host+'/xxx'
99
+ location.public_path.to_s.should == 'public/'
100
+ dup = location.dup
101
+ dup.url.should == location.url
102
+ dup.url.should_not be(location.url)
103
+ dup.public_path.to_s.should == location.public_path.to_s
104
+ dup.public_path.should_not be(location.public_path)
105
+ end
106
+ end
107
+
108
+ describe "filesize" do
109
+ it "should read the size of the file at path" do
110
+ location.expects(:path).returns('/somepath')
111
+ File.expects(:size?).with('/somepath')
112
+ location.filesize
113
+ end
114
+ end
115
+
116
+ describe "public_path" do
117
+ it "should append a trailing slash" do
118
+ location = SitemapGenerator::SitemapLocation.new(:public_path => 'public/google')
119
+ location.public_path.to_s.should == 'public/google/'
120
+ location[:public_path] = 'new/path'
121
+ location.public_path.to_s.should == 'new/path/'
122
+ location[:public_path] = 'already/slashed/'
123
+ location.public_path.to_s.should == 'already/slashed/'
124
+ end
125
+ end
126
+
127
+ describe "sitemaps_path" do
128
+ it "should append a trailing slash" do
129
+ location = SitemapGenerator::SitemapLocation.new(:sitemaps_path => 'public/google')
130
+ location.sitemaps_path.to_s.should == 'public/google/'
131
+ location[:sitemaps_path] = 'new/path'
132
+ location.sitemaps_path.to_s.should == 'new/path/'
133
+ location[:sitemaps_path] = 'already/slashed/'
134
+ location.sitemaps_path.to_s.should == 'already/slashed/'
135
+ end
136
+ end
137
+
138
+ describe "url" do
139
+ it "should handle paths not ending in slash" do
140
+ location = SitemapGenerator::SitemapLocation.new(
141
+ :public_path => 'public/google', :filename => 'xxx',
142
+ :host => default_host, :sitemaps_path => 'sub/dir')
143
+ location.url.should == default_host + '/sub/dir/xxx'
144
+ end
145
+ end
146
+
147
+ describe "write" do
148
+ it "should output summary line when verbose" do
149
+ location = SitemapGenerator::SitemapLocation.new(:public_path => 'public/', :verbose => true)
150
+ location.adapter.stubs(:write)
151
+ location.expects(:summary)
152
+ location.write('data', 1)
153
+ end
154
+
155
+ it "should not output summary line when not verbose" do
156
+ location = SitemapGenerator::SitemapLocation.new(:public_path => 'public/', :verbose => false)
157
+ location.adapter.stubs(:write)
158
+ location.expects(:summary).never
159
+ location.write('data', 1)
160
+ end
161
+ end
162
+
163
+ describe "filename" do
164
+ it "should strip gz extension if not compressing" do
165
+ location = SitemapGenerator::SitemapLocation.new(:namer => SitemapGenerator::SimpleNamer.new(:sitemap), :compress => false)
166
+ location.filename.should == 'sitemap.xml'
167
+ end
168
+
169
+ it "should not strip gz extension if compressing" do
170
+ location = SitemapGenerator::SitemapLocation.new(:namer => SitemapGenerator::SimpleNamer.new(:sitemap), :compress => true)
171
+ location.filename.should == 'sitemap.xml.gz'
172
+ end
173
+
174
+ it "should strip gz extension if :all_but_first and first file" do
175
+ namer = SitemapGenerator::SimpleNamer.new(:sitemap)
176
+ namer.stubs(:start?).returns(true)
177
+ location = SitemapGenerator::SitemapLocation.new(:namer => namer, :compress => :all_but_first)
178
+ location.filename.should == 'sitemap.xml'
179
+ end
180
+
181
+ it "should strip gz extension if :all_but_first and first file" do
182
+ namer = SitemapGenerator::SimpleNamer.new(:sitemap)
183
+ namer.stubs(:start?).returns(false)
184
+ location = SitemapGenerator::SitemapLocation.new(:namer => namer, :compress => :all_but_first)
185
+ location.filename.should == 'sitemap.xml.gz'
186
+ end
187
+ end
188
+
189
+ describe "when not compressing" do
190
+ it "the URL should point to the uncompressed file" do
191
+ location = SitemapGenerator::SitemapLocation.new(
192
+ :namer => SitemapGenerator::SimpleNamer.new(:sitemap),
193
+ :host => 'http://example.com',
194
+ :compress => false
195
+ )
196
+ location.url.should == 'http://example.com/sitemap.xml'
197
+ end
198
+ end
199
+ end
200
+
201
+ describe SitemapGenerator::SitemapIndexLocation do
202
+ let(:location) { SitemapGenerator::SitemapIndexLocation.new }
203
+
204
+ it "should have a default namer" do
205
+ location = SitemapGenerator::SitemapIndexLocation.new
206
+ location[:namer].should_not be_nil
207
+ location[:filename].should be_nil
208
+ location.filename.should == 'sitemap.xml.gz'
209
+ end
210
+ end
@@ -0,0 +1,96 @@
1
+ require 'spec_helper'
2
+
3
+ describe SitemapGenerator::SimpleNamer do
4
+ it "should generate file names" do
5
+ namer = SitemapGenerator::SimpleNamer.new(:sitemap)
6
+ namer.to_s.should == "sitemap.xml.gz"
7
+ namer.next.to_s.should == "sitemap1.xml.gz"
8
+ namer.next.to_s.should == "sitemap2.xml.gz"
9
+ end
10
+
11
+ it "should set the file extension" do
12
+ namer = SitemapGenerator::SimpleNamer.new(:sitemap, :extension => '.xyz')
13
+ namer.to_s.should == "sitemap.xyz"
14
+ namer.next.to_s.should == "sitemap1.xyz"
15
+ namer.next.to_s.should == "sitemap2.xyz"
16
+ end
17
+
18
+ it "should set the starting index" do
19
+ namer = SitemapGenerator::SimpleNamer.new(:sitemap, :start => 10)
20
+ namer.to_s.should == "sitemap.xml.gz"
21
+ namer.next.to_s.should == "sitemap10.xml.gz"
22
+ namer.next.to_s.should == "sitemap11.xml.gz"
23
+ end
24
+
25
+ it "should accept a string name" do
26
+ namer = SitemapGenerator::SimpleNamer.new('abc-def')
27
+ namer.to_s.should == "abc-def.xml.gz"
28
+ namer.next.to_s.should == "abc-def1.xml.gz"
29
+ namer.next.to_s.should == "abc-def2.xml.gz"
30
+ end
31
+
32
+ it "should return previous name" do
33
+ namer = SitemapGenerator::SimpleNamer.new(:sitemap)
34
+ namer.to_s.should == "sitemap.xml.gz"
35
+ namer.next.to_s.should == "sitemap1.xml.gz"
36
+ namer.previous.to_s.should == "sitemap.xml.gz"
37
+ namer.next.next.to_s.should == "sitemap2.xml.gz"
38
+ namer.previous.to_s.should == "sitemap1.xml.gz"
39
+ namer.next.next.to_s.should == "sitemap3.xml.gz"
40
+ namer.previous.to_s.should == "sitemap2.xml.gz"
41
+ end
42
+
43
+ it "should raise if already at the start" do
44
+ namer = SitemapGenerator::SimpleNamer.new(:sitemap)
45
+ namer.to_s.should == "sitemap.xml.gz"
46
+ lambda { namer.previous }.should raise_error
47
+ end
48
+
49
+ it "should handle names with underscores" do
50
+ namer = SitemapGenerator::SimpleNamer.new("sitemap1_")
51
+ namer.to_s.should == "sitemap1_.xml.gz"
52
+ namer.next.to_s.should == "sitemap1_1.xml.gz"
53
+ end
54
+
55
+ it "should reset the namer" do
56
+ namer = SitemapGenerator::SimpleNamer.new(:sitemap)
57
+ namer.to_s.should == "sitemap.xml.gz"
58
+ namer.next.to_s.should == "sitemap1.xml.gz"
59
+ namer.reset
60
+ namer.to_s.should == "sitemap.xml.gz"
61
+ namer.next.to_s.should == "sitemap1.xml.gz"
62
+ end
63
+
64
+ describe "should handle the zero option" do
65
+ it "as a string" do
66
+ namer = SitemapGenerator::SimpleNamer.new(:sitemap, :zero => "string")
67
+ namer.to_s.should == "sitemapstring.xml.gz"
68
+ namer.next.to_s.should == "sitemap1.xml.gz"
69
+ end
70
+
71
+ it "as an integer" do
72
+ namer = SitemapGenerator::SimpleNamer.new(:sitemap, :zero => 0)
73
+ namer.to_s.should == "sitemap0.xml.gz"
74
+ namer.next.to_s.should == "sitemap1.xml.gz"
75
+ end
76
+
77
+ it "as a string" do
78
+ namer = SitemapGenerator::SimpleNamer.new(:sitemap, :zero => "_index")
79
+ namer.to_s.should == "sitemap_index.xml.gz"
80
+ namer.next.to_s.should == "sitemap1.xml.gz"
81
+ end
82
+
83
+ it "as a symbol" do
84
+ namer = SitemapGenerator::SimpleNamer.new(:sitemap, :zero => :index)
85
+ namer.to_s.should == "sitemapindex.xml.gz"
86
+ namer.next.to_s.should == "sitemap1.xml.gz"
87
+ end
88
+
89
+ it "with a starting index" do
90
+ namer = SitemapGenerator::SimpleNamer.new(:sitemap, :zero => 'abc', :start => 10)
91
+ namer.to_s.should == "sitemapabc.xml.gz"
92
+ namer.next.to_s.should == "sitemap10.xml.gz"
93
+ namer.next.to_s.should == "sitemap11.xml.gz"
94
+ end
95
+ end
96
+ end