Business-EDI

 view release on metacpan or  search on metacpan

t/021-Message-ORDRSP-xpath.t  view on Meta::CPAN

    is_deeply([($ordrsp->xpath("all_SG26/all_QTY/C186/6063"))], 
              [($ordrsp->xpath("all_SG26/all_QTY/6063"     ))], 
              "self->xpath('all_SG26/all_QTY/C186/6063') === self->xpath('all_SG26/all_QTY/6063')");

    is_deeply([($ordrsp->xpath("line_detail/all_QTY"       ))], 
              [($ordrsp->xpath("all_SG26/all_QTY"          ))], 
              "self->xpath('line_detail/all_QTY')        === self->xpath('all_SG26/all_QTY')");

    is_deeply([($ordrsp->xpath("line_detail/all_QTY/6063"  ))], 
              [($ordrsp->xpath("all_SG26/all_QTY/6063"     ))], 
              "self->xpath('line_detail/all_QTY/6063')   === self->xpath('all_SG26/all_QTY/6063')");

    is_deeply([($ordrsp->xpath("line_detail/line_reference"))], 
              [($ordrsp->xpath("all_SG26/line_reference"     ))], 
              "self->xpath('line_detail/line_reference') === self->xpath('all_SG26/line_reference')");

    ok($ordrsp->xpath("line_detail"),                    q[self->xpath('line_detail')]                   );
    ok($ordrsp->xpath("line_detail/SG31"),               q[self->xpath('line_detail/SG31')]              );
    ok($ordrsp->xpath("line_detail/SG31/RFF"),           q[self->xpath('line_detail/SG31/RFF')]          );
    ok($ordrsp->xpath("line_detail/SG31/RFF/C506"),      q[self->xpath('line_detail/SG31/RFF/C506')]     );
    ok($ordrsp->xpath("line_detail/SG31/RFF/C506/1154"), q[self->xpath('line_detail/SG31/RFF/C506/1154')]);

    is_deeply([($ordrsp->xpath("line_detail/line_price"))], 
              [($ordrsp->xpath("all_SG26/line_price"     ))], 
              "self->xpath('line_detail/line_price')     === self->xpath('all_SG26/line_price')");
    ok($ordrsp->xpath_value("line_detail/line_reference/RFF/1154"), q[self->xpath_value('line_detail/line_reference/RFF/1154')]);

    
    if (! $basic) {
        my @val_1154 = $ordrsp->xpath_value("line_detail/line_reference/RFF/1154");
        subtest q[self->xpath_value('line_detail/line_reference/RFF/1154')] => sub {
            plan tests => 18;
            foreach (1..19) {
                @val_1154 or last;
                $_ == 5 and next;   # Test data skips 5
                my $rff = shift @val_1154;
                $rff =~ s#^.*/##;
                is($_, $rff, 'self->xpath_value("line_detail/line_reference/RFF/1154") ' . $_);
            }
        };

        my @vals = $ordrsp->xpath_value("line_detail/all_QTY/6063");
        subtest "self->xpath_value('line_detail/all_QTY/6063')" => sub {
            plan tests => 54;
            foreach ($ordrsp->xpath("line_detail/all_QTY/6063")) {
                my $val = shift(@vals);
                is($_->value, $val, "self->xpath_value('line_detail/all_QTY/6063') ($val)");
            }
        };
    }

    is($ordrsp->xpath_value('UNH/S009/0051'), 'UN',     "self->xpath_value('UNH/S009/0051')");
    is($ordrsp->xpath_value('UNH/S009/0052'), 'D',      "self->xpath_value('UNH/S009/0052')");
    is($ordrsp->xpath_value('UNH/S009/0065'), 'ORDRSP', "self->xpath_value('UNH/S009/0065')");
    is($ordrsp->xpath_value('UNH/S009/0054'), '96A',    "self->xpath_value('UNH/S009/0054')");
    # print Dumper($ordrsp->xpath('UNH/S009/0065'));
    # $debug and $debug > 1 and print Dumper $ordrsp;
}

ok($perl = ordrsp_data(), "DATA handle read and decode" );
$perl or die "DATA handle not read and decoded successfully";

$Data::Dumper::Indent = 1;

my $i = 0;

# We only have the data mapped out for the first message, so the other two use "basic" tests
foreach my $part (@{$perl->{body}}) {
    foreach my $key (keys %$part) {
        next unless ok($key eq 'ORDRSP', "EDI interchange message type == ORDRSP");
        parse_ordrsp($part->{$key}, $i);
        $i++;
    }
}

note("done");



( run in 1.218 second using v1.01-cache-2.11-cpan-ceb78f64989 )