# contains some common data structures for *.t: use strict; use warnings; BEGIN { use lib '/home/raj/perl5/lib/perl5'; use FindBin; # warn $FindBin::Bin; use lib $FindBin::Bin . '/..'; # for ngs.sqlite $Dancer2::Test::NO_WARN = 1; # deprecated } open my $fh, '>' . "./t/response.htm" or die $!; sub construct_request { my $test_data = shift; # warn Dumper $test_data; # arrayref, or AoA my $params = _get_form_params(); # polyphen, sift, etc # emulate src data text file: my $file_header = _get_file_header($test_data); # warn Dumper $header; my $file_data = join "\n", ( join "\t", @$file_header ), ( join "\n", map { _make_row($_ ) } @$test_data ); # warn $file_data; my $files = _get_data_file(); $files->{data} = $file_data; my %args = ( headers => [ [ Content_Type => 'form-data' ] ], params => $params, files => [ $files ], ); return \%args; } sub form_params { return _get_form_params() } sub print_output { my $response = shift; print $fh $response->{content}; } sub _make_row { my $data = shift; # warn Dumper $data; # arrayref return join "\t", @$data } # returns col headers to match number of samples passed in $test_data: sub _get_file_header { my $test_data = shift; # warn Dumper $test_data; # AoA my $dataset = @{$test_data}[0]; # warn Dumper $dataset; arrayref # no. of sampless = dataset size minus 5 (common cols) / 2 (results in col pairs): my $no_of_samples = ( scalar @$dataset - 5 ) / 2; # warn $no_of_samples; my @cols = qw( Reference Variant Status Max-combined-% Max-combined-of ); push @cols, ( "H$_/10-combined-%", "H$_/10-combined-of", ) for ( 1 .. $no_of_samples ); # H1/10, H2/10, etc # warn Dumper \@cols; return \@cols; } sub _get_form_params { return { check_existing => 1, coding_only => 1, regulatory => 1, data_src => 'data.txt', polyphen => 'b', sift => 'b', db => 'core', } } sub _get_data_file { return { filename => 'data.txt', name => 'data_src', data => undef, # created in construct_request using .t $data, } } 1;