diff options
-rw-r--r-- | t/app/model/problem.t | 123 |
1 files changed, 122 insertions, 1 deletions
diff --git a/t/app/model/problem.t b/t/app/model/problem.t index 74dd877ae..1b8804fce 100644 --- a/t/app/model/problem.t +++ b/t/app/model/problem.t @@ -3,10 +3,13 @@ use strict; use warnings; -use Test::More tests => 4; +use Test::More; use FixMyStreet; use FixMyStreet::App; +use mySociety::Locale; + +mySociety::Locale::gettext_domain('FixMyStreet'); my $problem_rs = FixMyStreet::App->model('DB::Problem'); @@ -32,3 +35,121 @@ is $problem->confirmed_local, undef, 'inflating null confirmed ok'; is $problem->whensent_local, undef, 'inflating null confirmed ok'; is $problem->lastupdate_local, undef, 'inflating null confirmed ok'; is $problem->created_local, undef, 'inflating null confirmed ok'; + +for my $test ( + { + desc => 'more or less empty problem', + changed => {}, + errors => { + title => 'Please enter a subject', + detail => 'Please enter some details', + council => 'No council selected', + name => 'Please enter your name', + } + }, + { + desc => 'name too short', + changed => { + name => 'xx', + }, + errors => { + title => 'Please enter a subject', + detail => 'Please enter some details', + council => 'No council selected', + name => 'Please enter your full name, councils need this information - if you do not wish your name to be shown on the site, untick the box', + } + }, + { + desc => 'name is anonymous', + changed => { + name => 'anonymous', + }, + errors => { + title => 'Please enter a subject', + detail => 'Please enter some details', + council => 'No council selected', + name => 'Please enter your full name, councils need this information - if you do not wish your name to be shown on the site, untick the box', + } + }, + { + desc => 'correct name', + changed => { + name => 'A User', + }, + errors => { + title => 'Please enter a subject', + detail => 'Please enter some details', + council => 'No council selected', + } + }, + { + desc => 'correct title', + changed => { + title => 'A Title', + }, + errors => { + detail => 'Please enter some details', + council => 'No council selected', + } + }, + { + desc => 'correct detail', + changed => { + detail => 'Some information about the problem', + }, + errors => { + council => 'No council selected', + } + }, + { + desc => 'incorrectly formatted council', + changed => { + council => 'my council', + }, + errors => { + council => 'No council selected', + } + }, + { + desc => 'correctly formatted council', + changed => { + council => '1001', + }, + errors => { + } + }, + { + desc => 'bad category', + changed => { + category => '-- Pick a category --', + }, + errors => { + category => 'Please choose a category', + } + }, + { + desc => 'bad category', + changed => { + category => '-- Pick a property type --', + }, + errors => { + category => 'Please choose a property type', + } + }, + { + desc => 'correct category', + changed => { + category => 'Horse!', + }, + errors => { + } + }, +) { + $problem->$_( $test->{changed}->{$_} ) for keys %{$test->{changed}}; + + subtest $test->{desc} => sub { + is_deeply $problem->check_for_errors, $test->{errors}, 'check for errors'; + }; +} + +done_testing(); |