Bug 21662: Add Contributors.yaml file
[koha.git] / t / Ediorder.t
1 #!/usr/bin/perl
2 use strict;
3 use warnings;
4 use FindBin qw( $Bin );
5
6 use Test::More tests => 8;
7
8 BEGIN { use_ok('Koha::Edifact::Order') }
9
10
11 # The following tests are for internal methods but they could
12 # error spectacularly so yest
13 # Check that quoting is done correctly
14 #
15 my $processed_text =
16   Koha::Edifact::Order::encode_text(q{string containing ?,',:,+});
17
18 cmp_ok(
19     $processed_text, 'eq',
20     q{string containing ??,?',?:,?+},
21     'Outgoing text correctly quoted'
22 );
23
24 # extend above test to test chunking in imd_segment
25 #
26 my $code           = '010';
27 my $data_to_encode = $processed_text;
28
29 my @segs = Koha::Edifact::Order::imd_segment( $code, $data_to_encode );
30
31 my $testseg = "IMD+L+010+:::$processed_text";
32 $testseg .= q{'};    # add segment terminator
33
34 cmp_ok( $segs[0], 'eq', $testseg, 'IMD segment correctly formed' );
35
36 $data_to_encode = 'A' x 35;
37 $data_to_encode .= 'B' x 35;
38 $data_to_encode .= 'C' x 10;
39
40 @segs = Koha::Edifact::Order::imd_segment( $code, $data_to_encode );
41
42 cmp_ok(
43     $segs[0],
44     'eq',
45 q{IMD+L+010+:::AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'},
46     'IMD segment correctly chunked'
47 );
48 cmp_ok( $segs[1], 'eq', q{IMD+L+010+:::CCCCCCCCCC'},
49     'IMD segment correctly split across segments' );
50
51 $data_to_encode .= '??';
52
53 # this used to cause an infinite loop
54 @segs = Koha::Edifact::Order::imd_segment( $code, $data_to_encode );
55 cmp_ok( $segs[1], 'eq', q{IMD+L+010+:::CCCCCCCCCC??'},
56     'IMD segment deals with quoted character at end' );
57
58 my $isbn = '3540556753';
59 my $ean  = '9783540556756';
60
61 my $seg = Koha::Edifact::Order::additional_product_id($isbn);
62 cmp_ok( $seg, 'eq', q{PIA+5+3540556753:IB'},
63     'isbn correctly encoded in PIA segment' );
64
65 $seg = Koha::Edifact::Order::additional_product_id($ean);
66 cmp_ok( $seg, 'eq', q{PIA+5+9783540556756:EN'},
67     'ean correctly encoded in PIA segment' );