diff --git a/lib/Pear/LocalLoop.pm b/lib/Pear/LocalLoop.pm index 7a5697c..ef7106d 100644 --- a/lib/Pear/LocalLoop.pm +++ b/lib/Pear/LocalLoop.pm @@ -189,7 +189,7 @@ sub startup { $admin_routes->get('/transactions')->to('admin-transactions#index'); $admin_routes->get('/transactions/:id')->to('admin-transactions#read'); $admin_routes->get('/transactions/:id/image')->to('admin-transactions#image'); - $admin_routes->get('/transactions/:id/delete')->to('admin-transactions#delete'); + $admin_routes->post('/transactions/:id/delete')->to('admin-transactions#delete'); # my $user_routes = $r->under('/')->to('root#under'); diff --git a/t/admin/transaction.t b/t/admin/transaction.t new file mode 100644 index 0000000..4419213 --- /dev/null +++ b/t/admin/transaction.t @@ -0,0 +1,74 @@ +use Mojo::Base -strict; + +use FindBin qw/ $Bin /; + +use Test::More; +use Mojo::JSON; +use Test::Pear::LocalLoop; +use DateTime; + +my $framework = Test::Pear::LocalLoop->new( + etc_dir => "$Bin/../etc", +); +$framework->install_fixtures('users'); + +my $t = $framework->framework; +my $schema = $t->app->schema; + +my $start = DateTime->today->subtract( hours => 12 ); + +# create 30 days worth of data +for my $count ( 0 .. 29 ) { + my $trans_day = $start->clone->subtract( days => $count ); + + create_random_transaction( 'test1@example.com', $trans_day ); + if ( $count % 2 ) { + create_random_transaction( 'test2@example.com', $trans_day ); + } + if ( $count % 3 ) { + create_random_transaction( 'test3@example.com', $trans_day ); + } + if ( $count % 4 ) { + create_random_transaction( 'test4@example.com', $trans_day ); + } +} + +#login to admin +$t->ua->max_redirects(10); +$t->post_ok('/admin', form => { + email => 'admin@example.com', + password => 'abc123', +})->status_is(200); + +#Read valid transaction +$t->get_ok("/admin/transactions/1") + ->status_is(200)->or($framework->dump_error); + +#get stock image for valid transaction +$t->get_ok("/admin/transactions/1/image") + ->status_is(200)->or($framework->dump_error); + +#Delete valid transaction +$t->post_ok("/admin/transactions/1/delete") + ->status_is(200)->or($framework->dump_error) + ->content_like(qr/Successfully deleted transaction/); + +#Read deleted transaction +$t->get_ok("/admin/transactions/1") + ->content_like(qr/No transaction found/); + +sub create_random_transaction { + my $buyer = shift; + my $time = shift; + + my $buyer_result = $schema->resultset('User')->find({ email => $buyer })->entity; + my $seller_result = $schema->resultset('Organisation')->find({ name => 'Test Org' })->entity; + $schema->resultset('Transaction')->create({ + buyer => $buyer_result, + seller => $seller_result, + value => 10, + purchase_time => $time, + }); +} + +done_testing; diff --git a/templates/admin/transactions/read.html.ep b/templates/admin/transactions/read.html.ep index 5cbf658..9eb9596 100644 --- a/templates/admin/transactions/read.html.ep +++ b/templates/admin/transactions/read.html.ep @@ -14,10 +14,14 @@