|
Lines 24-30
use DateTime;
Link Here
|
| 24 |
use Test::MockModule; |
24 |
use Test::MockModule; |
| 25 |
use Test::More tests => 16; |
25 |
use Test::More tests => 16; |
| 26 |
use Koha::Schema; |
26 |
use Koha::Schema; |
| 27 |
|
27 |
use Carp qw/croak carp/; |
| 28 |
|
28 |
|
| 29 |
BEGIN { |
29 |
BEGIN { |
| 30 |
use_ok('Koha::Sitemapper'); |
30 |
use_ok('Koha::Sitemapper'); |
|
Lines 37-43
$mocked_datetime->mock('now', sub { return $now_value; } );
Link Here
|
| 37 |
|
37 |
|
| 38 |
sub slurp { |
38 |
sub slurp { |
| 39 |
my $file = shift; |
39 |
my $file = shift; |
| 40 |
open my $fh, '<', $file or die; |
40 |
open my $fh, '<', $file or croak; |
| 41 |
local $/ = undef; |
41 |
local $/ = undef; |
| 42 |
my $cont = <$fh>; |
42 |
my $cont = <$fh>; |
| 43 |
close $fh; |
43 |
close $fh; |
|
Lines 51-59
sub fixtures {
Link Here
|
| 51 |
fixtures_ok [ |
51 |
fixtures_ok [ |
| 52 |
Biblio => [ |
52 |
Biblio => [ |
| 53 |
[ qw/ biblionumber datecreated timestamp / ], |
53 |
[ qw/ biblionumber datecreated timestamp / ], |
| 54 |
@$data, |
54 |
@{$data}, |
| 55 |
], |
55 |
], |
| 56 |
], 'add fixtures'; |
56 |
], 'add fixtures'; |
|
|
57 |
return; |
| 57 |
} |
58 |
} |
| 58 |
|
59 |
|
| 59 |
# Make the code in the module use our mocked Koha::Schema/Koha::Database |
60 |
# Make the code in the module use our mocked Koha::Schema/Koha::Database |
|
Lines 81-90
my $sitemapper = Koha::Sitemapper->new(
Link Here
|
| 81 |
$sitemapper->run(); |
82 |
$sitemapper->run(); |
| 82 |
|
83 |
|
| 83 |
my $file = "$dir/sitemapindex.xml"; |
84 |
my $file = "$dir/sitemapindex.xml"; |
| 84 |
ok( -e "$dir/sitemapindex.xml", "File sitemapindex.xml created"); |
85 |
ok( -e "$dir/sitemapindex.xml", 'File sitemapindex.xml created'); |
| 85 |
my $file_content = slurp($file); |
86 |
my $file_content = slurp($file); |
| 86 |
my $now = DateTime->now->ymd; |
87 |
my $now = DateTime->now->ymd; |
| 87 |
my $expected_content = <<EOS; |
88 |
my $expected_content = <<"EOS"; |
| 88 |
<?xml version="1.0" encoding="UTF-8"?> |
89 |
<?xml version="1.0" encoding="UTF-8"?> |
| 89 |
|
90 |
|
| 90 |
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> |
91 |
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> |
|
Lines 95-106
my $expected_content = <<EOS;
Link Here
|
| 95 |
</sitemapindex> |
96 |
</sitemapindex> |
| 96 |
EOS |
97 |
EOS |
| 97 |
chop $expected_content; |
98 |
chop $expected_content; |
| 98 |
is( $file_content, $expected_content, "Its content is valid" ); |
99 |
is( $file_content, $expected_content, 'Its content is valid' ); |
| 99 |
|
100 |
|
| 100 |
$file = "$dir/sitemap0001.xml"; |
101 |
$file = "$dir/sitemap0001.xml"; |
| 101 |
ok( -e $file, "File sitemap0001.xml created"); |
102 |
ok( -e $file, 'File sitemap0001.xml created'); |
| 102 |
$file_content = slurp($file); |
103 |
$file_content = slurp($file); |
| 103 |
$expected_content = <<EOS; |
104 |
$expected_content = <<"EOS"; |
| 104 |
<?xml version="1.0" encoding="UTF-8"?> |
105 |
<?xml version="1.0" encoding="UTF-8"?> |
| 105 |
|
106 |
|
| 106 |
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> |
107 |
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> |
|
Lines 114-120
$expected_content = <<EOS;
Link Here
|
| 114 |
</url> |
115 |
</url> |
| 115 |
</urlset> |
116 |
</urlset> |
| 116 |
EOS |
117 |
EOS |
| 117 |
is( $file_content, $expected_content, "Its content is valid" ); |
118 |
is( $file_content, $expected_content, 'Its content is valid' ); |
| 118 |
|
119 |
|
| 119 |
|
120 |
|
| 120 |
# Create a sitemap for a catalog containg 2 biblios, with option 'short url'. |
121 |
# Create a sitemap for a catalog containg 2 biblios, with option 'short url'. |
|
Lines 128-136
$sitemapper = Koha::Sitemapper->new(
Link Here
|
| 128 |
$sitemapper->run(); |
129 |
$sitemapper->run(); |
| 129 |
|
130 |
|
| 130 |
$file = "$dir/sitemap0001.xml"; |
131 |
$file = "$dir/sitemap0001.xml"; |
| 131 |
ok( -e $file, "File sitemap0001.xml with short URLs created"); |
132 |
ok( -e $file, 'File sitemap0001.xml with short URLs created'); |
| 132 |
$file_content = slurp($file); |
133 |
$file_content = slurp($file); |
| 133 |
$expected_content = <<EOS; |
134 |
$expected_content = <<"EOS"; |
| 134 |
<?xml version="1.0" encoding="UTF-8"?> |
135 |
<?xml version="1.0" encoding="UTF-8"?> |
| 135 |
|
136 |
|
| 136 |
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> |
137 |
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> |
|
Lines 144-157
$expected_content = <<EOS;
Link Here
|
| 144 |
</url> |
145 |
</url> |
| 145 |
</urlset> |
146 |
</urlset> |
| 146 |
EOS |
147 |
EOS |
| 147 |
is( $file_content, $expected_content, "Its content is valid" ); |
148 |
is( $file_content, $expected_content, 'Its content is valid' ); |
| 148 |
|
149 |
|
| 149 |
|
150 |
|
| 150 |
# Create a sitemap for a catalog containing 75000 biblios, with option 'short |
151 |
# Create a sitemap for a catalog containing 75000 biblios, with option 'short |
| 151 |
# url'. Test that 3 files are created: index file + 2 urls file with |
152 |
# url'. Test that 3 files are created: index file + 2 urls file with |
| 152 |
# respectively 50000 et 25000 urls. |
153 |
# respectively 50000 et 25000 urls. |
| 153 |
$data = []; |
154 |
$data = []; |
| 154 |
push @$data, [ $_, '2015-08-31', '2015-08-31'] for 3..75000; |
155 |
for my $count (3..75_000) { |
|
|
156 |
push @{$data}, [ $count, '2015-08-31', '2015-08-31']; |
| 157 |
} |
| 155 |
fixtures($data); |
158 |
fixtures($data); |
| 156 |
$sitemapper = Koha::Sitemapper->new( |
159 |
$sitemapper = Koha::Sitemapper->new( |
| 157 |
verbose => 0, |
160 |
verbose => 0, |
|
Lines 162-170
$sitemapper = Koha::Sitemapper->new(
Link Here
|
| 162 |
$sitemapper->run(); |
165 |
$sitemapper->run(); |
| 163 |
|
166 |
|
| 164 |
$file = "$dir/sitemapindex.xml"; |
167 |
$file = "$dir/sitemapindex.xml"; |
| 165 |
ok( -e "$dir/sitemapindex.xml", "File sitemapindex.xml for 75000 bibs created"); |
168 |
ok( -e "$dir/sitemapindex.xml", 'File sitemapindex.xml for 75000 bibs created'); |
| 166 |
$file_content = slurp($file); |
169 |
$file_content = slurp($file); |
| 167 |
$expected_content = <<EOS; |
170 |
$expected_content = <<"EOS"; |
| 168 |
<?xml version="1.0" encoding="UTF-8"?> |
171 |
<?xml version="1.0" encoding="UTF-8"?> |
| 169 |
|
172 |
|
| 170 |
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> |
173 |
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> |
|
Lines 179-205
$expected_content = <<EOS;
Link Here
|
| 179 |
</sitemapindex> |
182 |
</sitemapindex> |
| 180 |
EOS |
183 |
EOS |
| 181 |
chop $expected_content; |
184 |
chop $expected_content; |
| 182 |
is( $file_content, $expected_content, "Its content is valid" ); |
185 |
is( $file_content, $expected_content, 'Its content is valid' ); |
| 183 |
|
186 |
|
| 184 |
$file = "$dir/sitemap0001.xml"; |
187 |
$file = "$dir/sitemap0001.xml"; |
| 185 |
ok( -e $file, "File sitemap0001.xml created"); |
188 |
ok( -e $file, 'File sitemap0001.xml created'); |
| 186 |
|
189 |
|
| 187 |
open my $fh, "<", $file; |
190 |
open my $fh, '<', $file or croak; |
| 188 |
my $count = 0; |
191 |
my $count = 0; |
| 189 |
while (<$fh>) { |
192 |
while (<$fh>) { |
| 190 |
$count++ if /<loc>/; |
193 |
if ($_ =~ /<loc>/xsm) { $count++; } |
| 191 |
} |
194 |
} |
| 192 |
is( $count, 50000, "It contains 50000 URLs"); |
195 |
close $fh; |
|
|
196 |
is( $count, 50_000, 'It contains 50000 URLs'); |
| 193 |
|
197 |
|
| 194 |
$file = "$dir/sitemap0002.xml"; |
198 |
$file = "$dir/sitemap0002.xml"; |
| 195 |
ok( -e $file, "File sitemap0002.xml created"); |
199 |
ok( -e $file, 'File sitemap0002.xml created'); |
| 196 |
|
200 |
|
| 197 |
open $fh, "<", $file; |
201 |
open $fh, '<', $file or croak; |
| 198 |
$count = 0; |
202 |
$count = 0; |
| 199 |
while (<$fh>) { |
203 |
while (<$fh>) { |
| 200 |
$count++ if /<loc>/; |
204 |
if ($_ =~ /<loc>/xsm) { $count++; } |
| 201 |
} |
205 |
} |
| 202 |
is( $count, 25000, "It contains 25000 URLs"); |
206 |
close $fh; |
|
|
207 |
is( $count, 25_000, 'It contains 25000 URLs'); |
| 203 |
|
208 |
|
| 204 |
# Cleanup |
209 |
# Cleanup |
| 205 |
unlink "$dir/$_" for qw / sitemapindex.xml sitemap0001.xml sitemap0002.xml /; |
210 |
for my $file (qw/sitemapindex.xml sitemap0001.xml sitemap0002.xml/) { |
|
|
211 |
unlink "$dir/$file"; |
| 212 |
} |
| 206 |
- |
|
|