# core vs refseq vs merged transcription dbs (merged only v76+):
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 = (
[
'N-Ras exon 3.1',
'233:T/A',
'Accepted',
51.1, 66,
0, 66,
51.1, 66,
],
);
# core & refseq Gene & Feature cols:
my @refseq = qw(CCDS877.1 NM_002524.4 4893);
my @core = qw(ENSG00000213281 ENST00000369535);
# ==============================================================================
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' );
check_response( $response->content, 'transcript db: core' );
check_response( $response->content, 'N-Ras exon 3.1 \[233:T/A\]' );
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 \[1\]' );
check_response( $response->content, 'Non-CDS VEP results \[0\]' );
# has core db Gene & Feature cols:
check_response( $response->content, $_ ) for @core;
# doesn't have refseq db Gene & Feature cols:
check_response_not( $response->content, $_ ) for @refseq;
{ # repeat with 'refseq' db selected:
my $content = create_content(\@test_data, 'refseq');
my $response = $test->request( POST '/vep', @$content ); # print_response($response);
is( $response->code, 200, '[POST /vep] success' );
check_response( $response->content, 'CCDS877.1 not in transcripts db' );
check_response( $response->content, '4893 not in transcripts db' );
check_response( $response->content, 'transcript db: refseq' );
check_response( $response->content, 'N-Ras exon 3.1 \[233:T/A\]' );
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 \[2\]' ); # 1 more than core
check_response( $response->content, 'Non-CDS VEP results \[0\]' );
# has refseq db Gene & Feature cols:
check_response( $response->content, $_ ) for @refseq;
# doesn't have core db Gene & Feature cols:
check_response_not( $response->content, $_ ) for @core;
}
{ # repeat with 'merged' db selected:
my $content = create_content(\@test_data, 'merged');
my $response = $test->request( POST '/vep', @$content ); # print_response($response);
is( $response->code, 200, '[POST /vep] success' );
check_response( $response->content, 'transcript db: merged' );
check_response( $response->content, 'N-Ras exon 3.1 \[233:T/A\]' );
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 \[3\]' ); # 1 more than core
check_response( $response->content, 'Non-CDS VEP results \[0\]' );
# has both core & refseq db Gene & Feature cols:
check_response( $response->content, $_ ) for @refseq;
check_response( $response->content, $_ ) for @core;
}
# NB: global $response gets replaced in each block !!
sub check_response {
my ($content, $pattern) = @_;
like( $content, qr($pattern) );
}
sub check_response_not {
my ($content, $pattern) = @_;
unlike( $content, qr($pattern) );
}
done_testing;