App-Prove-Plugin-Elasticsearch

 view release on metacpan or  search on metacpan

t/App-Prove-Elasticsearch-Queue-Default.t  view on Meta::CPAN

use strict;
use warnings;

use Test::More tests => 12;
use Test::Fatal;
use Test::Deep;
use App::Prove::Elasticsearch::Queue::Default;
use Capture::Tiny qw{capture_merged};

is(App::Prove::Elasticsearch::Queue::Default::queue_jobs(),0,"q-jobs is no-op on default");

{
    no warnings qw{redefine once};
    local *App::Prove::Elasticsearch::Utils::process_configuration   = sub { return shift };
    local *App::Prove::Elasticsearch::Utils::require_planner         = sub { return 'App::Prove::Elasticsearch::Planner::Default' };
    local *App::Prove::Elasticsearch::Planner::Default::check_index  = sub {};
    use warnings;

    is( exception { App::Prove::Elasticsearch::Queue::Default->new({}) }, undef, "Constructor non-fatal on innocuous data");
}

{
    no warnings qw{redefine once};
    local *App::Prove::Elasticsearch::Queue::Default::_get_searcher   = sub { return shift->{'searcher'} = 'App::Prove::Elasticsearch::Searcher::ByName' };
    local *App::Prove::Elasticsearch::Planner::Default::get_plans_needing_work = sub { return [] };
    use warnings;

    my $obj = bless({
        planner => 'App::Prove::Elasticsearch::Planner::Default',
        config => { 'queue.granularity' => 2 },
    }, 'App::Prove::Elasticsearch::Queue::Default' );

    my @jobs = $obj->get_jobs({});
    is(scalar(@jobs),0,"No jobs returned when the planner can find nothing to do.");

    no warnings qw{redefine once};
    local *App::Prove::Elasticsearch::Planner::Default::get_plans_needing_work = sub { return [{ tests => ['a.t','b.t','c.t'] }, { tests => ['e.t']} ] };
    local *App::Prove::Elasticsearch::Searcher::ByName::filter = sub { shift; return @_ };
    use warnings;

    @jobs = $obj->get_jobs({});
    is(scalar(@jobs) ,2, "2 jobs returned when granularity at 2") or diag explain \@jobs;

    $obj->{config}->{'queue.granularity'} = 0;
    @jobs = $obj->get_jobs({});
    is(scalar(@jobs) ,4, "all jobs returned when granularity not set or false") or diag explain \@jobs;

}

{
    no warnings qw{redefine once};
    local *App::Prove::Elasticsearch::Utils::require_indexer = sub { return 'zippy' };
    use warnings;
    my $obj = bless({},'App::Prove::Elasticsearch::Queue::Default');
    is($obj->_get_indexer(), 'zippy', "get_indexer behaves as expected");
    is($obj->_get_indexer(), 'zippy', "get_indexer behaves as expected: cached");
}

{
    no warnings qw{redefine once};
    local *App::Prove::Elasticsearch::Utils::require_searcher      = sub { return 'App::Prove::Elasticsearch::Searcher::ByName' };
    local *App::Prove::Elasticsearch::Queue::Default::_get_indexer = sub { return shift->{'indexer'} = 'App::Prove::Elasticsearch::Indexer' };
    local *App::Prove::Elasticsearch::Searcher::ByName::new        = sub { return 'zippy' };
    use warnings;
    my $obj = bless({},'App::Prove::Elasticsearch::Queue::Default');



( run in 1.514 second using v1.01-cache-2.11-cpan-54e63673c56 )