| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
package OpenGuides::Test; |
|
2
|
|
|
|
|
|
|
|
|
3
|
93
|
|
|
93
|
|
145517
|
use OpenGuides::Config; |
|
|
93
|
|
|
|
|
281
|
|
|
|
93
|
|
|
|
|
880
|
|
|
4
|
93
|
|
|
93
|
|
36562
|
use Wiki::Toolkit::Setup::SQLite; |
|
|
93
|
|
|
|
|
982171
|
|
|
|
93
|
|
|
|
|
2765
|
|
|
5
|
|
|
|
|
|
|
|
|
6
|
93
|
|
|
93
|
|
634
|
use strict; |
|
|
93
|
|
|
|
|
189
|
|
|
|
93
|
|
|
|
|
2689
|
|
|
7
|
93
|
|
|
93
|
|
474
|
use vars qw( $VERSION ); |
|
|
93
|
|
|
|
|
179
|
|
|
|
93
|
|
|
|
|
4687
|
|
|
8
|
|
|
|
|
|
|
$VERSION = '0.07'; |
|
9
|
|
|
|
|
|
|
|
|
10
|
93
|
|
|
93
|
|
3048
|
use CGI; |
|
|
93
|
|
|
|
|
66803
|
|
|
|
93
|
|
|
|
|
782
|
|
|
11
|
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
=head1 NAME |
|
13
|
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
OpenGuides::Test - Methods to help test OpenGuides applications. |
|
15
|
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
=head1 DESCRIPTION |
|
17
|
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
Provides methods to help when writing tests for OpenGuides. |
|
19
|
|
|
|
|
|
|
Distributed and installed as part of the OpenGuides project, not |
|
20
|
|
|
|
|
|
|
intended for independent installation. This documentation is probably |
|
21
|
|
|
|
|
|
|
only useful to OpenGuides developers. |
|
22
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
=head1 SYNOPSIS |
|
24
|
|
|
|
|
|
|
|
|
25
|
|
|
|
|
|
|
use OpenGuides; |
|
26
|
|
|
|
|
|
|
use OpenGuides::Test; |
|
27
|
|
|
|
|
|
|
|
|
28
|
|
|
|
|
|
|
OpenGuides::Test::refresh_db(); |
|
29
|
|
|
|
|
|
|
|
|
30
|
|
|
|
|
|
|
my $config = OpenGuides::Test->make_basic_config; |
|
31
|
|
|
|
|
|
|
$config->default_language( "nl" ); |
|
32
|
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
my $guide = OpenGuides->new( config => $config ); |
|
34
|
|
|
|
|
|
|
|
|
35
|
|
|
|
|
|
|
OpenGuides::Test->write_data( |
|
36
|
|
|
|
|
|
|
guide => $guide, |
|
37
|
|
|
|
|
|
|
node => "Crabtree Tavern", |
|
38
|
|
|
|
|
|
|
os_x => 523465, |
|
39
|
|
|
|
|
|
|
os_y => 177490, |
|
40
|
|
|
|
|
|
|
categories => "Pubs", |
|
41
|
|
|
|
|
|
|
); |
|
42
|
|
|
|
|
|
|
|
|
43
|
|
|
|
|
|
|
=head1 METHODS |
|
44
|
|
|
|
|
|
|
|
|
45
|
|
|
|
|
|
|
=over 4 |
|
46
|
|
|
|
|
|
|
|
|
47
|
|
|
|
|
|
|
=item B |
|
48
|
|
|
|
|
|
|
|
|
49
|
|
|
|
|
|
|
my $config = OpenGuides::Test->make_basic_config; |
|
50
|
|
|
|
|
|
|
$config->default_language( "nl" ); |
|
51
|
|
|
|
|
|
|
|
|
52
|
|
|
|
|
|
|
Makes an L object with needed fields pre-filled. You can |
|
53
|
|
|
|
|
|
|
mess with it as you like then. |
|
54
|
|
|
|
|
|
|
|
|
55
|
|
|
|
|
|
|
=cut |
|
56
|
|
|
|
|
|
|
|
|
57
|
|
|
|
|
|
|
sub make_basic_config { |
|
58
|
87
|
|
|
87
|
1
|
34193996
|
my $config = OpenGuides::Config->new( |
|
59
|
|
|
|
|
|
|
vars => { |
|
60
|
|
|
|
|
|
|
dbtype => "sqlite", |
|
61
|
|
|
|
|
|
|
dbname => "t/node.db", |
|
62
|
|
|
|
|
|
|
indexing_directory => "t/indexes", |
|
63
|
|
|
|
|
|
|
script_url => "", |
|
64
|
|
|
|
|
|
|
script_name => "", |
|
65
|
|
|
|
|
|
|
site_name => "Test", |
|
66
|
|
|
|
|
|
|
template_path => "./templates", |
|
67
|
|
|
|
|
|
|
custom_template_path => "./custom-templates", |
|
68
|
|
|
|
|
|
|
home_name => "Home", |
|
69
|
|
|
|
|
|
|
geo_handler => 1, |
|
70
|
|
|
|
|
|
|
force_wgs84 => 1, |
|
71
|
|
|
|
|
|
|
contact_email => 'admins@example.org', |
|
72
|
|
|
|
|
|
|
moderate_whitelist => "", |
|
73
|
|
|
|
|
|
|
} |
|
74
|
|
|
|
|
|
|
); |
|
75
|
|
|
|
|
|
|
|
|
76
|
87
|
|
|
|
|
619
|
eval { require Wiki::Toolkit::Search::Plucene; }; |
|
|
87
|
|
|
|
|
99911
|
|
|
77
|
87
|
50
|
|
|
|
8006949
|
if ( $@ ) { $config->use_plucene ( 0 ) }; |
|
|
0
|
|
|
|
|
0
|
|
|
78
|
|
|
|
|
|
|
|
|
79
|
87
|
|
|
|
|
567
|
return $config; |
|
80
|
|
|
|
|
|
|
} |
|
81
|
|
|
|
|
|
|
|
|
82
|
|
|
|
|
|
|
=item B |
|
83
|
|
|
|
|
|
|
|
|
84
|
|
|
|
|
|
|
my $config = OpenGuides::Test->make_basic_config; |
|
85
|
|
|
|
|
|
|
my $guide = OpenGuides->new( config => $config ); |
|
86
|
|
|
|
|
|
|
|
|
87
|
|
|
|
|
|
|
OpenGuides::Test->write_data( |
|
88
|
|
|
|
|
|
|
guide => $guide, |
|
89
|
|
|
|
|
|
|
node => "Crabtree Tavern", |
|
90
|
|
|
|
|
|
|
os_x => 523465, |
|
91
|
|
|
|
|
|
|
os_y => 177490, |
|
92
|
|
|
|
|
|
|
categories => "Pubs\r\nPub Food", |
|
93
|
|
|
|
|
|
|
); |
|
94
|
|
|
|
|
|
|
|
|
95
|
|
|
|
|
|
|
This method calls the C method to make its CGI |
|
96
|
|
|
|
|
|
|
object; you can supply values for any key mentioned there. You should |
|
97
|
|
|
|
|
|
|
supply them exactly as they would come from a CGI form, eg lines in a |
|
98
|
|
|
|
|
|
|
textarea are separated by C<\r\n>. |
|
99
|
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
This method will automatically grab the checksum from the database, so |
|
101
|
|
|
|
|
|
|
even if the node already exists your data will still be written. If you |
|
102
|
|
|
|
|
|
|
don't want this behaviour (for example, if you're testing edit conflicts) |
|
103
|
|
|
|
|
|
|
then pass in a true value to the C parameter: |
|
104
|
|
|
|
|
|
|
|
|
105
|
|
|
|
|
|
|
OpenGuides::Test->write_data( |
|
106
|
|
|
|
|
|
|
guide => $guide, |
|
107
|
|
|
|
|
|
|
node => "Crabtree Tavern", |
|
108
|
|
|
|
|
|
|
omit_checksum => 1, |
|
109
|
|
|
|
|
|
|
); |
|
110
|
|
|
|
|
|
|
|
|
111
|
|
|
|
|
|
|
If you want to grab the output, pass a true value to C: |
|
112
|
|
|
|
|
|
|
|
|
113
|
|
|
|
|
|
|
my $output = OpenGuides::Test->write_data( |
|
114
|
|
|
|
|
|
|
guide => $guide, |
|
115
|
|
|
|
|
|
|
node => "Crabtree Tavern", |
|
116
|
|
|
|
|
|
|
return_output => 1, |
|
117
|
|
|
|
|
|
|
); |
|
118
|
|
|
|
|
|
|
|
|
119
|
|
|
|
|
|
|
Similarly, if you pass a true value to C, the return value |
|
120
|
|
|
|
|
|
|
will be the variables which would have been passed to the template for output: |
|
121
|
|
|
|
|
|
|
|
|
122
|
|
|
|
|
|
|
my %vars = OpenGuides::Test->write_data( |
|
123
|
|
|
|
|
|
|
guide => $guide, |
|
124
|
|
|
|
|
|
|
node => "Crabtree Tavern", |
|
125
|
|
|
|
|
|
|
return_tt_vars => 1, |
|
126
|
|
|
|
|
|
|
); |
|
127
|
|
|
|
|
|
|
|
|
128
|
|
|
|
|
|
|
=cut |
|
129
|
|
|
|
|
|
|
|
|
130
|
|
|
|
|
|
|
sub write_data { |
|
131
|
317
|
|
|
317
|
1
|
1316911
|
my ($class, %args) = @_; |
|
132
|
|
|
|
|
|
|
|
|
133
|
317
|
|
|
|
|
1034
|
my $guide = delete $args{guide}; |
|
134
|
317
|
|
|
|
|
872
|
my $node = delete $args{node}; |
|
135
|
|
|
|
|
|
|
|
|
136
|
317
|
|
|
|
|
1610
|
my $q = $class->make_cgi_object( %args ); |
|
137
|
|
|
|
|
|
|
|
|
138
|
|
|
|
|
|
|
# Get the checksum of the current contents if necessary. |
|
139
|
317
|
100
|
|
|
|
1501
|
unless ( $args{omit_checksum} ) { |
|
140
|
315
|
|
|
|
|
1419
|
my $wiki = $guide->wiki; |
|
141
|
315
|
100
|
|
|
|
1801
|
if ( $wiki->node_exists( $node ) ) { |
|
142
|
16
|
|
|
|
|
31910
|
my %data = $wiki->retrieve_node( $node ); |
|
143
|
16
|
|
|
|
|
26516
|
$q->param( -name => "checksum", -value => $data{checksum} ); |
|
144
|
|
|
|
|
|
|
} |
|
145
|
|
|
|
|
|
|
} |
|
146
|
|
|
|
|
|
|
|
|
147
|
317
|
100
|
|
|
|
229410
|
if ( $args{return_output} ) { |
|
|
|
50
|
|
|
|
|
|
|
148
|
275
|
|
|
|
|
1587
|
return $guide->commit_node( |
|
149
|
|
|
|
|
|
|
return_output => 1, |
|
150
|
|
|
|
|
|
|
id => $node, |
|
151
|
|
|
|
|
|
|
cgi_obj => $q, |
|
152
|
|
|
|
|
|
|
); |
|
153
|
|
|
|
|
|
|
} elsif ( $args{return_tt_vars} ) { |
|
154
|
0
|
|
|
|
|
0
|
return $guide->commit_node( |
|
155
|
|
|
|
|
|
|
return_tt_vars => 1, |
|
156
|
|
|
|
|
|
|
id => $node, |
|
157
|
|
|
|
|
|
|
cgi_obj => $q, |
|
158
|
|
|
|
|
|
|
); |
|
159
|
|
|
|
|
|
|
} else { |
|
160
|
42
|
|
|
|
|
263
|
$guide->commit_node( |
|
161
|
|
|
|
|
|
|
id => $node, |
|
162
|
|
|
|
|
|
|
cgi_obj => $q, |
|
163
|
|
|
|
|
|
|
); |
|
164
|
|
|
|
|
|
|
} |
|
165
|
|
|
|
|
|
|
} |
|
166
|
|
|
|
|
|
|
|
|
167
|
|
|
|
|
|
|
=item B |
|
168
|
|
|
|
|
|
|
|
|
169
|
|
|
|
|
|
|
my $q = OpenGuides::Test->make_cgi_object; |
|
170
|
|
|
|
|
|
|
|
|
171
|
|
|
|
|
|
|
You can supply values for the following keys: C, C, |
|
172
|
|
|
|
|
|
|
C, C, C, |
|
173
|
|
|
|
|
|
|
C, C, C, C, |
|
174
|
|
|
|
|
|
|
C, C, C, C, C, |
|
175
|
|
|
|
|
|
|
C, C, C, C, C, C, |
|
176
|
|
|
|
|
|
|
C, C, C, C. You should supply |
|
177
|
|
|
|
|
|
|
them exactly as they would come from a CGI form, eg lines in a textarea |
|
178
|
|
|
|
|
|
|
are separated by C<\r\n>. |
|
179
|
|
|
|
|
|
|
|
|
180
|
|
|
|
|
|
|
=cut |
|
181
|
|
|
|
|
|
|
|
|
182
|
|
|
|
|
|
|
sub make_cgi_object { |
|
183
|
329
|
|
|
329
|
1
|
14819
|
my ( $class, %args ) = @_; |
|
184
|
|
|
|
|
|
|
|
|
185
|
|
|
|
|
|
|
# Set up CGI parameters ready for a node write. |
|
186
|
|
|
|
|
|
|
# Most of these are in here to avoid uninitialised value warnings. |
|
187
|
329
|
|
|
|
|
1856
|
my $q = CGI->new( "" ); |
|
188
|
329
|
|
100
|
|
|
67525
|
$args{content} ||= "foo"; |
|
189
|
329
|
|
100
|
|
|
2037
|
$args{edit_type} ||= "Normal edit"; |
|
190
|
329
|
|
|
|
|
1295
|
for my $param ( qw( content categories locales node_image node_image_licence |
|
191
|
|
|
|
|
|
|
node_image_copyright node_image_url phone fax website |
|
192
|
|
|
|
|
|
|
hours_text address postcode map_link os_x os_y osie_x osie_y |
|
193
|
|
|
|
|
|
|
latitude longitude summary username comment edit_type |
|
194
|
|
|
|
|
|
|
) |
|
195
|
|
|
|
|
|
|
) { |
|
196
|
7896
|
100
|
|
|
|
698376
|
if (defined $args{$param}) { |
|
197
|
1276
|
|
|
|
|
5870
|
$q->param( -name => $param, -value => $args{$param} ); |
|
198
|
|
|
|
|
|
|
} else { |
|
199
|
6620
|
|
|
|
|
25255
|
$q->param( -name => $param, -value => '' ); |
|
200
|
|
|
|
|
|
|
} |
|
201
|
|
|
|
|
|
|
} |
|
202
|
329
|
|
|
|
|
31725
|
$ENV{REMOTE_ADDR} = "127.0.0.1"; |
|
203
|
|
|
|
|
|
|
|
|
204
|
329
|
|
|
|
|
1290
|
return $q; |
|
205
|
|
|
|
|
|
|
} |
|
206
|
|
|
|
|
|
|
|
|
207
|
|
|
|
|
|
|
=item B |
|
208
|
|
|
|
|
|
|
|
|
209
|
|
|
|
|
|
|
Openguides::Test::refresh_db(); |
|
210
|
|
|
|
|
|
|
|
|
211
|
|
|
|
|
|
|
Unlink the existing SQLite database t/node.db and Plucene/Lucy indexes. |
|
212
|
|
|
|
|
|
|
Then create a new SQLite database t/node.db |
|
213
|
|
|
|
|
|
|
|
|
214
|
|
|
|
|
|
|
=cut |
|
215
|
|
|
|
|
|
|
sub refresh_db { |
|
216
|
90
|
|
|
90
|
1
|
1856394
|
unlink "t/node.db"; |
|
217
|
90
|
|
|
|
|
103476
|
unlink ; |
|
218
|
90
|
|
|
|
|
1091
|
Wiki::Toolkit::Setup::SQLite::setup( { dbname => "t/node.db" } ); |
|
219
|
|
|
|
|
|
|
} |
|
220
|
|
|
|
|
|
|
|
|
221
|
|
|
|
|
|
|
|
|
222
|
|
|
|
|
|
|
=back |
|
223
|
|
|
|
|
|
|
|
|
224
|
|
|
|
|
|
|
=head1 AUTHOR |
|
225
|
|
|
|
|
|
|
|
|
226
|
|
|
|
|
|
|
The OpenGuides Project (openguides-dev@lists.openguides.org) |
|
227
|
|
|
|
|
|
|
|
|
228
|
|
|
|
|
|
|
=head1 COPYRIGHT |
|
229
|
|
|
|
|
|
|
|
|
230
|
|
|
|
|
|
|
Copyright (C) 2004-2013 The OpenGuides Project. All Rights Reserved. |
|
231
|
|
|
|
|
|
|
|
|
232
|
|
|
|
|
|
|
This module is free software; you can redistribute it and/or modify it |
|
233
|
|
|
|
|
|
|
under the same terms as Perl itself. |
|
234
|
|
|
|
|
|
|
|
|
235
|
|
|
|
|
|
|
=cut |
|
236
|
|
|
|
|
|
|
|
|
237
|
|
|
|
|
|
|
1; |