3 # Copyright PTFS Europe 2020
5 # This file is part of Koha.
7 # Koha is free software; you can redistribute it and/or modify it under the
8 # terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 3 of the License, or (at your option) any later
12 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License along
17 # with Koha; if not, see <http://www.gnu.org/licenses>.
20 use Test::More tests => 4;
22 use t::lib::TestBuilder;
29 use_ok('Koha::Template::Plugin::Registers');
32 my $schema = Koha::Database->schema;
33 my $builder = t::lib::TestBuilder->new;
35 subtest 'session_register_id' => sub {
39 my $plugin = Koha::Template::Plugin::Registers->new();
40 ok( $plugin, "Plugin initialized" );
41 is( $plugin->session_register_id,
42 '', "Returns empty string if no userenv is set" );
43 t::lib::Mocks::mock_userenv( { register_id => '1' } );
44 is( $plugin->session_register_id,
45 '1', "Returns the register id when set in the userenv" );
48 C4::Context->_new_userenv(undef);
51 subtest 'session_register_name' => sub {
55 my $plugin = Koha::Template::Plugin::Registers->new();
56 ok( $plugin, "Plugin initialized" );
57 is( $plugin->session_register_name,
58 '', "Returns empty string if no userenv is set" );
59 t::lib::Mocks::mock_userenv( { register_name => 'Register One' } );
60 is( $plugin->session_register_name,
61 'Register One', "Returns the register name when set in the userenv" );
64 C4::Context->_new_userenv(undef);
67 subtest 'all() tests' => sub {
71 $schema->storage->txn_begin;
73 t::lib::Mocks::mock_preference( 'UseCashRegisters', 1 );
75 my $count = Koha::Cash::Registers->search({ archived => 0 })->count;
76 my $max_register = Koha::Cash::Registers->search( {},
77 { order_by => { '-desc' => 'id' }, rows => 1 } )->single;
78 my $max_id = $max_register ? $max_register->id : 0;
80 my $library1 = $builder->build_object(
82 class => 'Koha::Libraries'
85 my $register1 = $builder->build_object(
87 class => 'Koha::Cash::Registers',
89 branch => $library1->branchcode,
95 my $register2 = $builder->build_object(
97 class => 'Koha::Cash::Registers',
99 branch => $library1->branchcode,
106 my $library2 = $builder->build_object(
108 class => 'Koha::Libraries'
111 my $register3 = $builder->build_object(
113 class => 'Koha::Cash::Registers',
115 branch => $library2->branchcode,
121 my $plugin = Koha::Template::Plugin::Registers->new();
122 ok( $plugin, "Plugin initialized" );
124 my $result = $plugin->all;
125 is( ref($result), 'ARRAY', "Return arrayref (no userenv, no filters)" );
126 is( scalar( @{$result} ),
127 3 + $count, "Array contains all test registers (no userenv, no filters)" );
128 for my $register ( @{$result} ) {
129 next if $register->{id} <= $max_id;
130 is( $register->{selected}, 0, "Register is not selected (no userenv)" );
133 $result = $plugin->all( { filters => { current_branch => 1 } } );
134 is( ref($result), 'ARRAY',
135 "Return arrayref (no userenv, filters: current_branch)" );
137 t::lib::Mocks::mock_userenv( { branchcode => $library1->branchcode } );
138 $result = $plugin->all;
139 is( ref($result), 'ARRAY',
140 "Return arrayref (userenv: branchcode, no filters)" );
141 is( scalar( @{$result} ),
142 3 + $count, "Array contains all test registers (userenv: branchcode, no filters)" );
143 for my $register ( @{$result} ) {
144 next if $register->{id} <= $max_id;
145 is( $register->{selected}, 0,
146 "Register is not selected (userenv: branchcode, no filters)" );
149 $result = $plugin->all( { filters => { current_branch => 1 } } );
150 is( ref($result), 'ARRAY',
151 "Return arrayref (userenv: branchcode, filters: current_branch)" );
153 scalar( @{$result} ),
155 "Array contains 2 branch registers (userenv: branchcode, filters: current_branch)"
157 for my $register ( @{$result} ) {
158 is( $register->{selected}, 0,
159 "Register is not selected (userenv: branchcode, filters: current_branch)"
163 t::lib::Mocks::mock_userenv(
164 { branchcode => $library1->branchcode, register_id => $register2->id }
166 $result = $plugin->all( { filters => { current_branch => 1 } } );
167 is( ref($result), 'ARRAY',
168 "Return arrayref (userenv: branchcode + register_id, filters: current_branch)"
171 scalar( @{$result} ),
173 "Array contains 2 branch registers (userenv: branchcode + register_id, filters: current_branch)"
175 for my $register ( @{$result} ) {
176 my $selected = ( $register->{id} == $register2->id ) ? 1 : 0;
177 is( $register->{selected}, $selected,
178 "Register is selected $selected (userenv: brancode, filters: current_branch)"
182 t::lib::Mocks::mock_preference( 'UseCashRegisters', 0 );
183 $result = $plugin->all();
184 is( $result, undef, "Return undef when UseCashRegisters is disabled" );
186 $schema->storage->txn_rollback;