1
#!/usr/bin/perl -Ilib -I../lib
3
# Copyright (c) 2000-2006 Nathan Wiger <nate@wiger.org>.
4
# All Rights Reserved. If you're reading this, you're bored.
5
# 1d-messages.t - messages and localization
8
use vars qw($TESTING $DEBUG);
10
$DEBUG = $ENV{DEBUG} || 0;
13
# use a BEGIN block so we print our plan before CGI::FormBuilder is loaded
16
# try to load all the .pm's except templates from MANIFEST
17
open(M, "<MANIFEST") || warn "Can't open MANIFEST ($!) - skipping imports";
18
chomp(@pm = grep m#Messages/[a-z]+_.*#, grep /\.pm$/, <M>);
22
# There are 34 keys, times the number of modules, plus one load of the module.
23
# Then, also add in our 30 custom tests as well.
26
my $numtests = (34 * @pm) + @pm + 34;
28
plan tests => $numtests;
30
# success if we said NOTEST
32
ok(1) for 1..$numtests;
37
# Messages, both inline and file
39
form_invalid_text => 'You fucked up',
40
js_invalid_text => 'Yep, shit sucks!',
41
form_select_default => '*<- choose ->*',
42
taco_salad => 'is delicious',
45
form_invalid_opentag => '<font color="red"><b>',
46
form_invalid_closetag => '</b></font>',
47
form_invalid_input => 'Invalid entry',
48
form_invalid_select => 'Select an option from this list',
49
form_invalid_checkbox => 'Check one or more options',
50
form_invalid_radio => 'Choose an option',
51
form_invalid_password => 'Invalid entry',
52
form_invalid_textarea => 'Please fill this in',
53
form_invalid_file => 'Invalid filename',
54
form_invalid_default => 'Invalid entry',
57
my $locale = "fb_FAKE";
58
my $messages = "messages.$locale";
59
open(M, ">$messages") || warn "Can't write $messages: $!";
60
while (my($k,$v) = each %messages) {
61
print M join(' ', $k, ref($v) ? @$v : $v), "\n";
65
# Fake a submission request
66
$ENV{REQUEST_METHOD} = 'GET';
67
$ENV{QUERY_STRING} = 'ticket=111&user=pete&replacement=TRUE&action=Unsubscribe&name=Pete+Peteson&email=pete%40peteson.com&extra=junk&_submitted=1&blank=&two=&two=';
71
# Now manually try a whole bunch of things
72
my $hash = CGI::FormBuilder->new(
74
fields => [qw/user name email/],
75
messages => \%messages
78
for my $k (sort keys %messages) {
80
ok($hash->messages->$k, ref($messages{$k}) ? "@{$messages{$k}}" : $messages{$k});
83
my $file = CGI::FormBuilder->new(
85
fields => [qw/user name email/],
86
messages => $messages,
89
for my $k (sort keys %messages) {
91
ok($file->messages->$k, ref($messages{$k}) ? "@{$messages{$k}}" : $messages{$k});
96
# Check to ensure our lang and charset work correctly
98
ok($file->charset, 'iso-8859-1');
99
ok($file->lang, 'en_US');
100
ok($file->dtd, <<EOD);
101
<?xml version="1.0" encoding="iso-8859-1"?>
103
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
104
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
105
<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US">
107
ok($file->charset('yo.momma'), 'yo.momma');
110
# Final test set is to just make sure we have all the keys for all modules
111
require CGI::FormBuilder::Messages::default;
112
my %need = CGI::FormBuilder::Messages::locale->messages;
113
my @keys = keys %need;
115
my($lang) = $pm =~ /([a-z]+_[A-Z]+)/;
116
my $skip = $lang ? undef : "skip: Can't get language from $pm";
118
eval { $form = CGI::FormBuilder->new(messages => ":$lang"); };
121
skip($skip, $form->{messages}{$_}) || warn "Locale $lang: missing $_\n";