# tests _want_vep_result() logic:
use NGS::Test::Common; # imports all required modules (NGS, Plack::Test, etc)
my $app = NGS->to_app;
my $test = Plack::Test->create($app);
# test data ====================================================================
my @test_data = ( # synonymous_variant + variation =~ COSM*
[
'p53 exon 6.2 NEW',
'137:T/C',
'Accepted',
100, 8,
4.94, 81,
],
);
# ==============================================================================
my $content = create_content(\@test_data); # can return either array, or arrayref
my $response = $test->request( POST '/vep', @$content ); # print_response($response);
is( $response->code, 200, '[POST /vep] success' );
# result = 'match' on COSM:
check_response( $response->content, 'p53 exon 6.2 NEW \[137:T/C\]' );
check_response( $response->content, 'Processed 1 vep input rows' );
check_response( $response->content, 'Sample results for data src "data.txt" \[1\]' );
check_response( $response->content, 'Sample match failures \[0\]' );
check_response( $response->content, 'VEP results \[8\]' );
check_response( $response->content, 'Non-CDS VEP results \[0\]' );
check_response( $response->content, 'synonymous_variant' );
{ # substitute WT exon 7.2 [177:G/C] - stop_gained with variation = '-':
$test_data[0][0] = 'WT exon 7.2';
$test_data[0][1] = '177:G/C'; # warn Dumper \@test_data;
my @content = create_content(\@test_data); # as array to distinguish from $content
# result = 'match' on var = '-' & consequence not synonymous_variant
my $response = $test->request( POST '/vep', @content ); # print_output($response);
is( $response->code, 200, '[POST /vep] success' ); # exit;
check_response( $response->content, 'Sample results for data src "data.txt" \[1\]' );
check_response( $response->content, 'Sample match failures \[0\]' );
check_response( $response->content, 'VEP results \[7\]' );
}
{ # substitute WT exon 7.2 [177:G/A] - synonymous_variant with variation = '-':
$test_data[0][0] = 'WT exon 7.2';
$test_data[0][1] = '177:G/A'; # warn Dumper \@test_data;
my @content = create_content(\@test_data);
my $response = $test->request( POST '/vep', @content ); # print_output($response);
is( $response->code, 200, '[POST /vep] success' ); # exit;
# result = 'no match' on consequence = synonymous_variant
check_response( $response->content, 'WT exon 7.2 \[177:G/A\]' );
check_response( $response->content, 'Sample results for data src "data.txt" \[0\]' );
check_response( $response->content, 'Sample match failures \[1\]' );
check_response( $response->content, 'VEP results \[7\]' );
}
{ # substitute ASXL exon 12.2 [157:G/A] - missense_variant with variation =~ 'rs*':
$test_data[0][0] = 'ASXL exon 12.2';
$test_data[0][1] = '157:G/A'; # warn Dumper \@test_data;
my @content = create_content(\@test_data);
my $response = $test->request( POST '/vep', @content ); # print_output($response);
is( $response->code, 200, '[POST /vep] success' ); # exit;
# result = 'no match' on variation not one of COSM*, TMP* or '-'
check_response( $response->content, 'ASXL exon 12.2 \[157:G/A\]' );
check_response( $response->content, 'Sample results for data src "data.txt" \[0\]' );
check_response( $response->content, 'Sample match failures \[1\]' );
check_response( $response->content, 'VEP results \[2\]' );
}
{ # substitute IDH 1.1 [146:G/A] - synonymous_variant with variation =~ 'rs*':
$test_data[0][0] = 'IDH 1.1';
$test_data[0][1] = '146:G/A'; # warn Dumper \@test_data;
my @content = create_content(\@test_data);
my $response = $test->request( POST '/vep', @content ); # print_output($response);
is( $response->code, 200, '[POST /vep] success' ); # exit;
# result = 'no match' on synonymous_variant and not COSM*
check_response( $response->content, 'IDH 1.1 \[146:G/A\]' );
check_response( $response->content, 'Sample results for data src "data.txt" \[0\]' );
check_response( $response->content, 'Sample match failures \[1\]' );
check_response( $response->content, 'VEP results \[4\]' );
}
# NB: global $response gets replaced in each block !!
sub check_response {
my ($content, $pattern) = @_;
like( $content, qr($pattern) );
}
done_testing;