diff options
-rw-r--r-- | perllib/FixMyStreet/TestMech.pm | 26 | ||||
-rw-r--r-- | t/app/controller/auth.t | 9 |
2 files changed, 28 insertions, 7 deletions
diff --git a/perllib/FixMyStreet/TestMech.pm b/perllib/FixMyStreet/TestMech.pm index 3c2eb533d..26738556d 100644 --- a/perllib/FixMyStreet/TestMech.pm +++ b/perllib/FixMyStreet/TestMech.pm @@ -101,9 +101,31 @@ sub log_out_ok { $mech->not_logged_in_ok; } +=head2 delete_user + + $mech->delete_user( $user ); + $mech->delete_user( $email ); + +Delete the current user, including linked objects like problems etc. Can be +either a user object or an email address. + +=cut + sub delete_user { - my $mech = shift; - my $user = shift; + my $mech = shift; + my $email_or_user = shift; + + my $user = + ref $email_or_user + ? $email_or_user + : FixMyStreet::App->model('DB::User') + ->find( { email => $email_or_user } ); + + # If no user found we can't delete them + if ( !$user ) { + ok( 1, "No user found to delete" ); + return 1; + } $mech->log_out_ok; ok( $_->delete, "delete problem " . $_->title ) # diff --git a/t/app/controller/auth.t b/t/app/controller/auth.t index 78d3a5abf..9f08c8aa9 100644 --- a/t/app/controller/auth.t +++ b/t/app/controller/auth.t @@ -1,18 +1,18 @@ use strict; use warnings; -use Test::More tests => 94; +use Test::More; use FixMyStreet::TestMech; my $mech = FixMyStreet::TestMech->new; my $test_email = 'test@example.com'; my $test_password = 'foobar'; +$mech->delete_user($test_email); END { - ok( FixMyStreet::App->model('DB::User')->find( { email => $_ } )->delete, - "delete test user '$_'" ) - for ($test_email); + $mech->delete_user($test_email); + done_testing(); } $mech->get_ok('/auth'); @@ -224,4 +224,3 @@ $mech->content_contains( 'Email or password wrong', 'found error message' ); # more test: # TODO: test that email are always lowercased - |