The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More tests => 8;
use Data::Dump qw( dump );
use lib 'lib';

use_ok('Search::OpenSearch::Federated');

SKIP: {

    if ( !$ENV{SOS_TEST} ) {
        diag "set SOS_TEST env var to test Federated results";
        skip "set SOS_TEST env var to test Federated results", 7;
    }

    my $type = $ENV{SOS_TYPE} || 'XML';

    ok( my $ms = Search::OpenSearch::Federated->new(
            urls => [
                "http://localhost:5000/search?f=0&q=test&t=$type",
                "http://localhost:5000/search?f=0&q=turkey&t=$type",
            ],
            timeout => 5,
        ),
        "new Federated object"
    );

    ok( my $resp = $ms->search(), "search()" );

    #dump($resp);

    is( ref($resp), 'ARRAY', "response is an ARRAY ref" );

    ok( scalar(@$resp) > 1, "more than one result" );

    ok( $resp->[0]->{score}, "first result has a score" );

    my $prev_score;
    my $failed_sort = 0;
R: for my $r (@$resp) {
        if ( !defined $prev_score ) {
            $prev_score = $r->{score};
        }
        if ( $r->{score} > $prev_score ) {
            $failed_sort = 1;
            last R;
        }
        $prev_score = $r->{score};
    }

    ok( !$failed_sort, "results sorted by score" );

    ok( $ms->total(), "get total" );

}