Bug 15629: Koha::Libraries - Remove ModBranch
[koha.git] / t / db_dependent / Branch.t
1 #!/usr/bin/perl
2
3 # Copyright 2013 Equinox Software, Inc.
4 #
5 # This file is part of Koha.
6 #
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
10 # version.
11 #
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.
15 #
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>.
18
19 use Modern::Perl;
20
21 use C4::Context;
22 use Data::Dumper;
23
24 use Test::More tests => 17;
25
26 use C4::Branch;
27 use Koha::Database;
28 use Koha::Library;
29 use Koha::Libraries;
30 use Koha::LibraryCategories;
31
32 BEGIN {
33     use FindBin;
34     use lib $FindBin::Bin;
35     use_ok('C4::Branch');
36 }
37 can_ok(
38     'C4::Branch', qw(
39       GetBranchName
40       GetBranch
41       GetBranches
42       GetBranchesLoop
43       GetBranchInfo
44       mybranch
45       )
46 );
47
48 my $schema = Koha::Database->new->schema;
49 $schema->storage->txn_begin;
50
51 my $dbh = C4::Context->dbh;
52
53 # clear the slate
54 $dbh->do('DELETE FROM branchcategories');
55
56 # Start test
57
58 my $count = Koha::Libraries->search->count;
59 like( $count, '/^\d+$/', "the count is a number" );
60
61 #add 2 branches
62 my $b1 = {
63     branchcode     => 'BRA',
64     branchname     => 'BranchA',
65     branchaddress1 => 'adr1A',
66     branchaddress2 => 'adr2A',
67     branchaddress3 => 'adr3A',
68     branchzip      => 'zipA',
69     branchcity     => 'cityA',
70     branchstate    => 'stateA',
71     branchcountry  => 'countryA',
72     branchphone    => 'phoneA',
73     branchfax      => 'faxA',
74     branchemail    => 'emailA',
75     branchreplyto  => 'emailreply',
76     branchreturnpath => 'branchreturn',
77     branchurl      => 'urlA',
78     branchip       => 'ipA',
79     branchprinter  => undef,
80     branchnotes    => 'noteA',
81     opac_info      => 'opacA',
82     issuing        => undef,
83 };
84 my $b2 = {
85     branchcode     => 'BRB',
86     branchname     => 'BranchB',
87     branchaddress1 => 'adr1B',
88     branchaddress2 => 'adr2B',
89     branchaddress3 => 'adr3B',
90     branchzip      => 'zipB',
91     branchcity     => 'cityB',
92     branchstate    => 'stateB',
93     branchcountry  => 'countryB',
94     branchphone    => 'phoneB',
95     branchfax      => 'faxB',
96     branchemail    => 'emailB',
97     branchreplyto  => 'emailreply',
98     branchreturnpath => 'branchreturn',
99     branchurl      => 'urlB',
100     branchip       => 'ipB',
101     branchprinter  => undef,
102     branchnotes    => 'noteB',
103     opac_info      => 'opacB',
104     issuing        => undef,
105 };
106 Koha::Library->new($b1)->store;
107 Koha::Library->new($b2)->store;
108
109 is( Koha::Libraries->search->count, $count + 2, "two branches added" );
110
111 is( Koha::Libraries->find( $b2->{branchcode} )->delete, 1,          "One row affected" );
112 is( Koha::Libraries->search->count,             $count + 1, "branch BRB deleted" );
113
114 #Test GetBranchName
115 is( GetBranchName( $b1->{branchcode} ),
116     $b1->{branchname}, "GetBranchName returns the right name" );
117
118 #Test Getbranches
119 my $branches = GetBranches();
120 is( scalar( keys %$branches ),
121     Koha::Libraries->search->count, "GetBranches returns the right number of branches" );
122
123 #Test modify a library
124
125 $b1 = {
126     branchcode     => 'BRA',
127     branchname     => 'BranchA modified',
128     branchaddress1 => 'adr1A modified',
129     branchaddress2 => 'adr2A modified',
130     branchaddress3 => 'adr3A modified',
131     branchzip      => 'zipA modified',
132     branchcity     => 'cityA modified',
133     branchstate    => 'stateA modified',
134     branchcountry  => 'countryA modified',
135     branchphone    => 'phoneA modified',
136     branchfax      => 'faxA modified',
137     branchemail    => 'emailA modified',
138     branchreplyto  => 'emailreply modified',
139     branchreturnpath => 'branchreturn modified',
140     branchurl      => 'urlA modified',
141     branchip       => 'ipA modified',
142     branchprinter  => undef,
143     branchnotes    => 'notesA modified',
144     opac_info      => 'opacA modified',
145     issuing        => undef,
146 };
147
148 Koha::Libraries->find($b1->{branchcode})->set($b1)->store;
149 is( Koha::Libraries->search->count, $count + 1,
150     "A branch has been modified, no new branch added" );
151
152 #Test categories
153 my $count_cat  = Koha::LibraryCategories->search->count;
154
155 my $cat1 = {
156     categorycode     => 'CAT1',
157     categoryname     => 'catname1',
158     codedescription  => 'catdesc1',
159     categorytype     => 'cattype1',
160     show_in_pulldown => 1
161 };
162 my $cat2 = {
163     categorycode     => 'CAT2',
164     categoryname     => 'catname2',
165     categorytype     => 'catype2',
166     codedescription  => 'catdesc2',
167     show_in_pulldown => 1
168 };
169
170 my %new_category = (
171     categorycode     => 'LIBCATCODE',
172     categoryname     => 'library category name',
173     codedescription  => 'library category code description',
174     categorytype     => 'searchdomain',
175     show_in_pulldown => 1,
176 );
177
178 Koha::LibraryCategory->new(\%new_category)->store;
179 Koha::LibraryCategory->new($cat1)->store;
180 Koha::LibraryCategory->new($cat2)->store;
181
182 my $categories = Koha::LibraryCategories->search;
183 is( $categories->count, $count_cat + 3, "Two categories added" );
184
185 my $del = Koha::LibraryCategories->find( $cat2->{categorycode} )->delete;
186 is( $del, 1, 'One row affected' );
187
188 is( Koha::LibraryCategories->search->count, $count_cat + 2, "Category CAT 2 deleted" );
189
190 my $b2_stored = Koha::Library->new($b2)->store;
191 my $CAT1 = Koha::LibraryCategories->find('CAT1');
192 $b2_stored->add_to_categories([$CAT1]);
193 is( Koha::Libraries->search->count, $count + 2, 'BRB added' );
194
195 #Test GetBranchInfo
196 my $b1info = GetBranchInfo( $b1->{branchcode} );
197 $b1->{categories} = [];
198 is_deeply( @$b1info[0], $b1, 'BRA has no categories' );
199
200 my $b2info = GetBranchInfo( $b2->{branchcode} );
201 my @cat    = ( $cat1->{categorycode} );
202 delete $b2->{add};
203 delete $b2->{CAT1};
204 $b2->{issuing}    = undef;
205 $b2->{categories} = \@cat;
206 is_deeply( @$b2info[0], $b2, 'BRB has the category CAT1' );
207
208 Koha::LibraryCategory->new($cat2)->store;
209 is( Koha::LibraryCategories->search->count, $count_cat + 3, "Two categories added" );
210
211 #TODO later: test mybranchine and onlymine
212 # Actually we cannot mock C4::Context->userenv in unit tests
213
214 #Test GetBranchesLoop
215 my $loop = GetBranchesLoop;
216 is( scalar(@$loop), Koha::Libraries->search->count, 'There is the right number of branches' );
217
218 $schema->storage->txn_rollback;