sitemap_generator 4.0.alpha → 4.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 +2 -2
- data/Gemfile.lock +1 -3
- data/README.md +197 -111
- data/VERSION +1 -1
- data/lib/sitemap_generator/builder/sitemap_file.rb +12 -12
- data/lib/sitemap_generator/builder/sitemap_index_file.rb +22 -8
- data/lib/sitemap_generator/builder/sitemap_url.rb +4 -2
- data/lib/sitemap_generator/link_set.rb +139 -67
- data/lib/sitemap_generator/sitemap_location.rb +5 -5
- data/lib/sitemap_generator/sitemap_namer.rb +14 -5
- data/spec/files/sitemap.deprecated.rb +2 -0
- data/spec/files/sitemap.groups.rb +14 -2
- data/spec/sitemap_generator/alternate_sitemap_spec.rb +25 -0
- data/spec/sitemap_generator/builder/sitemap_file_spec.rb +78 -25
- data/spec/sitemap_generator/builder/sitemap_index_file_spec.rb +75 -12
- data/spec/sitemap_generator/builder/sitemap_index_url_spec.rb +17 -5
- data/spec/sitemap_generator/link_set_spec.rb +56 -13
- data/spec/sitemap_generator/sitemap_generator_spec.rb +222 -75
- data/spec/sitemap_generator/sitemap_groups_spec.rb +52 -41
- data/spec/sitemap_generator/sitemap_location_spec.rb +46 -44
- data/spec/sitemap_generator/sitemap_namer_spec.rb +14 -0
- data/spec/spec_helper.rb +3 -0
- metadata +17 -14
@@ -14,15 +14,15 @@ module SitemapGenerator
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
# If no +filename+ or +namer+ is provided, the default namer is used
|
18
|
-
#
|
17
|
+
# If no +filename+ or +namer+ is provided, the default namer is used, which
|
18
|
+
# generates names like <tt>sitemap.xml.gz</tt>, <tt>sitemap1.xml.gz</tt>, <tt>sitemap2.xml.gz</tt> and so on.
|
19
19
|
#
|
20
20
|
# === Options
|
21
21
|
# * <tt>adapter</tt> - SitemapGenerator::Adapter subclass
|
22
22
|
# * <tt>filename</tt> - full name of the file e.g. <tt>'sitemap1.xml.gz'<tt>
|
23
23
|
# * <tt>host</tt> - host name for URLs. The full URL to the file is then constructed from
|
24
24
|
# the <tt>host</tt>, <tt>sitemaps_path</tt> and <tt>filename</tt>
|
25
|
-
# * <tt>namer</tt> - a SitemapGenerator::
|
25
|
+
# * <tt>namer</tt> - a SitemapGenerator::SimpleNamer instance. Can be passed instead of +filename+.
|
26
26
|
# * <tt>public_path</tt> - path to the "public" directory, or the directory you want to
|
27
27
|
# write sitemaps in. Default is a directory <tt>public/</tt>
|
28
28
|
# in the current working directory, or relative to the Rails root
|
@@ -30,7 +30,7 @@ module SitemapGenerator
|
|
30
30
|
# * <tt>sitemaps_path</tt> - gives the path relative to the <tt>public_path</tt> in which to
|
31
31
|
# write sitemaps e.g. <tt>sitemaps/</tt>.
|
32
32
|
# * <tt>verbose</tt> - whether to output summary into to STDOUT. Default +false+.
|
33
|
-
# * <tt>create_index</tt> - whether to create a sitemap index. Default
|
33
|
+
# * <tt>create_index</tt> - whether to create a sitemap index. Default `:auto`. See LinkSet.
|
34
34
|
# Only applies to the SitemapIndexLocation object.
|
35
35
|
def initialize(opts={})
|
36
36
|
SitemapGenerator::Utilities.assert_valid_keys(opts, [:adapter, :public_path, :sitemaps_path, :host, :filename, :namer, :verbose, :create_index])
|
@@ -127,7 +127,7 @@ module SitemapGenerator
|
|
127
127
|
class SitemapIndexLocation < SitemapLocation
|
128
128
|
def initialize(opts={})
|
129
129
|
if !opts[:filename] && !opts[:namer]
|
130
|
-
opts[:namer] = SitemapGenerator::SitemapIndexNamer.new(:
|
130
|
+
opts[:namer] = SitemapGenerator::SitemapIndexNamer.new(:sitemap)
|
131
131
|
end
|
132
132
|
super(opts)
|
133
133
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module SitemapGenerator
|
2
2
|
# A class for generating sitemap names given the base for the filename.
|
3
|
+
# Deprecated. Rather use the <tt>SitemapGenerator::SimpleNamer</tt> class and the
|
4
|
+
# +namer+ option on your sitemap object.
|
3
5
|
#
|
4
6
|
# === Example
|
5
7
|
# namer = SitemapNamer.new(:sitemap)
|
@@ -50,7 +52,9 @@ module SitemapGenerator
|
|
50
52
|
end
|
51
53
|
end
|
52
54
|
|
53
|
-
# A Namer for Sitemap Indexes.
|
55
|
+
# A Namer for Sitemap Indexes.
|
56
|
+
# Deprecated. Rather use the <tt>SitemapGenerator::SimpleNamer</tt> class and the
|
57
|
+
# +namer+ option on your sitemap object.
|
54
58
|
class SitemapIndexNamer < SitemapNamer
|
55
59
|
def to_s
|
56
60
|
"#{@base}#{@options[:extension]}"
|
@@ -68,14 +72,19 @@ module SitemapGenerator
|
|
68
72
|
# * sitemap3.xml.gz
|
69
73
|
# * ...
|
70
74
|
#
|
75
|
+
# Arguments:
|
76
|
+
# base - string or symbol that forms the base of the generated filename e.g.
|
77
|
+
# if `:geo` files are generated like `geo.xml.gz`, `geo1.xml.gz`, `geo2.xml.gz` etc.
|
78
|
+
#
|
71
79
|
# Options:
|
72
80
|
# :extension - Default: '.xml.gz'. File extension to append.
|
73
81
|
# :start - Default: 1. Numerical index at which to start counting.
|
74
|
-
# :zero - Default: nil.
|
75
|
-
#
|
76
|
-
#
|
82
|
+
# :zero - Default: nil. A string or number that is appended to +base+
|
83
|
+
# to create the first name in the sequence. So setting this
|
84
|
+
# to '_index' would produce 'sitemap_index.xml.gz' as
|
77
85
|
# the first name. Thereafter, the numerical index defined by +start+
|
78
|
-
# is used.
|
86
|
+
# is used, and subsequent names would be 'sitemap1.xml.gz', 'sitemap2.xml.gz', etc.
|
87
|
+
# In these examples the `base` string is assumed to be 'sitemap'.
|
79
88
|
class SimpleNamer < SitemapNamer
|
80
89
|
def initialize(base, options={})
|
81
90
|
super_options = SitemapGenerator::Utilities.reverse_merge(options,
|
@@ -1,5 +1,7 @@
|
|
1
1
|
SitemapGenerator::Sitemap.default_host = "http://www.example.com"
|
2
2
|
SitemapGenerator::Sitemap.yahoo_app_id = false
|
3
|
+
SitemapGenerator::Sitemap.create_index = true
|
4
|
+
SitemapGenerator::Sitemap.namer = SitemapGenerator::SimpleNamer.new(:sitemap, :zero => '_index')
|
3
5
|
|
4
6
|
SitemapGenerator::Sitemap.add_links do |sitemap|
|
5
7
|
sitemap.add '/contents', :priority => 0.7, :changefreq => 'daily'
|
@@ -1,4 +1,5 @@
|
|
1
1
|
SitemapGenerator::Sitemap.default_host = "http://www.example.com"
|
2
|
+
|
2
3
|
SitemapGenerator::Sitemap.create(
|
3
4
|
:include_root => true, :include_index => true,
|
4
5
|
:filename => :new_sitemaps, :sitemaps_path => 'fr/') do
|
@@ -13,16 +14,25 @@ SitemapGenerator::Sitemap.create(
|
|
13
14
|
add '/three'
|
14
15
|
end
|
15
16
|
|
16
|
-
# Test a namer
|
17
|
+
# Test a deprecated namer
|
17
18
|
group(:sitemaps_namer => SitemapGenerator::SitemapNamer.new(:abc, :start => 3)) do
|
18
19
|
add '/four'
|
19
20
|
add '/five'
|
20
21
|
add '/six'
|
21
22
|
end
|
22
23
|
|
24
|
+
# Test a simple namer
|
25
|
+
group(:sitemaps_namer => SitemapGenerator::SimpleNamer.new(:def)) do
|
26
|
+
add '/four'
|
27
|
+
add '/five'
|
28
|
+
add '/six'
|
29
|
+
end
|
30
|
+
|
23
31
|
add '/seven'
|
24
32
|
|
25
|
-
# This should be in a file of its own
|
33
|
+
# This should be in a file of its own.
|
34
|
+
# Not technically valid to have a link with a different host, but people like
|
35
|
+
# to do strange things sometimes.
|
26
36
|
group(:sitemaps_host => "http://exceptional.com") do
|
27
37
|
add '/eight'
|
28
38
|
add '/nine'
|
@@ -33,5 +43,7 @@ SitemapGenerator::Sitemap.create(
|
|
33
43
|
# This should have no effect. Already added default links.
|
34
44
|
group(:include_root => true, :include_index => true) {}
|
35
45
|
|
46
|
+
# Not technically valid to have a link with a different host, but people like
|
47
|
+
# to do strange things sometimes
|
36
48
|
add "/merchant_path", :host => "https://www.merchanthost.com"
|
37
49
|
end
|
@@ -25,4 +25,29 @@ describe "SitemapGenerator" do
|
|
25
25
|
alternate.attribute('href').value.should == 'http://www.example.de/link_with_alternate.html'
|
26
26
|
end
|
27
27
|
|
28
|
+
it "should add alternate links to sitemap with rel nofollow" do
|
29
|
+
xml_fragment = SitemapGenerator::Builder::SitemapUrl.new('link_with_alternates.html',
|
30
|
+
:host => 'http://www.example.com',
|
31
|
+
:alternates => [
|
32
|
+
{
|
33
|
+
:lang => 'de',
|
34
|
+
:href => 'http://www.example.de/link_with_alternate.html',
|
35
|
+
:nofollow => true
|
36
|
+
}
|
37
|
+
]
|
38
|
+
).to_xml
|
39
|
+
|
40
|
+
doc = Nokogiri::XML.parse("<root xmlns='http://www.sitemaps.org/schemas/sitemap/0.9' xmlns:xhtml='http://www.w3.org/1999/xhtml'>#{xml_fragment}</root>")
|
41
|
+
url = doc.css('url')
|
42
|
+
url.should_not be_nil
|
43
|
+
url.css('loc').text.should == 'http://www.example.com/link_with_alternates.html'
|
44
|
+
|
45
|
+
alternate = url.at_xpath('xhtml:link')
|
46
|
+
alternate.should_not be_nil
|
47
|
+
alternate.attribute('rel').value.should == 'alternate nofollow'
|
48
|
+
alternate.attribute('hreflang').value.should == 'de'
|
49
|
+
alternate.attribute('href').value.should == 'http://www.example.de/link_with_alternate.html'
|
50
|
+
end
|
51
|
+
|
28
52
|
end
|
53
|
+
|
@@ -1,35 +1,33 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe 'SitemapGenerator::Builder::SitemapFile' do
|
4
|
-
|
5
|
-
|
6
|
-
@s = SitemapGenerator::Builder::SitemapFile.new(@loc)
|
7
|
-
end
|
4
|
+
let(:location) { SitemapGenerator::SitemapLocation.new(:namer => SitemapGenerator::SitemapNamer.new(:sitemap), :public_path => 'tmp/', :sitemaps_path => 'test/', :host => 'http://example.com/') }
|
5
|
+
let(:sitemap) { SitemapGenerator::Builder::SitemapFile.new(location) }
|
8
6
|
|
9
7
|
it "should have a default namer" do
|
10
|
-
|
11
|
-
|
8
|
+
sitemap = SitemapGenerator::Builder::SitemapFile.new
|
9
|
+
sitemap.location.filename.should == 'sitemap1.xml.gz'
|
12
10
|
end
|
13
11
|
|
14
12
|
it "should return the name of the sitemap file" do
|
15
|
-
|
13
|
+
sitemap.location.filename.should == 'sitemap1.xml.gz'
|
16
14
|
end
|
17
15
|
|
18
16
|
it "should return the URL" do
|
19
|
-
|
17
|
+
sitemap.location.url.should == 'http://example.com/test/sitemap1.xml.gz'
|
20
18
|
end
|
21
19
|
|
22
20
|
it "should return the path" do
|
23
|
-
|
21
|
+
sitemap.location.path.should == File.expand_path('tmp/test/sitemap1.xml.gz')
|
24
22
|
end
|
25
23
|
|
26
24
|
it "should be empty" do
|
27
|
-
|
28
|
-
|
25
|
+
sitemap.empty?.should be_true
|
26
|
+
sitemap.link_count.should == 0
|
29
27
|
end
|
30
28
|
|
31
29
|
it "should not be finalized" do
|
32
|
-
|
30
|
+
sitemap.finalized?.should be_false
|
33
31
|
end
|
34
32
|
|
35
33
|
it "should raise if no default host is set" do
|
@@ -39,41 +37,96 @@ describe 'SitemapGenerator::Builder::SitemapFile' do
|
|
39
37
|
describe "lastmod" do
|
40
38
|
it "should be the file last modified time" do
|
41
39
|
lastmod = (Time.now - 1209600)
|
42
|
-
|
43
|
-
File.expects(:mtime).with(
|
44
|
-
|
40
|
+
sitemap.location.reserve_name
|
41
|
+
File.expects(:mtime).with(sitemap.location.path).returns(lastmod)
|
42
|
+
sitemap.lastmod.should == lastmod
|
45
43
|
end
|
46
44
|
|
47
45
|
it "should be nil if the location has not reserved a name" do
|
48
46
|
File.expects(:mtime).never
|
49
|
-
|
47
|
+
sitemap.lastmod.should be_nil
|
50
48
|
end
|
51
|
-
|
49
|
+
|
52
50
|
it "should be nil if location has reserved a name and the file DNE" do
|
53
|
-
|
51
|
+
sitemap.location.reserve_name
|
54
52
|
File.expects(:mtime).raises(Errno::ENOENT)
|
55
|
-
|
53
|
+
sitemap.lastmod.should be_nil
|
56
54
|
end
|
57
55
|
end
|
58
56
|
|
59
57
|
describe "new" do
|
58
|
+
let(:original_sitemap) { sitemap }
|
59
|
+
let(:new_sitemap) { sitemap.new }
|
60
|
+
|
60
61
|
before :each do
|
61
|
-
|
62
|
-
|
62
|
+
original_sitemap
|
63
|
+
new_sitemap
|
63
64
|
end
|
64
65
|
|
65
66
|
it "should inherit the same options" do
|
66
67
|
# The name is the same because the original sitemap was not finalized
|
67
|
-
|
68
|
-
|
68
|
+
new_sitemap.location.url.should == 'http://example.com/test/sitemap1.xml.gz'
|
69
|
+
new_sitemap.location.path.should == File.expand_path('tmp/test/sitemap1.xml.gz')
|
69
70
|
end
|
70
71
|
|
71
72
|
it "should not share the same location instance" do
|
72
|
-
|
73
|
+
new_sitemap.location.should_not be(original_sitemap.location)
|
73
74
|
end
|
74
75
|
|
75
76
|
it "should inherit the same namer instance" do
|
76
|
-
|
77
|
+
new_sitemap.location.namer.should == original_sitemap.location.namer
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "reserve_name" do
|
82
|
+
it "should reserve the name from the location" do
|
83
|
+
sitemap.reserved_name?.should be_false
|
84
|
+
sitemap.location.expects(:reserve_name).returns('name')
|
85
|
+
sitemap.reserve_name
|
86
|
+
sitemap.reserved_name?.should be_true
|
87
|
+
sitemap.instance_variable_get(:@reserved_name).should == 'name'
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should be safe to call multiple times" do
|
91
|
+
sitemap.location.expects(:reserve_name).returns('name').once
|
92
|
+
sitemap.reserve_name
|
93
|
+
sitemap.reserve_name
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "add" do
|
98
|
+
it "should use the host provided" do
|
99
|
+
url = SitemapGenerator::Builder::SitemapUrl.new('/one', :host => 'http://newhost.com/')
|
100
|
+
SitemapGenerator::Builder::SitemapUrl.expects(:new).with('/one', :host => 'http://newhost.com').returns(url)
|
101
|
+
sitemap.add '/one', :host => 'http://newhost.com'
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should use the host from the location" do
|
105
|
+
url = SitemapGenerator::Builder::SitemapUrl.new('/one', :host => 'http://example.com/')
|
106
|
+
SitemapGenerator::Builder::SitemapUrl.expects(:new).with('/one', :host => 'http://example.com/').returns(url)
|
107
|
+
sitemap.add '/one'
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "ellipsis" do
|
112
|
+
it "should not modify when less than or equal to max" do
|
113
|
+
(1..10).each do |i|
|
114
|
+
string = 'a'*i
|
115
|
+
sitemap.send(:ellipsis, string, 10).should == string
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should replace last 3 characters with ellipsis when greater than max" do
|
120
|
+
(1..5).each do |i|
|
121
|
+
string = 'aaaaa' + 'a'*i
|
122
|
+
sitemap.send(:ellipsis, string, 5).should == 'aa...'
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should not freak out when string too small" do
|
127
|
+
sitemap.send(:ellipsis, 'a', 1).should == 'a'
|
128
|
+
sitemap.send(:ellipsis, 'aa', 1).should == '...'
|
129
|
+
sitemap.send(:ellipsis, 'aaa', 1).should == '...'
|
77
130
|
end
|
78
131
|
end
|
79
132
|
end
|
@@ -1,38 +1,101 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe 'SitemapGenerator::Builder::SitemapIndexFile' do
|
4
|
+
let(:location) { SitemapGenerator::SitemapLocation.new(:filename => 'sitemap.xml.gz', :public_path => '/public/', :host => 'http://example.com/') }
|
5
|
+
let(:index) { SitemapGenerator::Builder::SitemapIndexFile.new(location) }
|
6
|
+
|
4
7
|
before :each do
|
5
|
-
|
6
|
-
@s = SitemapGenerator::Builder::SitemapIndexFile.new(@loc)
|
8
|
+
index.location[:sitemaps_path] = 'test/'
|
7
9
|
end
|
8
10
|
|
9
11
|
it "should return the URL" do
|
10
|
-
|
12
|
+
index.location.url.should == 'http://example.com/test/sitemap.xml.gz'
|
11
13
|
end
|
12
14
|
|
13
15
|
it "should return the path" do
|
14
|
-
|
16
|
+
index.location.path.should == '/public/test/sitemap.xml.gz'
|
15
17
|
end
|
16
18
|
|
17
19
|
it "should be empty" do
|
18
|
-
|
19
|
-
|
20
|
+
index.empty?.should be_true
|
21
|
+
index.link_count.should == 0
|
20
22
|
end
|
21
23
|
|
22
24
|
it "should not have a last modification data" do
|
23
|
-
|
25
|
+
index.lastmod.should be_nil
|
24
26
|
end
|
25
27
|
|
26
28
|
it "should not be finalized" do
|
27
|
-
|
29
|
+
index.finalized?.should be_false
|
28
30
|
end
|
29
31
|
|
30
|
-
it "filename should
|
31
|
-
|
32
|
+
it "filename should be set" do
|
33
|
+
index.location.filename.should == 'sitemap.xml.gz'
|
32
34
|
end
|
33
35
|
|
34
36
|
it "should have a default namer" do
|
35
|
-
|
36
|
-
|
37
|
+
index = SitemapGenerator::Builder::SitemapIndexFile.new
|
38
|
+
index.location.filename.should == 'sitemap.xml.gz'
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "link_count" do
|
42
|
+
it "should return the link count" do
|
43
|
+
index.instance_variable_set(:@link_count, 10)
|
44
|
+
index.link_count.should == 10
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "create_index?" do
|
49
|
+
it "should return false" do
|
50
|
+
index.location[:create_index] = false
|
51
|
+
index.create_index?.should be_false
|
52
|
+
|
53
|
+
index.instance_variable_set(:@link_count, 10)
|
54
|
+
index.create_index?.should be_false
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should return true" do
|
58
|
+
index.location[:create_index] = true
|
59
|
+
index.create_index?.should be_true
|
60
|
+
|
61
|
+
index.instance_variable_set(:@link_count, 1)
|
62
|
+
index.create_index?.should be_true
|
63
|
+
end
|
64
|
+
|
65
|
+
it "when :auto, should be true if more than one link" do
|
66
|
+
index.instance_variable_set(:@link_count, 1)
|
67
|
+
index.location[:create_index] = :auto
|
68
|
+
index.create_index?.should be_false
|
69
|
+
|
70
|
+
index.instance_variable_set(:@link_count, 2)
|
71
|
+
index.create_index?.should be_true
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe "add" do
|
76
|
+
it "should use the host provided" do
|
77
|
+
url = SitemapGenerator::Builder::SitemapIndexUrl.new('/one', :host => 'http://newhost.com/')
|
78
|
+
SitemapGenerator::Builder::SitemapIndexUrl.expects(:new).with('/one', :host => 'http://newhost.com').returns(url)
|
79
|
+
index.add '/one', :host => 'http://newhost.com'
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should use the host from the location" do
|
83
|
+
url = SitemapGenerator::Builder::SitemapIndexUrl.new('/one', :host => 'http://example.com/')
|
84
|
+
SitemapGenerator::Builder::SitemapIndexUrl.expects(:new).with('/one', :host => 'http://example.com/').returns(url)
|
85
|
+
index.add '/one'
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "when adding manually" do
|
89
|
+
it "should reserve a name" do
|
90
|
+
index.expects(:reserve_name)
|
91
|
+
index.add '/link'
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should create index" do
|
95
|
+
index.create_index?.should be_false
|
96
|
+
index.add '/one'
|
97
|
+
index.create_index?.should be_true
|
98
|
+
end
|
99
|
+
end
|
37
100
|
end
|
38
101
|
end
|
@@ -1,16 +1,28 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe SitemapGenerator::Builder::SitemapIndexUrl do
|
4
|
-
|
5
|
-
|
4
|
+
let(:index) {
|
5
|
+
SitemapGenerator::Builder::SitemapIndexFile.new(
|
6
6
|
:sitemaps_path => 'sitemaps/',
|
7
7
|
:host => 'http://test.com',
|
8
8
|
:filename => 'sitemap_index.xml.gz'
|
9
9
|
)
|
10
|
-
|
10
|
+
}
|
11
|
+
let(:url) { SitemapGenerator::Builder::SitemapUrl.new(index) }
|
11
12
|
|
12
13
|
it "should return the correct url" do
|
13
|
-
|
14
|
-
|
14
|
+
url[:loc].should == 'http://test.com/sitemaps/sitemap_index.xml.gz'
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should use the host from the index" do
|
18
|
+
host = 'http://myexample.com'
|
19
|
+
index.location.expects(:host).returns(host)
|
20
|
+
url[:host].should == host
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should use the public path for the link" do
|
24
|
+
path = '/path'
|
25
|
+
index.location.expects(:path_in_public).returns(path)
|
26
|
+
url[:loc].should == 'http://test.com/path'
|
15
27
|
end
|
16
28
|
end
|