Bio-WebService-LANL-SequenceLocator

 view release on metacpan or  search on metacpan

xt/live.t  view on Meta::CPAN

use strict;
use warnings FATAL => 'all';
use 5.018;

use Test::More;
use Test::Deep;
use Test::LongString;
use Path::Tiny;
use JSON qw< decode_json >;
use FindBin '$RealBin';
use HTTP::Request::Common;

use_ok('Bio::WebService::LANL::SequenceLocator');
use_ok('Bio::WebService::LANL::SequenceLocator::Server');

my @tests = (
    {   name        => "mixed bases",
        sequences   => ['SLYNTVAVLYYVHQR', 'TCATTATATAATACAGTAGCAACCCTCTATTGTGTGCATCAAAGG'],
        json        => path("$RealBin/data/mixed-bases.json"),
        csv         => path("$RealBin/data/mixed-bases.csv"),
    },
    {   name        => "amino acids",
        sequences   => ['MGGDMKDNW'],
        args        => { base => 'aa' },
        json        => path("$RealBin/data/amino-acids.json"),
        csv         => path("$RealBin/data/amino-acids.csv"),
    },
    {   name        => "nucleotides",
        sequences   => ['agcaatcagatggtcagccaaaattgccctatagtgcagaacatccaggggcaagtggtacatcaggccatatcacctagaactttaaatgca'],
        args        => { base => 'nuc' },
        json        => path("$RealBin/data/nucleotides.json"),
        csv         => path("$RealBin/data/nucleotides.csv"),
    },
);

for my $test (@tests) {
    my $expected = decode_json($test->{json}->slurp);
    cmp_deeply from_native($test), $expected, "$test->{name}: native";
    cmp_deeply from_web($test),    $expected, "$test->{name}: web";

    cmp_deeply from_web($test, as_fasta => 1), $expected, "$test->{name}: fasta";

    if ($test->{csv}) {
        my $csv = $test->{csv}->slurp_utf8;
        local $test->{args}{format} = 'csv';
        is_string from_web($test),                $csv, "$test->{name}: csv";
        is_string from_web($test, as_fasta => 1), $csv, "$test->{name}: csv fasta";
    }
}

sub from_native {
    my $test = shift;
    state $locator = Bio::WebService::LANL::SequenceLocator->new(
        agent_string => 'automated testing'
    );
    return scalar $locator->find($test->{sequences}, %{$test->{args} || {}});
}

sub from_web {
    my $test = shift;
    my %opts = @_;
    my @data;

    if ($opts{as_fasta}) {
        my $i = 1;
        @data = (
            Content_Type => 'form-data',
            Content      => [
                fasta    => [
                    undef,
                    "test.fa",



( run in 0.316 second using v1.01-cache-2.11-cpan-483215c6ad5 )