]> wagnertech.de Git - mfinanz.git/blob - t/helper/qrbill_functions.t
date error in mapping
[mfinanz.git] / t / helper / qrbill_functions.t
1 use Test::More tests => 38;
2
3 use strict;
4
5 use lib 't';
6 use Support::TestSetup;
7
8 use_ok('SL::Helper::QrBillFunctions', qw(
9   get_street_name_from_address_line
10   get_building_number_from_address_line
11   get_postal_code_from_address_line
12   get_town_name_from_address_line
13   assemble_ref_number
14   get_ref_number_formatted
15   get_iban_formatted
16   get_amount_formatted
17 ));
18
19 Support::TestSetup::login();
20
21 is(get_street_name_from_address_line('Musterstrasse 12'), 'Musterstrasse', 'get_street_name_from_address_line');
22 is(get_street_name_from_address_line('Musterstrasse St. Jakob 22'), 'Musterstrasse St. Jakob', 'get_street_name_from_address_line_with_multi_word_street_name');
23 is(get_street_name_from_address_line('Musterstrasse St. Jakob 22b'), 'Musterstrasse St. Jakob', 'get_street_name_from_address_line_with_multi_word_street_name_and_letter');
24 is(get_street_name_from_address_line('Musterstrasse 12a'), 'Musterstrasse', 'get_street_name_from_address_line_with_building_number');
25 is(get_street_name_from_address_line('Musterstrasse 12a 1234 Musterhausen'), 'Musterstrasse', 'get_street_name_from_address_line_with_building_number_and_zip');
26 is(get_street_name_from_address_line('Musterstrasse'), 'Musterstrasse', 'get_street_name_from_address_line_without_building_number');
27
28 is(get_building_number_from_address_line('Musterstrasse 12'), '12', 'get_building_number_from_address_line');
29 is(get_building_number_from_address_line('Musterstrasse 12a'), '12a', 'get_building_number_from_address_line_with_building_number');
30 is(get_building_number_from_address_line('Musterstrasse 12a 1234 Musterhausen'), '12a 1234 Musterhausen', 'get_building_number_from_address_line_with_building_number_and_zip');
31 is(get_building_number_from_address_line('Musterstrasse'), '', 'get_building_number_from_address_line_without_building_number');
32
33 is(get_postal_code_from_address_line('8000 Zürich'), '8000', 'get_postal_code_from_address_line');
34 is(get_postal_code_from_address_line('8000 Zürich 1'), '8000', 'get_postal_code_from_address_line_with_zip_extension');
35 is(get_postal_code_from_address_line('8000'), '8000', 'get_postal_code_from_address_line_without_town_name');
36
37 is(get_town_name_from_address_line('8000 Zürich'), 'Zürich', 'get_town_name_from_address_line');
38 is(get_town_name_from_address_line('8000 Zürich 1'), 'Zürich 1', 'get_town_name_from_address_line_with_zip_extension');
39 is(get_town_name_from_address_line('8000'), '', 'get_town_name_from_address_line_without_town_name');
40
41 # assemble_ref_number returns successfully
42 is_deeply([ assemble_ref_number('123123', 'c1', 'R2022-02') ],
43           [ '123123000001000000002022027', undef ],
44           'assemble_ref_number_ok1');
45 is_deeply([ assemble_ref_number('123123', 'c144', 'R5002') ],
46           [ '123123000144000000000050026', undef ],
47           'assemble_ref_number_ok2');
48
49 # assemble_ref_number returns an error
50 is_deeply([ assemble_ref_number('1231234', 'c1', 'R2022-02') ],
51           [ undef, $::locale->text('Bank account id number invalid. Must be 6 digits.') ],
52           'assemble_ref_number_err_bank_account_id_too_long ');
53 is_deeply([ assemble_ref_number('123A12', 'c1', 'R2022-02') ],
54           [ undef, $::locale->text('Bank account id number invalid. Must be 6 digits.') ],
55           'assemble_ref_number_err_bank_account_id_with_letter');
56 is_deeply([ assemble_ref_number('123123', 'c1234567', 'R2022-02') ],
57           [ undef, $::locale->text('Customer number invalid. Must be less then or equal to 6 digits after non-digits removed.') ],
58           'assemble_ref_number_err_customer_number_too_long');
59 is_deeply([ assemble_ref_number('123123', 'c1', 'R2022-02-5000-3400-5') ],
60           [ undef, $::locale->text('Invoice number invalid. Must be less then or equal to 14 digits after non-digits removed.') ],
61           'assemble_ref_number_err_invoice_number_too_long');
62
63 is(get_ref_number_formatted('123123000001000000002022027'),
64    '12 31230 00001 00000 00020 22027',
65    'get_ref_number_formatted');
66
67 is(get_iban_formatted('CH4431999123000889012'),
68    'CH44 3199 9123 0008 8901 2',
69    'get_iban_formatted');
70
71 is(get_amount_formatted('1000.00'), '1 000.00', 'get_amount_formatted_1000');
72 is(get_amount_formatted('1.20'), '1.20', 'get_amount_formatted_1');
73 is(get_amount_formatted('12.20'), '12.20', 'get_amount_formatted_12');
74 is(get_amount_formatted('980.20'), '980.20', 'get_amount_formatted_980');
75 is(get_amount_formatted('12500.30'), '12 500.30', 'get_amount_formatted_12500');
76 is(get_amount_formatted('125400.22'), '125 400.22', 'get_amount_formatted_125400');
77 is(get_amount_formatted('1255300.30'), '1 255 300.30', 'get_amount_formatted_1255300');
78 is(get_amount_formatted('12553400.30'), '12 553 400.30', 'get_amount_formatted_12553400');
79 is(get_amount_formatted('122.'), undef, 'get_amount_formatted_122err');
80 is(get_amount_formatted('123'), undef, 'get_amount_formatted_123err');
81 is(get_amount_formatted('12,4'), undef, 'get_amount_formatted_124err');
82 is(get_amount_formatted('10 5'), undef, 'get_amount_formatted_105err');
83 is(get_amount_formatted('10a'), undef, 'get_amount_formatted_10aerr');