Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 92 lines (75 sloc) 2.425 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
use strict;
use warnings;
use lib qw(blib);
use Test::More;

BEGIN {
    eval 'use XML::Simple';
    if ($@){
        plan skip_all => 'XML::Simple not available';
        exit;
    } else {
        plan tests => 22;
    }
}

BEGIN {
    use_ok 'App::Mowyw::Datasource';
    use_ok 'App::Mowyw::Datasource::XML';
}

my $x = eval {
    App::Mowyw::Datasource->new({
            type => 'XML',
            file => 't/sample.xml',
    });
};

print $@ if $@;
ok !$@, 'No errors while creating App::Mowyw::Datasource::XML instance';


ok !$x->is_exhausted, 'Iterator not yet exhausted';
my $data = $x->get();
is $data->{foo}, 'bar1', 'First element (item "foo") retrieved';
is $data->{baz}, 'quox1', 'First element (item "baz") retrieved';
$x->next();
ok !$x->is_exhausted, 'Iterator not yet exhausted';
$data = $x->get();
is $data->{foo}, 'bar2', 'Second element (item "foo") retrieved';
is $data->{baz}, 'quox2', 'Second element (item "baz") retrieved';
$x->next();
ok !$x->is_exhausted, 'Iterator not yet exhausted';
$data = $x->get();
is $data->{foo}, 'bar3', 'Third element (item "foo") retrieved';
is $data->{baz}, 'quox3', 'Third element (item "baz") retrieved';
$x->next();
ok $x->is_exhausted, 'Iterator exhausted';

# next test file

$x = App::Mowyw::Datasource->new({
        type => 'XML',
        file => 't/sample-single.xml',
        root => 'item',
});

ok $x, 'Datasource created from t/sample-single.xml';
ok !$x->is_exhausted, 'Iterator not yet exhausted';
$data = $x->get();
is $data->{foo}, 'bar', 'First element (item "foo") retrieved';
is $data->{baz}, 'quox', 'First element (item "baz") retrieved';
$x->next();
ok $x->is_exhausted, 'Iterator exhausted';

eval {
    App::Mowyw::Datasource->new({
            type => 'XML',
            file => 't/sample-bad.xml',
    });
};

ok $@, 'Dies with ambigous root element';

# test limits
$x = eval {
    App::Mowyw::Datasource->new({
            type => 'XML',
            file => 't/sample.xml',
            limit => 2,
    });
};

print $@ if $@;

ok(!$x->is_exhausted, 'First item available with limit 2');
$x->get();
ok(!$x->is_exhausted, 'Second item available with limit 2');
$x->get();
ok($x->is_exhausted, 'Third item NOT available with limit 2');


Something went wrong with that request. Please try again.