Lines 20-27
Link Here
|
20 |
use Modern::Perl; |
20 |
use Modern::Perl; |
21 |
|
21 |
|
22 |
use FindBin; |
22 |
use FindBin; |
|
|
23 |
use File::Temp qw/tempfile/; |
23 |
use File::Slurp; |
24 |
use File::Slurp; |
24 |
use Test::More tests => 35; |
25 |
use Test::More tests => 32; |
25 |
use Test::Warn; |
26 |
use Test::Warn; |
26 |
|
27 |
|
27 |
use Koha::XSLT::Base; |
28 |
use Koha::XSLT::Base; |
Lines 37-47
is( $engine->err, Koha::XSLT::Base::XSLTH_ERR_2, 'Engine returns error on bad fi
Link Here
|
37 |
is( $engine->refresh( 'asdjhaskjh'), 0, 'Test on invalid refresh' ); |
38 |
is( $engine->refresh( 'asdjhaskjh'), 0, 'Test on invalid refresh' ); |
38 |
|
39 |
|
39 |
#check first test xsl |
40 |
#check first test xsl |
40 |
my $path= $FindBin::Bin.'/XSLT_Handler/'; |
41 |
my $xsltfile_1 = xsl_file(1); |
41 |
my $xsltfile_1 = 'test01.xsl'; |
42 |
is( -e $xsltfile_1, 1, "Found my test stylesheet $xsltfile_1" ); |
42 |
is( -e $path.$xsltfile_1, 1, "Found my test stylesheet $xsltfile_1" ); |
|
|
43 |
exit if !-e $path.$xsltfile_1; |
44 |
$xsltfile_1= $path.$xsltfile_1; |
45 |
|
43 |
|
46 |
#Testing not-xml strings (undef, empty, some text, malformed xml |
44 |
#Testing not-xml strings (undef, empty, some text, malformed xml |
47 |
my $output; |
45 |
my $output; |
Lines 135-163
is( ref $engine->transform({
Link Here
|
135 |
'Format parameter returns a xml document object' ); |
133 |
'Format parameter returns a xml document object' ); |
136 |
|
134 |
|
137 |
#The second test xsl contains bad code |
135 |
#The second test xsl contains bad code |
138 |
my $xsltfile_2 = 'test02.xsl'; |
136 |
my $xsltfile_2 = xsl_file(2); |
139 |
is( -e $path.$xsltfile_2, 1, "Found my test stylesheet $xsltfile_2" ); |
|
|
140 |
exit if !-e $path.$xsltfile_2; |
141 |
$xsltfile_2= $path.$xsltfile_2; |
142 |
|
143 |
$engine->print_warns(0); |
137 |
$engine->print_warns(0); |
144 |
$output = $engine->transform( $xml_2, $xsltfile_2 ); |
138 |
$output = $engine->transform( $xml_2, $xsltfile_2 ); |
145 |
is( $engine->err, Koha::XSLT::Base::XSLTH_ERR_4, 'Engine returned error for parsing bad xsl' ); |
139 |
is( $engine->err, Koha::XSLT::Base::XSLTH_ERR_4, 'Engine returned error for parsing bad xsl' ); |
146 |
|
140 |
|
147 |
#The third test xsl is okay again; main use is clearing two items from cache |
141 |
#The third test xsl is okay again; main use is clearing two items from cache |
148 |
my $xsltfile_3 = 'test03.xsl'; |
142 |
my $xsltfile_3 = xsl_file(3); |
149 |
is( -e $path.$xsltfile_3, 1, "Found my test stylesheet $xsltfile_3" ); |
|
|
150 |
exit if !-e $path.$xsltfile_3; |
151 |
$xsltfile_3= $path.$xsltfile_3; |
152 |
$output= $engine->transform( $xml_2, $xsltfile_3 ); |
143 |
$output= $engine->transform( $xml_2, $xsltfile_3 ); |
153 |
is( $engine->err, undef, 'Unexpected error on transform with third xsl' ); |
144 |
is( $engine->err, undef, 'Unexpected error on transform with third xsl' ); |
154 |
is( $engine->refresh, 3, 'Final test on clearing cache' ); |
145 |
is( $engine->refresh, 3, 'Final test on clearing cache' ); |
155 |
|
146 |
|
156 |
my $xsltfile_4 = 'test04.xsl'; |
147 |
# File no 4 |
157 |
is( -e $path.$xsltfile_4, 1, "Found my test stylesheet $xsltfile_4" ); |
148 |
my $xsltfile_4 = xsl_file(4); |
158 |
exit if !-e $path.$xsltfile_4; |
|
|
159 |
$xsltfile_4 = $path.$xsltfile_4; |
160 |
|
161 |
my $parameters = { injected_variable => "'this is a test'",}; |
149 |
my $parameters = { injected_variable => "'this is a test'",}; |
162 |
$output = $engine->transform({ |
150 |
$output = $engine->transform({ |
163 |
xml => $xml_1, |
151 |
xml => $xml_1, |
Lines 176-179
$output = $engine->transform({
Link Here
|
176 |
$dom = XML::LibXML->load_xml(string => $output); |
164 |
$dom = XML::LibXML->load_xml(string => $output); |
177 |
$result = $dom->find( '/just_a_tagname' ); |
165 |
$result = $dom->find( '/just_a_tagname' ); |
178 |
is ( $result->to_literal(), '', "As expected, no XSLT parameters/variables were added"); |
166 |
is ( $result->to_literal(), '', "As expected, no XSLT parameters/variables were added"); |
179 |
#End of tests |
167 |
|
|
|
168 |
sub xsl_file { |
169 |
my $i = shift; |
170 |
return mytempfile( q{<xsl:stylesheet version="1.0" |
171 |
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
172 |
xmlns:marc="http://www.loc.gov/MARC21/slim" |
173 |
> |
174 |
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> |
175 |
|
176 |
<xsl:template match="record|marc:record"> |
177 |
<record> |
178 |
<xsl:apply-templates/> |
179 |
<datafield tag="990" ind1='' ind2=''> |
180 |
<subfield code="a"> |
181 |
<xsl:text>I saw you</xsl:text> |
182 |
</subfield> |
183 |
</datafield> |
184 |
</record> |
185 |
</xsl:template> |
186 |
|
187 |
<xsl:template match="node()"> |
188 |
<xsl:copy select="."> |
189 |
<xsl:copy-of select="@*"/> |
190 |
<xsl:apply-templates/> |
191 |
</xsl:copy> |
192 |
</xsl:template> |
193 |
</xsl:stylesheet>} ) if $i == 1; |
194 |
|
195 |
return mytempfile( q{<!-- This is BAD coded xslt stylesheet --> |
196 |
<xsl:stylesheet version="1.0" |
197 |
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
198 |
xmlns:marc="http://www.loc.gov/MARC21/slim" |
199 |
> |
200 |
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> |
201 |
|
202 |
<xsl:variable name="redefine" select="0"/> |
203 |
<xsl:variable name="redefine" select="1"/> |
204 |
<!-- Intentional redefine to generate parsing error --> |
205 |
<xsl:template match="record"> |
206 |
</xsl:template> |
207 |
</xsl:stylesheet>} ) if $i == 2; |
208 |
|
209 |
return mytempfile( q{<xsl:stylesheet version="1.0" |
210 |
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
211 |
xmlns:marc="http://www.loc.gov/MARC21/slim" |
212 |
> |
213 |
<xsl:output method="xml" encoding="UTF-8" version="1.0" indent="yes"/> |
214 |
|
215 |
<xsl:template match="/"> |
216 |
<xsl:apply-templates/> |
217 |
</xsl:template> |
218 |
|
219 |
<xsl:template match="node()"> |
220 |
<xsl:copy select="."> |
221 |
<xsl:copy-of select="@*"/> |
222 |
<xsl:apply-templates/> |
223 |
</xsl:copy> |
224 |
</xsl:template> |
225 |
</xsl:stylesheet>} ) if $i == 3; |
226 |
|
227 |
return mytempfile( q{<xsl:stylesheet version="1.0" |
228 |
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
229 |
xmlns:marc="http://www.loc.gov/MARC21/slim" |
230 |
> |
231 |
<xsl:output method="xml" encoding="UTF-8" version="1.0" indent="yes"/> |
232 |
<xsl:param name="injected_variable" /> |
233 |
|
234 |
<xsl:template match="/"> |
235 |
<xsl:apply-templates/> |
236 |
</xsl:template> |
237 |
|
238 |
<xsl:template match="node()"> |
239 |
<xsl:copy> |
240 |
<xsl:value-of select="$injected_variable"/> |
241 |
</xsl:copy> |
242 |
</xsl:template> |
243 |
|
244 |
</xsl:stylesheet>} ) if $i == 4; |
245 |
} |
246 |
|
247 |
sub mytempfile { |
248 |
my ( $fh, $fn ) = tempfile( SUFFIX => '.xsl', UNLINK => 1 ); |
249 |
print $fh $_[0]//''; |
250 |
close $fh; |
251 |
return $fn; |
252 |
} |