From 72813ff2a3b334912243f243e215ca1bab1c6803 Mon Sep 17 00:00:00 2001 From: Finn Date: Thu, 31 Aug 2017 11:41:38 +0100 Subject: [PATCH] Made image upload optional --- lib/Pear/LocalLoop/Controller/Api/Upload.pm | 6 +++--- t/api/upload.t | 15 ++++++++------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/lib/Pear/LocalLoop/Controller/Api/Upload.pm b/lib/Pear/LocalLoop/Controller/Api/Upload.pm index faec57b..08db6cc 100644 --- a/lib/Pear/LocalLoop/Controller/Api/Upload.pm +++ b/lib/Pear/LocalLoop/Controller/Api/Upload.pm @@ -93,7 +93,7 @@ sub post_upload { my $validation = $c->validation; # Test for file before loading the JSON in to the validator - $validation->required('file')->upload->filetype('image/jpeg'); + $validation->optional('file')->upload->filetype('image/jpeg'); $validation->input( $c->stash->{api_json} ); @@ -162,14 +162,14 @@ sub post_upload { my $upload = $validation->param('file'); my $purchase_time = $c->parse_iso_datetime($validation->param('purchase_time') || ''); $purchase_time ||= DateTime->now(); - my $file = $c->store_file_from_upload( $upload ); + my $file = defined $upload ? $c->store_file_from_upload( $upload ) : undef; my $new_transaction = $organisation->create_related( 'transactions', { buyer => $user, value => $transaction_value, - proof_image => $file, + ( defined $file ? ( proof_image => $file ) : ( proof_image => 'a' ) ), purchase_time => $c->format_db_datetime($purchase_time), } ); diff --git a/t/api/upload.t b/t/api/upload.t index 72020d3..ca925cf 100644 --- a/t/api/upload.t +++ b/t/api/upload.t @@ -202,9 +202,10 @@ $json = { }; $upload = {json => Mojo::JSON::encode_json($json)}; $t->post_ok('/api/upload' => form => $upload ) - ->status_is(400) - ->json_is('/success', Mojo::JSON->false) - ->content_like(qr/no file uploaded/i); +->status_is(200) +->json_is('/success', Mojo::JSON->true) +->json_like('/message', qr/Upload Successful/); +is $schema->resultset('Transaction')->count, 1, "1 transaction"; print "test 13 - organisation_id missing (type 1: already validated)\n"; $json = { @@ -235,7 +236,7 @@ $t->post_ok('/api/upload' => form => $upload ) ->content_like(qr/organisation_id does not exist in the database/i); print "test 15 - valid addition. (type 1: already validated)\n"; -is $schema->resultset('Transaction')->count, 0, "no transactions"; +is $schema->resultset('Transaction')->count, 1, "1 transaction"; $json = { transaction_value => 10, transaction_type => 1, @@ -248,7 +249,7 @@ $t->post_ok('/api/upload' => form => $upload ) ->status_is(200) ->json_is('/success', Mojo::JSON->true) ->json_like('/message', qr/Upload Successful/); -is $schema->resultset('Transaction')->count, 1, "1 transaction"; +is $schema->resultset('Transaction')->count, 2, "2 transaction"; # Add type 3 (new organisation) checking. @@ -445,7 +446,7 @@ $t->post_ok('/api/login' => json => $testJson) $session_key = $t->tx->res->json('/session_key'); print "test 30 - organisation buy from another organisation\n"; -is $schema->resultset('Transaction')->count, 1, "1 transaction"; +is $schema->resultset('Transaction')->count, 2, "2 transaction"; $json = { transaction_value => 100000, transaction_type => 1, @@ -458,6 +459,6 @@ $t->post_ok('/api/upload' => form => $upload ) ->status_is(200) ->json_is('/success', Mojo::JSON->true) ->json_like('/message', qr/Upload Successful/); -is $schema->resultset('Transaction')->count, 2, "2 transaction"; +is $schema->resultset('Transaction')->count, 3, "3 transaction"; done_testing();