sitemap_generator 3.0.0 → 3.1.0
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.
- data/Gemfile.lock +1 -1
- data/README.md +57 -1
- data/VERSION +1 -1
- data/lib/sitemap_generator.rb +1 -1
- data/lib/sitemap_generator/builder/sitemap_index_url.rb +1 -1
- data/lib/sitemap_generator/builder/sitemap_url.rb +1 -0
- data/lib/sitemap_generator/interpreter.rb +13 -2
- data/lib/sitemap_generator/link_set.rb +26 -9
- data/spec/sitemap_generator/interpreter_spec.rb +66 -0
- data/spec/sitemap_generator/link_set_spec.rb +266 -181
- data/spec/sitemap_generator/sitemap_generator_spec.rb +19 -16
- metadata +12 -12
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -36,6 +36,7 @@ Create `sitemap.rb`:
|
|
36
36
|
add '/home', :changefreq => 'daily', :priority => 0.9
|
37
37
|
add '/contact_us', :changefreq => 'weekly'
|
38
38
|
end
|
39
|
+
SitemapGenerator::Sitemap.ping_search_engines # called for you when you use the rake task
|
39
40
|
|
40
41
|
Run it:
|
41
42
|
|
@@ -48,6 +49,11 @@ Output:
|
|
48
49
|
+ sitemap_index.xml.gz 1 sitemaps / 228 Bytes
|
49
50
|
Sitemap stats: 4 links / 1 sitemaps / 0m00s
|
50
51
|
|
52
|
+
Successful ping of Google
|
53
|
+
Successful ping of Ask
|
54
|
+
Successful ping of Bing
|
55
|
+
Successful ping of Sitemap Writer
|
56
|
+
|
51
57
|
Contribute
|
52
58
|
-------
|
53
59
|
|
@@ -58,6 +64,7 @@ Does your website use SitemapGenerator to generate Sitemaps? Where would you be
|
|
58
64
|
Changelog
|
59
65
|
-------
|
60
66
|
|
67
|
+
- v3.1.0: Add `add_to_index` method to add links to the sitemap index. Add `sitemap` method for accessing the LinkSet instance from within `create()`. Don't modify options hashes passed to methods. Fix and improve `yield_sitemap` option handling.
|
61
68
|
- **v3.0.0: Framework agnostic**; fix alignment in output, show directory sitemaps are being generated into, only show sitemap compressed file size; toggle output using VERBOSE environment variable; remove tasks/ directory because it's deprecated in Rails 2; Simplify dependencies.
|
62
69
|
- v2.2.1: Support adding new search engines to ping and modifying the default search engines.
|
63
70
|
Allow the URL of the sitemap index to be passed as an argument to `ping_search_engines`. See **Pinging Search Engines**.
|
@@ -450,7 +457,7 @@ You can read more about `add` in the [XML Specification](http://sitemaps.org/pro
|
|
450
457
|
|
451
458
|
Host to use when building the URL. Example:
|
452
459
|
|
453
|
-
add '/login', :host => 'https://securehost.com
|
460
|
+
add '/login', :host => 'https://securehost.com'
|
454
461
|
|
455
462
|
* `priority` - Default: `0.5` (Float).
|
456
463
|
|
@@ -458,6 +465,55 @@ You can read more about `add` in the [XML Specification](http://sitemaps.org/pro
|
|
458
465
|
|
459
466
|
add '/about', :priority => 0.75
|
460
467
|
|
468
|
+
Adding Links to the Sitemap Index
|
469
|
+
----------
|
470
|
+
|
471
|
+
Sometimes you may need to manually add some links to the sitemap index file. For example if you are generating your sitemaps incrementally you may want to create a sitemap index which includes the files which have already been generated. To achieve this you can use the `add_to_index` method which works exactly the same as the `add` method described above.
|
472
|
+
|
473
|
+
It supports the same options as `add`, namely:
|
474
|
+
|
475
|
+
* `changefreq`
|
476
|
+
* `lastmod`
|
477
|
+
* `host`
|
478
|
+
|
479
|
+
The value for `host` defaults to whatever you have set as your `sitemaps_host`. Remember that the `sitemaps_host` is the host where your sitemaps reside. If your sitemaps are on the same host as your `default_host`, then the value for `default_host` is used. Example:
|
480
|
+
|
481
|
+
add_to_index '/mysitemap1.xml.gz', :host => 'http://sitemaphostingserver.com'
|
482
|
+
|
483
|
+
* `priority`
|
484
|
+
|
485
|
+
An example:
|
486
|
+
|
487
|
+
SitemapGenerator::Sitemap.default_host = "http://www.example.com"
|
488
|
+
SitemapGenerator::Sitemap.create do
|
489
|
+
add_to_index '/mysitemap1.xml.gz'
|
490
|
+
add_to_index '/mysitemap2.xml.gz'
|
491
|
+
...
|
492
|
+
end
|
493
|
+
|
494
|
+
Accessing the LinkSet instance
|
495
|
+
----------
|
496
|
+
|
497
|
+
Sometimes you need to mess with the internals to do custom stuff. If you need access to the LinkSet instance from within `create()` you can use the `sitemap` method to do so.
|
498
|
+
|
499
|
+
In this example, say we have already pre-generated three sitemap files: `sitemap1.xml.gz`, `sitemap2.xml.gz`, `sitemap3.xml.gz`. Now we want to start the sitemap generation at `sitemap4.xml.gz` and create a bunch of new sitemaps. There are a few ways we can do this, but this is an easy way:
|
500
|
+
|
501
|
+
SitemapGenerator::Sitemap.default_host = "http://www.example.com"
|
502
|
+
SitemapGenerator::Sitemap.create do
|
503
|
+
3.times do |i|
|
504
|
+
add_to_index sitemap.sitemaps_namer.to_s
|
505
|
+
sitemap.sitemaps_namer.next
|
506
|
+
end
|
507
|
+
add '/home'
|
508
|
+
add '/another'
|
509
|
+
end
|
510
|
+
|
511
|
+
The output looks something like this:
|
512
|
+
|
513
|
+
In /Users/karl/projects/sitemap_generator-test/public/
|
514
|
+
+ sitemap4.xml.gz 4 links / 347 Bytes
|
515
|
+
+ sitemap_index.xml.gz 4 sitemaps / 242 Bytes
|
516
|
+
Sitemap stats: 4 links / 4 sitemaps / 0m00s
|
461
517
|
|
462
518
|
Speeding Things Up
|
463
519
|
----------
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.1.0
|
data/lib/sitemap_generator.rb
CHANGED
@@ -61,7 +61,7 @@ module SitemapGenerator
|
|
61
61
|
|
62
62
|
# Returns true if we should yield the sitemap instance to the block, false otherwise.
|
63
63
|
def self.yield_sitemap?
|
64
|
-
!!@
|
64
|
+
!!@yield_sitemap
|
65
65
|
end
|
66
66
|
|
67
67
|
self.root = File.expand_path(File.join(File.dirname(__FILE__), '../')) # Root of the install dir, not the Rails app
|
@@ -6,7 +6,7 @@ module SitemapGenerator
|
|
6
6
|
|
7
7
|
def initialize(path, options={})
|
8
8
|
if index = path.is_a?(SitemapGenerator::Builder::SitemapIndexFile) && path
|
9
|
-
SitemapGenerator::Utilities.reverse_merge
|
9
|
+
options = SitemapGenerator::Utilities.reverse_merge(options, :host => index.location.host, :lastmod => Time.now, :changefreq => 'always', :priority => 1.0)
|
10
10
|
path = index.location.path_in_public
|
11
11
|
super(path, options)
|
12
12
|
else
|
@@ -27,6 +27,7 @@ module SitemapGenerator
|
|
27
27
|
# * +geo+
|
28
28
|
# * +news+
|
29
29
|
def initialize(path, options={})
|
30
|
+
options = options.dup
|
30
31
|
if sitemap = path.is_a?(SitemapGenerator::Builder::SitemapFile) && path
|
31
32
|
SitemapGenerator::Utilities.reverse_merge!(options, :host => sitemap.location.host, :lastmod => sitemap.lastmod)
|
32
33
|
path = sitemap.location.path_in_public
|
@@ -21,7 +21,7 @@ module SitemapGenerator
|
|
21
21
|
#
|
22
22
|
# All other options are passed to the LinkSet by setting them using accessor methods.
|
23
23
|
def initialize(opts={}, &block)
|
24
|
-
SitemapGenerator::Utilities.reverse_merge
|
24
|
+
opts = SitemapGenerator::Utilities.reverse_merge(opts, :link_set => SitemapGenerator::Sitemap)
|
25
25
|
@linkset = opts.delete :link_set
|
26
26
|
@linkset.send(:set_options, opts)
|
27
27
|
eval(&block) if block_given?
|
@@ -31,6 +31,10 @@ module SitemapGenerator
|
|
31
31
|
@linkset.add(*args)
|
32
32
|
end
|
33
33
|
|
34
|
+
def add_to_index(*args)
|
35
|
+
@linkset.add_to_index(*args)
|
36
|
+
end
|
37
|
+
|
34
38
|
# Start a new group of sitemaps. Any of the options to SitemapGenerator.new may
|
35
39
|
# be passed. Pass a block with calls to +add+ to add links to the sitemaps.
|
36
40
|
#
|
@@ -39,12 +43,18 @@ module SitemapGenerator
|
|
39
43
|
@linkset.group(*args, &block)
|
40
44
|
end
|
41
45
|
|
46
|
+
# Return the LinkSet instance so that you can access it from within the `create` block
|
47
|
+
# without having to use the yield_sitemap option.
|
48
|
+
def sitemap
|
49
|
+
@linkset
|
50
|
+
end
|
51
|
+
|
42
52
|
# Evaluate the block in the interpreter. Pass :yield_sitemap => true to
|
43
53
|
# yield the Interpreter instance to the block...for old-style calling.
|
44
54
|
def eval(opts={}, &block)
|
45
55
|
if block_given?
|
46
56
|
if opts[:yield_sitemap]
|
47
|
-
yield
|
57
|
+
yield @linkset
|
48
58
|
else
|
49
59
|
instance_eval(&block)
|
50
60
|
end
|
@@ -59,6 +69,7 @@ module SitemapGenerator
|
|
59
69
|
# Default is config/sitemap.rb in your application's root directory.
|
60
70
|
# All other options are passed to +new+.
|
61
71
|
def self.run(opts={}, &block)
|
72
|
+
opts = opts.dup
|
62
73
|
config_file = opts.delete(:config_file)
|
63
74
|
config_file ||= SitemapGenerator.app.root + 'config/sitemap.rb'
|
64
75
|
interpreter = self.new(opts)
|
@@ -8,7 +8,7 @@ module SitemapGenerator
|
|
8
8
|
@@new_location_opts = [:filename, :sitemaps_path, :sitemaps_namer]
|
9
9
|
|
10
10
|
attr_reader :default_host, :sitemaps_path, :filename
|
11
|
-
attr_accessor :verbose, :yahoo_app_id, :include_root, :include_index, :sitemaps_host, :adapter
|
11
|
+
attr_accessor :verbose, :yahoo_app_id, :include_root, :include_index, :sitemaps_host, :adapter, :yield_sitemap
|
12
12
|
|
13
13
|
# Create a new sitemap index and sitemap files. Pass a block calls to the following
|
14
14
|
# methods:
|
@@ -36,7 +36,7 @@ module SitemapGenerator
|
|
36
36
|
start_time = Time.now
|
37
37
|
puts "In #{sitemap_index.location.public_path}"
|
38
38
|
end
|
39
|
-
interpreter.eval(:yield_sitemap =>
|
39
|
+
interpreter.eval(:yield_sitemap => yield_sitemap?, &block)
|
40
40
|
finalize!
|
41
41
|
end_time = Time.now if verbose
|
42
42
|
output(sitemap_index.stats_summary(:time_taken => end_time - start_time)) if verbose
|
@@ -45,9 +45,10 @@ module SitemapGenerator
|
|
45
45
|
|
46
46
|
# Dreprecated. Use create.
|
47
47
|
def add_links(&block)
|
48
|
+
original_value = @yield_sitemap
|
48
49
|
@yield_sitemap = true
|
49
50
|
create(&block)
|
50
|
-
@yield_sitemap =
|
51
|
+
@yield_sitemap = original_value
|
51
52
|
end
|
52
53
|
|
53
54
|
# Constructor
|
@@ -99,7 +100,7 @@ module SitemapGenerator
|
|
99
100
|
# * <tt>:verbose</tt> - If +true+, output a summary line for each sitemap and sitemap
|
100
101
|
# index that is created. Default is +false+.
|
101
102
|
def initialize(options={})
|
102
|
-
SitemapGenerator::Utilities.reverse_merge
|
103
|
+
options = SitemapGenerator::Utilities.reverse_merge(options,
|
103
104
|
:include_root => true,
|
104
105
|
:include_index => true,
|
105
106
|
:filename => :sitemap,
|
@@ -127,7 +128,7 @@ module SitemapGenerator
|
|
127
128
|
# host - host for the link, defaults to your <tt>default_host</tt>.
|
128
129
|
def add(link, options={})
|
129
130
|
add_default_links if !@added_default_links
|
130
|
-
sitemap.add(link, SitemapGenerator::Utilities.reverse_merge
|
131
|
+
sitemap.add(link, SitemapGenerator::Utilities.reverse_merge(options, :host => @default_host))
|
131
132
|
rescue SitemapGenerator::SitemapFullError
|
132
133
|
finalize_sitemap!
|
133
134
|
retry
|
@@ -136,6 +137,16 @@ module SitemapGenerator
|
|
136
137
|
retry
|
137
138
|
end
|
138
139
|
|
140
|
+
# Add a link to the Sitemap Index.
|
141
|
+
# * link - A string link e.g. '/sitemaps/sitemap1.xml.gz' or a SitemapFile instance.
|
142
|
+
# * options - A hash of options including `:lastmod`, ':priority`, ':changefreq` and `:host`
|
143
|
+
#
|
144
|
+
# The `:host` option defaults to the value of `sitemaps_host` which is the host where your
|
145
|
+
# sitemaps reside. If no `sitemaps_host` is set, the `default_host` is used.
|
146
|
+
def add_to_index(link, options={})
|
147
|
+
sitemap_index.add(link, SitemapGenerator::Utilities.reverse_merge(options, :host => sitemaps_host))
|
148
|
+
end
|
149
|
+
|
139
150
|
# Create a new group of sitemap files.
|
140
151
|
#
|
141
152
|
# Returns a new LinkSet instance with the options passed in set on it. All groups
|
@@ -310,6 +321,11 @@ module SitemapGenerator
|
|
310
321
|
@verbose
|
311
322
|
end
|
312
323
|
|
324
|
+
# Return a boolean indicating whether or not to yield the sitemap.
|
325
|
+
def yield_sitemap?
|
326
|
+
@yield_sitemap.nil? ? SitemapGenerator.yield_sitemap? : !!@yield_sitemap
|
327
|
+
end
|
328
|
+
|
313
329
|
protected
|
314
330
|
|
315
331
|
# Set each option on this instance using accessor methods. This will affect
|
@@ -318,6 +334,7 @@ module SitemapGenerator
|
|
318
334
|
# If both `filename` and `sitemaps_namer` are passed, set filename first so it
|
319
335
|
# doesn't override the latter.
|
320
336
|
def set_options(opts={})
|
337
|
+
opts = opts.dup
|
321
338
|
%w(filename sitemaps_namer).each do |key|
|
322
339
|
if value = opts.delete(key.to_sym)
|
323
340
|
send("#{key}=", value)
|
@@ -332,12 +349,12 @@ module SitemapGenerator
|
|
332
349
|
# If <tt>:public_path</tt> is present in +opts+ it is removed because groups cannot
|
333
350
|
# change the public path.
|
334
351
|
def options_for_group(opts)
|
335
|
-
opts.
|
336
|
-
SitemapGenerator::Utilities.reverse_merge!(opts,
|
352
|
+
opts = SitemapGenerator::Utilities.reverse_merge(opts,
|
337
353
|
:include_index => false,
|
338
354
|
:include_root => false,
|
339
355
|
:sitemap_index => sitemap_index
|
340
356
|
)
|
357
|
+
opts.delete(:public_path)
|
341
358
|
|
342
359
|
# Reverse merge the current settings
|
343
360
|
current_settings = [
|
@@ -384,7 +401,7 @@ module SitemapGenerator
|
|
384
401
|
def finalize_sitemap!
|
385
402
|
add_default_links if !@added_default_links && !@created_group
|
386
403
|
return if sitemap.finalized? || sitemap.empty? && @created_group
|
387
|
-
|
404
|
+
add_to_index(sitemap)
|
388
405
|
output(sitemap.summary)
|
389
406
|
end
|
390
407
|
|
@@ -543,7 +560,7 @@ module SitemapGenerator
|
|
543
560
|
# Update the given attribute on the current sitemap index and sitemap file location objects.
|
544
561
|
# But don't create the index or sitemap files yet if they are not already created.
|
545
562
|
def update_location_info(attribute, value, opts={})
|
546
|
-
SitemapGenerator::Utilities.reverse_merge
|
563
|
+
opts = SitemapGenerator::Utilities.reverse_merge(opts, :include_index => !@protect_index)
|
547
564
|
@sitemap_index.location[attribute] = value if opts[:include_index] && @sitemap_index && !@sitemap_index.finalized?
|
548
565
|
@sitemap.location[attribute] = value if @sitemap && !@sitemap.finalized?
|
549
566
|
end
|
@@ -2,6 +2,9 @@ require 'spec_helper'
|
|
2
2
|
require 'sitemap_generator/interpreter'
|
3
3
|
|
4
4
|
describe SitemapGenerator::Interpreter do
|
5
|
+
let(:link_set) { SitemapGenerator::LinkSet.new }
|
6
|
+
let(:interpreter) { SitemapGenerator::Interpreter.new(:link_set => link_set) }
|
7
|
+
|
5
8
|
# The interpreter doesn't have the URL helpers included for some reason, so it
|
6
9
|
# fails when adding links. That messes up later specs unless we reset the sitemap object.
|
7
10
|
after :all do
|
@@ -21,4 +24,67 @@ describe SitemapGenerator::Interpreter do
|
|
21
24
|
interpreter = SitemapGenerator::Interpreter.run(:verbose => true)
|
22
25
|
interpreter.instance_variable_get(:@linkset).verbose.should be_true
|
23
26
|
end
|
27
|
+
|
28
|
+
describe "link_set" do
|
29
|
+
it "should default to the default LinkSet" do
|
30
|
+
SitemapGenerator::Interpreter.new.sitemap.should be(SitemapGenerator::Sitemap)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should allow setting the LinkSet as an option" do
|
34
|
+
interpreter.sitemap.should be(link_set)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "public interface" do
|
39
|
+
describe "add" do
|
40
|
+
it "should add a link to the sitemap" do
|
41
|
+
link_set.expects(:add).with('test', :option => 'value')
|
42
|
+
interpreter.add('test', :option => 'value')
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "group" do
|
47
|
+
it "should start a new group" do
|
48
|
+
link_set.expects(:group).with('test', :option => 'value')
|
49
|
+
interpreter.group('test', :option => 'value')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "sitemap" do
|
54
|
+
it "should return the LinkSet" do
|
55
|
+
interpreter.sitemap.should be(link_set)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "add_to_index" do
|
60
|
+
it "should add a link to the sitemap index" do
|
61
|
+
link_set.expects(:add_to_index).with('test', :option => 'value')
|
62
|
+
interpreter.add_to_index('test', :option => 'value')
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "eval" do
|
68
|
+
it "should yield the LinkSet to the block" do
|
69
|
+
interpreter.eval(:yield_sitemap => true) do |sitemap|
|
70
|
+
sitemap.should be(link_set)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should not yield the LinkSet to the block" do
|
75
|
+
local = interpreter # prevent undefined method
|
76
|
+
local_be = self.method(:be) # prevent undefined method
|
77
|
+
local.eval(:yield_sitemap => false) do
|
78
|
+
self.should local_be.call(local)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should not yield the LinkSet to the block by default" do
|
83
|
+
local = interpreter # prevent undefined method
|
84
|
+
local_be = self.method(:be) # prevent undefined method
|
85
|
+
local.eval do
|
86
|
+
self.should local_be.call(local)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
24
90
|
end
|
@@ -1,10 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe SitemapGenerator::LinkSet do
|
4
|
-
|
5
|
-
|
6
|
-
@ls = SitemapGenerator::LinkSet.new
|
7
|
-
end
|
4
|
+
let(:default_host) { 'http://example.com' }
|
5
|
+
let(:ls) { SitemapGenerator::LinkSet.new(:default_host => default_host) }
|
8
6
|
|
9
7
|
describe "initializer options" do
|
10
8
|
options = [:public_path, :sitemaps_path, :default_host, :filename, :search_engines]
|
@@ -12,13 +10,15 @@ describe SitemapGenerator::LinkSet do
|
|
12
10
|
|
13
11
|
options.zip(values).each do |option, value|
|
14
12
|
it "should set #{option} to #{value}" do
|
15
|
-
|
16
|
-
|
13
|
+
ls = SitemapGenerator::LinkSet.new(option => value)
|
14
|
+
ls.send(option).should == value
|
17
15
|
end
|
18
16
|
end
|
19
17
|
end
|
20
18
|
|
21
19
|
describe "default options" do
|
20
|
+
let(:ls) { SitemapGenerator::LinkSet.new }
|
21
|
+
|
22
22
|
default_options = {
|
23
23
|
:filename => :sitemap,
|
24
24
|
:sitemaps_path => nil,
|
@@ -30,84 +30,84 @@ describe SitemapGenerator::LinkSet do
|
|
30
30
|
|
31
31
|
default_options.each do |option, value|
|
32
32
|
it "#{option} should default to #{value}" do
|
33
|
-
|
33
|
+
ls.send(option).should == value
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
describe "include_root include_index option" do
|
39
39
|
it "should not include the root url" do
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
40
|
+
ls = SitemapGenerator::LinkSet.new(:default_host => default_host, :include_root => false)
|
41
|
+
ls.include_root.should be_false
|
42
|
+
ls.include_index.should be_true
|
43
|
+
ls.add_links { |sitemap| }
|
44
|
+
ls.sitemap.link_count.should == 1
|
45
45
|
end
|
46
46
|
|
47
47
|
it "should not include the sitemap index url" do
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
48
|
+
ls = SitemapGenerator::LinkSet.new(:default_host => default_host, :include_index => false)
|
49
|
+
ls.include_root.should be_true
|
50
|
+
ls.include_index.should be_false
|
51
|
+
ls.add_links { |sitemap| }
|
52
|
+
ls.sitemap.link_count.should == 1
|
53
53
|
end
|
54
54
|
|
55
55
|
it "should not include the root url or the sitemap index url" do
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
56
|
+
ls = SitemapGenerator::LinkSet.new(:default_host => default_host, :include_root => false, :include_index => false)
|
57
|
+
ls.include_root.should be_false
|
58
|
+
ls.include_index.should be_false
|
59
|
+
ls.add_links { |sitemap| }
|
60
|
+
ls.sitemap.link_count.should == 0
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
64
|
describe "sitemaps public_path" do
|
65
65
|
it "should default to public/" do
|
66
|
-
|
67
|
-
|
68
|
-
|
66
|
+
ls.public_path.should == SitemapGenerator.app.root + 'public/'
|
67
|
+
ls.sitemap.location.public_path.should == ls.public_path
|
68
|
+
ls.sitemap_index.location.public_path.should == ls.public_path
|
69
69
|
end
|
70
70
|
|
71
71
|
it "should change when the public_path is changed" do
|
72
|
-
|
73
|
-
|
74
|
-
|
72
|
+
ls.public_path = 'tmp'
|
73
|
+
ls.sitemap.location.public_path.should == ls.public_path
|
74
|
+
ls.sitemap_index.location.public_path.should == ls.public_path
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
78
|
describe "sitemaps url" do
|
79
79
|
it "should change when the default_host is changed" do
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
80
|
+
ls.default_host = 'http://one.com'
|
81
|
+
ls.default_host.should == 'http://one.com'
|
82
|
+
ls.default_host.should == ls.sitemap.location.host
|
83
|
+
ls.default_host.should == ls.sitemap_index.location.host
|
84
84
|
end
|
85
85
|
|
86
86
|
it "should change when the sitemaps_path is changed" do
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
87
|
+
ls.default_host = 'http://one.com'
|
88
|
+
ls.sitemaps_path = 'sitemaps/'
|
89
|
+
ls.sitemap.location.url.should == 'http://one.com/sitemaps/sitemap1.xml.gz'
|
90
|
+
ls.sitemap_index.location.url.should == 'http://one.com/sitemaps/sitemap_index.xml.gz'
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
94
|
describe "sitemap_index_url" do
|
95
95
|
it "should return the url to the index file" do
|
96
|
-
|
97
|
-
|
98
|
-
|
96
|
+
ls.default_host = default_host
|
97
|
+
ls.sitemap_index.location.url.should == "#{default_host}/sitemap_index.xml.gz"
|
98
|
+
ls.sitemap_index_url.should == ls.sitemap_index.location.url
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
102
102
|
describe "search_engines" do
|
103
103
|
it "should have search engines by default" do
|
104
|
-
|
105
|
-
|
104
|
+
ls.search_engines.should be_a(Hash)
|
105
|
+
ls.search_engines.size.should == 4
|
106
106
|
end
|
107
107
|
|
108
108
|
it "should support being modified" do
|
109
|
-
|
110
|
-
|
109
|
+
ls.search_engines[:newengine] = 'abc'
|
110
|
+
ls.search_engines.size.should == 5
|
111
111
|
end
|
112
112
|
|
113
113
|
it "should support being set to nil" do
|
@@ -121,13 +121,9 @@ describe SitemapGenerator::LinkSet do
|
|
121
121
|
end
|
122
122
|
|
123
123
|
describe "ping search engines" do
|
124
|
-
before do
|
125
|
-
@ls = SitemapGenerator::LinkSet.new :default_host => 'http://one.com'
|
126
|
-
end
|
127
|
-
|
128
124
|
it "should not fail" do
|
129
|
-
|
130
|
-
lambda {
|
125
|
+
ls.expects(:open).at_least_once
|
126
|
+
lambda { ls.ping_search_engines }.should_not raise_error
|
131
127
|
end
|
132
128
|
|
133
129
|
it "should raise if no host is set" do
|
@@ -143,7 +139,7 @@ describe SitemapGenerator::LinkSet do
|
|
143
139
|
|
144
140
|
it "should use the sitemap index url from the link set" do
|
145
141
|
ls = SitemapGenerator::LinkSet.new(
|
146
|
-
:default_host =>
|
142
|
+
:default_host => default_host,
|
147
143
|
:search_engines => { :google => 'http://google.com/?url=%s' })
|
148
144
|
index_url = ls.sitemap_index_url
|
149
145
|
ls.expects(:open).with("http://google.com/?url=#{CGI.escape(index_url)}")
|
@@ -151,30 +147,26 @@ describe SitemapGenerator::LinkSet do
|
|
151
147
|
end
|
152
148
|
|
153
149
|
it "should include the given search engines" do
|
154
|
-
|
155
|
-
|
156
|
-
|
150
|
+
ls.search_engines = nil
|
151
|
+
ls.expects(:open).with(regexp_matches(/^http:\/\/newnegine\.com\?/))
|
152
|
+
ls.ping_search_engines(:newengine => 'http://newnegine.com?%s')
|
157
153
|
|
158
|
-
|
159
|
-
|
154
|
+
ls.expects(:open).with(regexp_matches(/^http:\/\/newnegine\.com\?/)).twice
|
155
|
+
ls.ping_search_engines(:newengine => 'http://newnegine.com?%s', :anotherengine => 'http://newnegine.com?%s')
|
160
156
|
end
|
161
157
|
end
|
162
158
|
|
163
159
|
describe "verbose" do
|
164
|
-
before do
|
165
|
-
@ls = SitemapGenerator::LinkSet.new(:default_host => 'http://one.com')
|
166
|
-
end
|
167
|
-
|
168
160
|
it "should be set as an initialize option" do
|
169
|
-
SitemapGenerator::LinkSet.new(:default_host =>
|
170
|
-
SitemapGenerator::LinkSet.new(:default_host =>
|
161
|
+
SitemapGenerator::LinkSet.new(:default_host => default_host, :verbose => false).verbose.should be_false
|
162
|
+
SitemapGenerator::LinkSet.new(:default_host => default_host, :verbose => true).verbose.should be_true
|
171
163
|
end
|
172
164
|
|
173
165
|
it "should be set as an accessor" do
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
166
|
+
ls.verbose = true
|
167
|
+
ls.verbose.should be_true
|
168
|
+
ls.verbose = false
|
169
|
+
ls.verbose.should be_false
|
178
170
|
end
|
179
171
|
|
180
172
|
it "should use SitemapGenerator.verbose as a default" do
|
@@ -182,54 +174,49 @@ describe SitemapGenerator::LinkSet do
|
|
182
174
|
SitemapGenerator::LinkSet.new.verbose.should be_true
|
183
175
|
SitemapGenerator.expects(:verbose).returns(false).at_least_once
|
184
176
|
SitemapGenerator::LinkSet.new.verbose.should be_false
|
185
|
-
end
|
177
|
+
end
|
186
178
|
end
|
187
179
|
|
188
180
|
describe "when finalizing" do
|
189
|
-
|
190
|
-
@ls = SitemapGenerator::LinkSet.new(:default_host => 'http://one.com', :verbose => true)
|
191
|
-
end
|
181
|
+
let(:ls) { SitemapGenerator::LinkSet.new(:default_host => default_host, :verbose => true) }
|
192
182
|
|
193
183
|
it "should output summary lines" do
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
184
|
+
ls.sitemap.expects(:finalize!)
|
185
|
+
ls.sitemap.expects(:summary)
|
186
|
+
ls.sitemap_index.expects(:finalize!)
|
187
|
+
ls.sitemap_index.expects(:summary)
|
188
|
+
ls.finalize!
|
199
189
|
end
|
200
190
|
end
|
201
191
|
|
202
192
|
describe "sitemaps host" do
|
203
|
-
|
204
|
-
@new_host = 'http://wowza.com'
|
205
|
-
@ls = SitemapGenerator::LinkSet.new(:default_host => @default_host)
|
206
|
-
end
|
193
|
+
let(:new_host) { 'http://wowza.com' }
|
207
194
|
|
208
195
|
it "should have a host" do
|
209
|
-
|
210
|
-
|
196
|
+
ls.default_host = default_host
|
197
|
+
ls.default_host.should == default_host
|
211
198
|
end
|
212
199
|
|
213
200
|
it "should default to default host" do
|
214
|
-
|
201
|
+
ls.sitemaps_host.should == ls.default_host
|
215
202
|
end
|
216
203
|
|
217
204
|
it "should update the host in the sitemaps when changed" do
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
205
|
+
ls.sitemaps_host = new_host
|
206
|
+
ls.sitemaps_host.should == new_host
|
207
|
+
ls.sitemap.location.host.should == ls.sitemaps_host
|
208
|
+
ls.sitemap_index.location.host.should == ls.sitemaps_host
|
222
209
|
end
|
223
210
|
|
224
211
|
it "should not change the default host for links" do
|
225
|
-
|
226
|
-
|
212
|
+
ls.sitemaps_host = new_host
|
213
|
+
ls.default_host.should == default_host
|
227
214
|
end
|
228
215
|
end
|
229
216
|
|
230
217
|
describe "with a sitemap index specified" do
|
231
218
|
before :each do
|
232
|
-
@index = SitemapGenerator::Builder::SitemapIndexFile.new(:host =>
|
219
|
+
@index = SitemapGenerator::Builder::SitemapIndexFile.new(:host => default_host)
|
233
220
|
@ls = SitemapGenerator::LinkSet.new(:sitemap_index => @index, :sitemaps_host => 'http://newhost.com')
|
234
221
|
end
|
235
222
|
|
@@ -242,7 +229,7 @@ describe SitemapGenerator::LinkSet do
|
|
242
229
|
it "should not modify the index" do
|
243
230
|
@ls.sitemaps_host = 'http://newhost.com'
|
244
231
|
@ls.sitemap.location.host.should == 'http://newhost.com'
|
245
|
-
@ls.sitemap_index.location.host.should ==
|
232
|
+
@ls.sitemap_index.location.host.should == default_host
|
246
233
|
end
|
247
234
|
|
248
235
|
it "should not finalize the index" do
|
@@ -252,55 +239,51 @@ describe SitemapGenerator::LinkSet do
|
|
252
239
|
end
|
253
240
|
|
254
241
|
describe "new group" do
|
255
|
-
before :each do
|
256
|
-
@ls = SitemapGenerator::LinkSet.new(:default_host => @default_host)
|
257
|
-
end
|
258
|
-
|
259
242
|
describe "general behaviour" do
|
260
243
|
it "should return a LinkSet" do
|
261
|
-
|
244
|
+
ls.group.should be_a(SitemapGenerator::LinkSet)
|
262
245
|
end
|
263
246
|
|
264
247
|
it "should inherit the index" do
|
265
|
-
|
248
|
+
ls.group.sitemap_index.should == ls.sitemap_index
|
266
249
|
end
|
267
250
|
|
268
251
|
it "should protect the sitemap_index" do
|
269
|
-
|
252
|
+
ls.group.instance_variable_get(:@protect_index).should be_true
|
270
253
|
end
|
271
254
|
|
272
255
|
it "should not allow chaning the public_path" do
|
273
|
-
|
256
|
+
ls.group(:public_path => 'new/path/').public_path.to_s.should == ls.public_path.to_s
|
274
257
|
end
|
275
258
|
end
|
276
259
|
|
277
260
|
describe "include_index" do
|
278
261
|
it "should set the value" do
|
279
|
-
|
262
|
+
ls.group(:include_index => !ls.include_index).include_index.should_not == ls.include_index
|
280
263
|
end
|
281
264
|
|
282
265
|
it "should default to false" do
|
283
|
-
|
266
|
+
ls.group.include_index.should be_false
|
284
267
|
end
|
285
268
|
end
|
286
269
|
|
287
270
|
describe "include_root" do
|
288
271
|
it "should set the value" do
|
289
|
-
|
272
|
+
ls.group(:include_root => !ls.include_root).include_root.should_not == ls.include_root
|
290
273
|
end
|
291
274
|
|
292
275
|
it "should default to false" do
|
293
|
-
|
276
|
+
ls.group.include_root.should be_false
|
294
277
|
end
|
295
278
|
end
|
296
279
|
|
297
280
|
describe "filename" do
|
298
281
|
it "should inherit the value" do
|
299
|
-
|
282
|
+
ls.group.filename.should == :sitemap
|
300
283
|
end
|
301
284
|
|
302
285
|
it "should set the value" do
|
303
|
-
group =
|
286
|
+
group = ls.group(:filename => :xxx)
|
304
287
|
group.filename.should == :xxx
|
305
288
|
group.sitemap.location.filename.should =~ /xxx/
|
306
289
|
end
|
@@ -308,24 +291,24 @@ describe SitemapGenerator::LinkSet do
|
|
308
291
|
|
309
292
|
describe "verbose" do
|
310
293
|
it "should inherit the value" do
|
311
|
-
|
294
|
+
ls.group.verbose.should == ls.verbose
|
312
295
|
end
|
313
296
|
|
314
297
|
it "should set the value" do
|
315
|
-
|
298
|
+
ls.group(:verbose => !ls.verbose).verbose.should_not == ls.verbose
|
316
299
|
end
|
317
300
|
end
|
318
301
|
|
319
302
|
describe "sitemaps_path" do
|
320
303
|
it "should inherit the sitemaps_path" do
|
321
|
-
group =
|
322
|
-
group.sitemaps_path.should ==
|
323
|
-
group.sitemap.location.sitemaps_path.should ==
|
304
|
+
group = ls.group
|
305
|
+
group.sitemaps_path.should == ls.sitemaps_path
|
306
|
+
group.sitemap.location.sitemaps_path.should == ls.sitemap.location.sitemaps_path
|
324
307
|
end
|
325
308
|
|
326
309
|
it "should set the sitemaps_path" do
|
327
310
|
path = 'new/path'
|
328
|
-
group =
|
311
|
+
group = ls.group(:sitemaps_path => path)
|
329
312
|
group.sitemaps_path.should == path
|
330
313
|
group.sitemap.location.sitemaps_path.to_s.should == path
|
331
314
|
end
|
@@ -333,12 +316,12 @@ describe SitemapGenerator::LinkSet do
|
|
333
316
|
|
334
317
|
describe "default_host" do
|
335
318
|
it "should inherit the default_host" do
|
336
|
-
|
319
|
+
ls.group.default_host.should == default_host
|
337
320
|
end
|
338
321
|
|
339
322
|
it "should set the default_host" do
|
340
323
|
host = 'http://defaulthost.com'
|
341
|
-
group =
|
324
|
+
group = ls.group(:default_host => host)
|
342
325
|
group.default_host.should == host
|
343
326
|
group.sitemap.location.host.should == host
|
344
327
|
end
|
@@ -347,31 +330,31 @@ describe SitemapGenerator::LinkSet do
|
|
347
330
|
describe "sitemaps_host" do
|
348
331
|
it "should set the sitemaps host" do
|
349
332
|
@host = 'http://sitemaphost.com'
|
350
|
-
@group =
|
333
|
+
@group = ls.group(:sitemaps_host => @host)
|
351
334
|
@group.sitemaps_host.should == @host
|
352
335
|
@group.sitemap.location.host.should == @host
|
353
336
|
end
|
354
337
|
|
355
338
|
it "should finalize the sitemap if it is the only option" do
|
356
|
-
|
357
|
-
|
339
|
+
ls.expects(:finalize_sitemap!)
|
340
|
+
ls.group(:sitemaps_host => 'http://test.com') {}
|
358
341
|
end
|
359
342
|
|
360
343
|
it "should use the same sitemaps_namer" do
|
361
|
-
@group =
|
362
|
-
@group.sitemap.location.namer.should ==
|
344
|
+
@group = ls.group(:sitemaps_host => 'http://test.com') {}
|
345
|
+
@group.sitemap.location.namer.should == ls.sitemap.location.namer
|
363
346
|
end
|
364
347
|
end
|
365
348
|
|
366
349
|
describe "sitemaps_namer" do
|
367
350
|
it "should inherit the value" do
|
368
|
-
|
369
|
-
|
351
|
+
ls.group.sitemaps_namer.should == ls.sitemaps_namer
|
352
|
+
ls.group.sitemap.location.namer.should == ls.sitemaps_namer
|
370
353
|
end
|
371
354
|
|
372
355
|
it "should set the value" do
|
373
356
|
namer = SitemapGenerator::SitemapNamer.new(:xxx)
|
374
|
-
group =
|
357
|
+
group = ls.group(:sitemaps_namer => namer)
|
375
358
|
group.sitemaps_namer.should == namer
|
376
359
|
group.sitemap.location.namer.should == namer
|
377
360
|
group.sitemap.location.filename.should =~ /xxx/
|
@@ -380,8 +363,8 @@ describe SitemapGenerator::LinkSet do
|
|
380
363
|
|
381
364
|
describe "should share the current sitemap" do
|
382
365
|
it "if only default_host is passed" do
|
383
|
-
group =
|
384
|
-
group.sitemap.should ==
|
366
|
+
group = ls.group(:default_host => 'http://newhost.com')
|
367
|
+
group.sitemap.should == ls.sitemap
|
385
368
|
group.sitemap.location.host.should == 'http://newhost.com'
|
386
369
|
end
|
387
370
|
end
|
@@ -394,26 +377,26 @@ describe SitemapGenerator::LinkSet do
|
|
394
377
|
:sitemaps_namer => SitemapGenerator::SitemapNamer.new(:sitemap)
|
395
378
|
}.each do |key, value|
|
396
379
|
it "if #{key} is present" do
|
397
|
-
|
380
|
+
ls.group(key => value).sitemap.should_not == ls.sitemap
|
398
381
|
end
|
399
382
|
end
|
400
383
|
end
|
401
384
|
|
402
385
|
describe "finalizing" do
|
403
386
|
it "should finalize the sitemaps if a block is passed" do
|
404
|
-
@group =
|
387
|
+
@group = ls.group
|
405
388
|
@group.sitemap.finalized?.should be_false
|
406
389
|
end
|
407
390
|
|
408
391
|
it "should only finalize the sitemaps if a block is passed" do
|
409
|
-
@group =
|
392
|
+
@group = ls.group
|
410
393
|
@group.sitemap.finalized?.should be_false
|
411
394
|
end
|
412
395
|
|
413
396
|
it "should not finalize the sitemap if a group is created" do
|
414
|
-
|
415
|
-
|
416
|
-
|
397
|
+
ls.create { group {} }
|
398
|
+
ls.sitemap.empty?.should be_true
|
399
|
+
ls.sitemap.finalized?.should be_false
|
417
400
|
end
|
418
401
|
|
419
402
|
{:sitemaps_path => 'en/',
|
@@ -421,86 +404,81 @@ describe SitemapGenerator::LinkSet do
|
|
421
404
|
:sitemaps_namer => SitemapGenerator::SitemapNamer.new(:sitemap)}.each do |k, v|
|
422
405
|
|
423
406
|
it "should not finalize the sitemap if #{k} is present" do
|
424
|
-
|
425
|
-
|
407
|
+
ls.expects(:finalize_sitemap!).never
|
408
|
+
ls.group(k => v) { }
|
426
409
|
end
|
427
410
|
end
|
428
411
|
end
|
429
412
|
end
|
430
413
|
|
431
414
|
describe "after create" do
|
432
|
-
before :each do
|
433
|
-
@ls = SitemapGenerator::LinkSet.new :default_host => @default_host
|
434
|
-
end
|
435
|
-
|
436
415
|
it "should finalize the sitemap index" do
|
437
|
-
|
438
|
-
|
416
|
+
ls.create {}
|
417
|
+
ls.sitemap_index.finalized?.should be_true
|
439
418
|
end
|
440
419
|
|
441
420
|
it "should finalize the sitemap" do
|
442
|
-
|
443
|
-
|
421
|
+
ls.create {}
|
422
|
+
ls.sitemap.finalized?.should be_true
|
444
423
|
end
|
445
424
|
|
446
425
|
it "should not finalize the sitemap if a group was created" do
|
447
|
-
|
448
|
-
|
449
|
-
|
426
|
+
ls.instance_variable_set(:@created_group, true)
|
427
|
+
ls.send(:finalize_sitemap!)
|
428
|
+
ls.sitemap.finalized?.should be_false
|
450
429
|
end
|
451
430
|
end
|
452
431
|
|
453
432
|
describe "options to create" do
|
454
433
|
before :each do
|
455
|
-
|
456
|
-
@ls.expects(:finalize!)
|
434
|
+
ls.stubs(:finalize!)
|
457
435
|
end
|
458
436
|
|
459
437
|
it "should set include_index" do
|
460
|
-
original =
|
461
|
-
|
438
|
+
original = ls.include_index
|
439
|
+
ls.create(:include_index => !original).include_index.should_not == original
|
462
440
|
end
|
463
441
|
|
464
442
|
it "should set include_root" do
|
465
|
-
original =
|
466
|
-
|
443
|
+
original = ls.include_root
|
444
|
+
ls.create(:include_root => !original).include_root.should_not == original
|
467
445
|
end
|
468
446
|
|
469
447
|
it "should set the filename" do
|
470
|
-
ls
|
448
|
+
ls.create(:filename => :xxx)
|
471
449
|
ls.filename.should == :xxx
|
472
450
|
ls.sitemap.location.filename.should =~ /xxx/
|
473
451
|
end
|
474
452
|
|
475
453
|
it "should set verbose" do
|
476
|
-
original =
|
477
|
-
|
454
|
+
original = ls.verbose
|
455
|
+
ls.create(:verbose => !original).verbose.should_not == original
|
478
456
|
end
|
479
457
|
|
480
458
|
it "should set the sitemaps_path" do
|
481
459
|
path = 'new/path'
|
482
|
-
ls
|
460
|
+
ls.create(:sitemaps_path => path)
|
483
461
|
ls.sitemaps_path.should == path
|
484
462
|
ls.sitemap.location.sitemaps_path.to_s.should == path
|
485
463
|
end
|
486
464
|
|
487
465
|
it "should set the default_host" do
|
488
466
|
host = 'http://defaulthost.com'
|
489
|
-
ls
|
467
|
+
ls.create(:default_host => host)
|
490
468
|
ls.default_host.should == host
|
491
469
|
ls.sitemap.location.host.should == host
|
492
470
|
end
|
493
471
|
|
494
472
|
it "should set the sitemaps host" do
|
495
|
-
|
496
|
-
ls
|
497
|
-
ls.sitemaps_host.should ==
|
498
|
-
ls.sitemap.location.host.should ==
|
473
|
+
host = 'http://sitemaphost.com'
|
474
|
+
ls.create(:sitemaps_host => host)
|
475
|
+
ls.sitemaps_host.should == host
|
476
|
+
ls.sitemap.location.host.should == host
|
499
477
|
end
|
500
478
|
|
501
479
|
it "should set the sitemaps_namer" do
|
502
480
|
namer = SitemapGenerator::SitemapNamer.new(:xxx)
|
503
|
-
ls
|
481
|
+
ls.create(:sitemaps_namer => namer)
|
504
482
|
ls.sitemaps_namer.should == namer
|
505
483
|
ls.sitemap.location.namer.should == namer
|
506
484
|
ls.sitemap.location.filename.should =~ /xxx/
|
@@ -508,7 +486,7 @@ describe SitemapGenerator::LinkSet do
|
|
508
486
|
|
509
487
|
it "should support both sitemaps_namer and filename options" do
|
510
488
|
namer = SitemapGenerator::SitemapNamer.new("sitemap1_")
|
511
|
-
ls
|
489
|
+
ls.create(:sitemaps_namer => namer, :filename => "sitemap1")
|
512
490
|
ls.sitemaps_namer.should == namer
|
513
491
|
ls.sitemap.location.namer.should == namer
|
514
492
|
ls.sitemap.location.filename.should =~ /sitemap1_1/
|
@@ -520,10 +498,16 @@ describe SitemapGenerator::LinkSet do
|
|
520
498
|
options = {} #ActiveSupport::OrderedHash.new
|
521
499
|
options[:sitemaps_namer] = namer
|
522
500
|
options[:filename] = "sitemap1"
|
523
|
-
ls
|
501
|
+
ls.create(options)
|
524
502
|
ls.sitemap.location.filename.should =~ /sitemap1_1/
|
525
503
|
ls.sitemap_index.location.filename.should =~ /sitemap1_index/
|
526
504
|
end
|
505
|
+
|
506
|
+
it "should not modify the options hash" do
|
507
|
+
options = { :filename => 'sitemaptest', :verbose => false }
|
508
|
+
ls.create(options)
|
509
|
+
options.should == { :filename => 'sitemaptest', :verbose => false }
|
510
|
+
end
|
527
511
|
end
|
528
512
|
|
529
513
|
describe "reset!" do
|
@@ -541,56 +525,50 @@ describe SitemapGenerator::LinkSet do
|
|
541
525
|
|
542
526
|
describe "include_root?" do
|
543
527
|
it "should return false" do
|
544
|
-
|
545
|
-
|
528
|
+
ls.include_root = false
|
529
|
+
ls.include_root.should be_false
|
546
530
|
end
|
547
531
|
|
548
532
|
it "should return true" do
|
549
|
-
|
550
|
-
|
533
|
+
ls.include_root = true
|
534
|
+
ls.include_root.should be_true
|
551
535
|
end
|
552
536
|
end
|
553
537
|
|
554
538
|
describe "include_index?" do
|
555
539
|
let(:sitemaps_host) { 'http://amazon.com' }
|
556
540
|
|
557
|
-
before :each do
|
558
|
-
@ls.default_host = @default_host
|
559
|
-
end
|
560
|
-
|
561
541
|
it "should be true if no sitemaps_host set, or it is the same" do
|
562
|
-
|
563
|
-
|
564
|
-
|
542
|
+
ls.include_index = true
|
543
|
+
ls.sitemaps_host = default_host
|
544
|
+
ls.include_index?.should be_true
|
565
545
|
|
566
|
-
|
567
|
-
|
546
|
+
ls.sitemaps_host = nil
|
547
|
+
ls.include_index?.should be_true
|
568
548
|
end
|
569
549
|
|
570
550
|
it "should be false if include_index is false or sitemaps_host differs" do
|
571
|
-
|
572
|
-
|
573
|
-
|
551
|
+
ls.include_index = false
|
552
|
+
ls.sitemaps_host = default_host
|
553
|
+
ls.include_index?.should be_false
|
574
554
|
|
575
|
-
|
576
|
-
|
577
|
-
|
555
|
+
ls.include_index = true
|
556
|
+
ls.sitemaps_host = sitemaps_host
|
557
|
+
ls.include_index?.should be_false
|
578
558
|
end
|
579
559
|
|
580
560
|
it "should return false" do
|
581
|
-
ls = SitemapGenerator::LinkSet.new(:default_host =>
|
561
|
+
ls = SitemapGenerator::LinkSet.new(:default_host => default_host, :sitemaps_host => sitemaps_host)
|
582
562
|
ls.include_index?.should be_false
|
583
563
|
end
|
584
564
|
|
585
565
|
it "should return true" do
|
586
|
-
ls = SitemapGenerator::LinkSet.new(:default_host =>
|
566
|
+
ls = SitemapGenerator::LinkSet.new(:default_host => default_host, :sitemaps_host => default_host)
|
587
567
|
ls.include_index?.should be_true
|
588
568
|
end
|
589
569
|
end
|
590
570
|
|
591
571
|
describe "output" do
|
592
|
-
let(:ls) { SitemapGenerator::LinkSet.new }
|
593
|
-
|
594
572
|
it "should not output" do
|
595
573
|
ls.verbose = false
|
596
574
|
ls.expects(:puts).never
|
@@ -603,4 +581,111 @@ describe SitemapGenerator::LinkSet do
|
|
603
581
|
ls.send(:output, '')
|
604
582
|
end
|
605
583
|
end
|
584
|
+
|
585
|
+
describe "yield_sitemap" do
|
586
|
+
it "should default to the value of SitemapGenerator.yield_sitemap?" do
|
587
|
+
SitemapGenerator.expects(:yield_sitemap?).returns(true)
|
588
|
+
ls.yield_sitemap?.should be_true
|
589
|
+
SitemapGenerator.expects(:yield_sitemap?).returns(false)
|
590
|
+
ls.yield_sitemap?.should be_false
|
591
|
+
end
|
592
|
+
|
593
|
+
it "should be settable as an option" do
|
594
|
+
SitemapGenerator.expects(:yield_sitemap?).never
|
595
|
+
SitemapGenerator::LinkSet.new(:yield_sitemap => true).yield_sitemap?.should be_true
|
596
|
+
SitemapGenerator::LinkSet.new(:yield_sitemap => false).yield_sitemap?.should be_false
|
597
|
+
end
|
598
|
+
|
599
|
+
it "should be settable as an attribute" do
|
600
|
+
ls.yield_sitemap = true
|
601
|
+
ls.yield_sitemap?.should be_true
|
602
|
+
ls.yield_sitemap = false
|
603
|
+
ls.yield_sitemap?.should be_false
|
604
|
+
end
|
605
|
+
|
606
|
+
it "should yield the sitemap in the call to create" do
|
607
|
+
ls.send(:interpreter).expects(:eval).with(:yield_sitemap => true)
|
608
|
+
ls.yield_sitemap = true
|
609
|
+
ls.create
|
610
|
+
ls.send(:interpreter).expects(:eval).with(:yield_sitemap => false)
|
611
|
+
ls.yield_sitemap = false
|
612
|
+
ls.create
|
613
|
+
end
|
614
|
+
end
|
615
|
+
|
616
|
+
describe "add_links" do
|
617
|
+
it "should not change the value of yield_sitemap" do
|
618
|
+
ls.stubs(:create)
|
619
|
+
ls.yield_sitemap = false
|
620
|
+
ls.add_links
|
621
|
+
ls.yield_sitemap.should be_false
|
622
|
+
ls.yield_sitemap = true
|
623
|
+
ls.add_links
|
624
|
+
ls.yield_sitemap.should be_true
|
625
|
+
end
|
626
|
+
|
627
|
+
it "should always yield the sitemap instance" do
|
628
|
+
ls.send(:interpreter).expects(:eval).with(:yield_sitemap => true).twice
|
629
|
+
ls.yield_sitemap = false
|
630
|
+
ls.add_links
|
631
|
+
ls.yield_sitemap = true
|
632
|
+
ls.add_links
|
633
|
+
end
|
634
|
+
end
|
635
|
+
|
636
|
+
describe "add" do
|
637
|
+
it "should not modify the options hash" do
|
638
|
+
options = { :host => 'http://newhost.com' }
|
639
|
+
ls.add('/home', options)
|
640
|
+
options.should == { :host => 'http://newhost.com' }
|
641
|
+
end
|
642
|
+
|
643
|
+
it "should add the link to the sitemap and include the default host" do
|
644
|
+
ls.stubs(:add_default_links)
|
645
|
+
ls.sitemap.expects(:add).with('/home', :host => ls.default_host)
|
646
|
+
ls.add('/home')
|
647
|
+
end
|
648
|
+
|
649
|
+
it "should allow setting of a custom host" do
|
650
|
+
ls.stubs(:add_default_links)
|
651
|
+
ls.sitemap.expects(:add).with('/home', :host => 'http://newhost.com')
|
652
|
+
ls.add('/home', :host => 'http://newhost.com')
|
653
|
+
end
|
654
|
+
|
655
|
+
it "should add the default links if they have not been added" do
|
656
|
+
ls.expects(:add_default_links)
|
657
|
+
ls.add('/home')
|
658
|
+
end
|
659
|
+
end
|
660
|
+
|
661
|
+
describe "add_to_index", :focus do
|
662
|
+
it "should add the link to the sitemap index and pass options" do
|
663
|
+
ls.sitemap_index.expects(:add).with('/test', has_entry(:option => 'value'))
|
664
|
+
ls.add_to_index('/test', :option => 'value')
|
665
|
+
end
|
666
|
+
|
667
|
+
it "should not modify the options hash" do
|
668
|
+
options = { :host => 'http://newhost.com' }
|
669
|
+
ls.add_to_index('/home', options)
|
670
|
+
options.should == { :host => 'http://newhost.com' }
|
671
|
+
end
|
672
|
+
|
673
|
+
describe "host" do
|
674
|
+
it "should be the sitemaps_host" do
|
675
|
+
ls.sitemaps_host = 'http://sitemapshost.com'
|
676
|
+
ls.sitemap_index.expects(:add).with('/home', :host => 'http://sitemapshost.com')
|
677
|
+
ls.add_to_index('/home')
|
678
|
+
end
|
679
|
+
|
680
|
+
it "should be the default_host if no sitemaps_host set" do
|
681
|
+
ls.sitemap_index.expects(:add).with('/home', :host => ls.default_host)
|
682
|
+
ls.add_to_index('/home')
|
683
|
+
end
|
684
|
+
|
685
|
+
it "should allow setting a custom host" do
|
686
|
+
ls.sitemap_index.expects(:add).with('/home', :host => 'http://newhost.com')
|
687
|
+
ls.add_to_index('/home', :host => 'http://newhost.com')
|
688
|
+
end
|
689
|
+
end
|
690
|
+
end
|
606
691
|
end
|