2017-04-20 18:15:34 +01:00
use Mojo::Base - strict ;
2017-04-21 17:23:41 +01:00
2017-08-31 17:53:54 +01:00
use FindBin qw/ $Bin / ;
2017-02-20 04:23:14 +00:00
use Test::More ;
use Mojo::JSON ;
2017-04-21 17:23:41 +01:00
use Test::Pear::LocalLoop ;
2017-08-31 17:53:54 +01:00
my $ framework = Test::Pear::LocalLoop - > new (
etc_dir = > "$Bin/../etc" ,
) ;
$ framework - > install_fixtures ( 'search' ) ;
2017-04-21 17:23:41 +01:00
my $ t = $ framework - > framework ;
my $ schema = $ t - > app - > schema ;
2017-02-20 04:23:14 +00:00
2017-08-31 17:53:54 +01:00
#Login as customer
my $ session_key = $ framework - > login ( {
'email' = > 'test1@example.com' ,
'password' = > 'abc123' ,
} ) ;
my $ json ;
my $ upload ;
$ t - > post_ok ( '/api/upload' , form = > {
json = > Mojo::JSON:: encode_json ( {
transaction_value = > 10 ,
transaction_type = > 3 ,
organisation_name = > 'Shoreway Fisheries' ,
street_name = > "2 James St" ,
town = > "Lancaster" ,
postcode = > "LA1 1UP" ,
purchase_time = > "2017-08-14T11:29:07.965+01:00" ,
session_key = > $ session_key ,
} ) ,
file = > { file = > './t/test.jpg' } ,
} )
2017-02-20 04:23:14 +00:00
- > status_is ( 200 )
2017-08-31 17:53:54 +01:00
- > or ( $ framework - > dump_error )
2017-02-20 04:23:14 +00:00
- > json_is ( '/success' , Mojo::JSON - > true ) ;
2017-08-31 17:53:54 +01:00
$ framework - > logout ( $ session_key ) ;
2017-02-20 04:23:14 +00:00
#End of Rufus (customer)
######################################################
#Login as Choco billy (organisation)
print "test 6 - Login - Choco billy (cookies, organisation)\n" ;
2017-08-31 17:53:54 +01:00
$ session_key = $ framework - > login ( {
'email' = > 'org@example.com' ,
'password' = > 'abc123' ,
} ) ;
2017-02-20 04:23:14 +00:00
print "test 7 - Added something containing 'bar'\n" ;
$ json = {
2017-04-20 12:33:56 +01:00
transaction_value = > 10 ,
transaction_type = > 3 ,
organisation_name = > 'The Palatine Bar' ,
street_name = > "The Crescent" ,
2017-02-20 04:23:14 +00:00
town = > "Morecambe" ,
2017-04-19 00:10:14 +01:00
postcode = > "LA4 5BZ" ,
2017-08-14 11:55:52 +01:00
purchase_time = > "2017-08-14T11:29:07.965+01:00" ,
2017-04-19 00:10:14 +01:00
session_key = > $ session_key ,
2017-02-20 04:23:14 +00:00
} ;
2017-04-20 18:15:34 +01:00
$ upload = { json = > Mojo::JSON:: encode_json ( $ json ) , file = > { file = > './t/test.jpg' } } ;
2017-04-06 22:43:27 +01:00
$ t - > post_ok ( '/api/upload' = > form = > $ upload )
2017-02-20 04:23:14 +00:00
- > status_is ( 200 )
- > json_is ( '/success' , Mojo::JSON - > true ) ;
print "test 8 - Added another thing containing 'bar'\n" ;
$ json = {
2017-04-20 12:33:56 +01:00
transaction_value = > 10 ,
transaction_type = > 3 ,
organisation_name = > 'The Sun Hotel & Bar' ,
street_name = > "63-65 Church Street" ,
2017-02-20 04:23:14 +00:00
town = > "Lancaster" ,
2017-04-19 00:10:14 +01:00
postcode = > "LA1 1ET" ,
2017-08-14 11:55:52 +01:00
purchase_time = > "2017-08-14T11:29:07.965+01:00" ,
2017-04-19 00:10:14 +01:00
session_key = > $ session_key ,
2017-02-20 04:23:14 +00:00
} ;
2017-04-20 18:15:34 +01:00
$ upload = { json = > Mojo::JSON:: encode_json ( $ json ) , file = > { file = > './t/test.jpg' } } ;
2017-04-06 22:43:27 +01:00
$ t - > post_ok ( '/api/upload' = > form = > $ upload )
2017-02-20 04:23:14 +00:00
- > status_is ( 200 )
- > json_is ( '/success' , Mojo::JSON - > true ) ;
print "test 9 - Logout Choco billy \n" ;
2017-08-31 17:53:54 +01:00
$ framework - > logout ( $ session_key ) ;
2017-02-20 04:23:14 +00:00
2017-08-31 17:53:54 +01:00
$ session_key = $ framework - > login ( {
'email' = > 'test1@example.com' ,
'password' = > 'abc123' ,
} ) ;
2017-02-20 04:23:14 +00:00
sub check_vars {
my ( $ searchTerm , $ numValidated , $ numUnvalidated ) = @ _ ;
2017-04-19 00:10:14 +01:00
$ t - > post_ok ( '/api/search' = > json = > {
2017-04-21 17:23:41 +01:00
search_name = > $ searchTerm ,
2017-04-19 00:10:14 +01:00
session_key = > $ session_key ,
} )
2017-02-20 04:23:14 +00:00
- > status_is ( 200 )
2017-08-31 17:53:54 +01:00
- > or ( $ framework - > dump_error )
2017-02-20 04:23:14 +00:00
- > json_is ( '/success' , Mojo::JSON - > true )
2019-07-14 15:52:39 +01:00
- > json_has ( "/unvalidated" )
- > json_has ( "/validated" ) ;
2017-02-20 04:23:14 +00:00
my $ sessionJsonTest = $ t - > tx - > res - > json ;
2017-08-14 11:55:52 +01:00
my $ validated = $ sessionJsonTest - > { validated } ;
2017-02-20 04:23:14 +00:00
my $ unvalidated = $ sessionJsonTest - > { unvalidated } ;
my $ validSize = scalar @$ validated ;
my $ unvalidSize = scalar @$ unvalidated ;
is $ validSize , $ numValidated , "validated returned - " . $ searchTerm ;
is $ unvalidSize , $ numUnvalidated , "unvalidated returned - " . $ searchTerm ;
2017-08-14 11:55:52 +01:00
2017-02-20 04:23:14 +00:00
} ;
2017-04-21 17:23:41 +01:00
print "test 11 - search blank\n" ;
2017-08-31 17:53:54 +01:00
check_vars ( " " , 6 , 1 ) ;
2017-04-21 17:23:41 +01:00
2017-02-20 04:23:14 +00:00
print "test 12 - Testing expected values with 'booths'\n" ;
2017-03-10 19:07:23 +00:00
#Expect 0 validated and 0 unvalidated with "booths".
2017-02-20 04:23:14 +00:00
check_vars ( "booths" , 0 , 0 ) ;
print "test 13 - Testing expected values with 'chip'\n" ;
2017-03-10 19:07:23 +00:00
#Expect 1 validated and 0 unvalidated with "chip".
2017-02-20 04:23:14 +00:00
check_vars ( "chip" , 1 , 0 ) ;
print "test 14 - Testing expected values with 'fish, with one unvalidated organisation'\n" ;
#Expect 2 validated and 1 unvalidated with "fish".
check_vars ( "fish" , 2 , 1 ) ;
print "test 15 - Testing expected values with 'bar'\n" ;
#Expect 3 validated and 0 unvalidated with "bar".
check_vars ( "bar" , 3 , 0 ) ;
print "test 16 - Logout Rufus \n" ;
2017-08-31 17:53:54 +01:00
$ framework - > logout ( $ session_key ) ;
2017-02-20 04:23:14 +00:00
#End of Rufus (customer)
######################################################
#Login as Choco billy (organisation)
print "test 17 - Login - Choco billy (cookies, organisation)\n" ;
2017-08-31 17:53:54 +01:00
$ session_key = $ framework - > login ( {
'email' = > 'org@example.com' ,
'password' = > 'abc123' ,
} ) ;
2017-02-20 04:23:14 +00:00
print "test 18 - Testing expected values with 'booths'\n" ;
2017-03-10 19:07:23 +00:00
#Expect 0 validated and 0 unvalidated with "booths".
2017-02-20 04:23:14 +00:00
check_vars ( "booths" , 0 , 0 ) ;
print "test 19 - Testing expected values with 'chip'\n" ;
2017-03-10 19:07:23 +00:00
#Expect 1 validated and 0 unvalidated with "chip".
2017-02-20 04:23:14 +00:00
check_vars ( "chip" , 1 , 0 ) ;
print "test 20 - Testing expected values with 'fish'\n" ;
#Expect 2 validated and 0 unvalidated with "fish".
check_vars ( "fish" , 2 , 0 ) ;
print "test 21 - Testing expected values with 'bar', with two unvalidated organisations\n" ;
#Expect 3 validated and 2 unvalidated with "bar".
check_vars ( "bar" , 3 , 2 ) ;
print "test 22 - Logout Choco billy \n" ;
2017-08-31 17:53:54 +01:00
$ framework - > logout ( $ session_key ) ;
2017-02-20 04:23:14 +00:00
done_testing ( ) ;