Bug 12478 Shifting tests and adding copyright headers
[koha.git] / t / db_dependent / ClassSource.t
1 #!/usr/bin/perl
2
3 use Modern::Perl;
4
5 use Test::More tests => 24;
6
7 use C4::Context;
8
9 BEGIN {
10     use_ok('C4::ClassSource');
11 }
12 can_ok( 'C4::ClassSource',
13     qw( AddClassSortRule
14         AddClassSource
15         GetClassSort
16         GetClassSortRule
17         GetClassSortRules
18         GetClassSource
19         GetClassSources
20         DelClassSortRule
21         DelClassSource
22         GetSourcesForSortRule
23         ModClassSortRule
24         ModClassSource)
25 );
26
27 #Start transaction
28 my $dbh = C4::Context->dbh;
29 $dbh->{RaiseError} = 1;
30 $dbh->{AutoCommit} = 0;
31
32 #Start tests
33 $dbh->do(q|DELETE FROM class_sources|);
34 $dbh->do(q|DELETE FROM class_sort_rules|);
35
36 #Test AddClassSortRule
37 my $countSources  = scalar( keys(%{ GetClassSources() }) );
38 my $countSources2 = scalar( keys(%{ GetClassSortRules() }) );
39 AddClassSortRule( 'sortrule1', 'description1', 'routine1' );
40 AddClassSortRule( 'sortrule2', 'description2', 'routine2' );
41 is(
42     scalar( keys(%{ GetClassSortRules() }) ),
43     $countSources + 2,
44     "SortRule1 and SortRules2 have been added"
45 );
46
47 #Test AddClassSource
48 AddClassSource( 'source1', 'Description_source1', 1, 'sortrule1' );
49 AddClassSource( 'source2', 'Description_source2', 0, 'sortrule1' );
50 is(
51     scalar( keys(%{ GetClassSources() }) ),
52     $countSources2 + 2,
53     "Source1 and source2 have been added"
54 );
55
56 #Test GetClassSortRule
57 is_deeply(
58     GetClassSortRule('sortrule1'),
59     {
60         class_sort_rule => 'sortrule1',
61         description     => 'description1',
62         sort_routine    => 'routine1'
63     },
64     "GetClassSort gives sortrule1's information"
65 );
66 is_deeply( GetClassSortRule(), undef,
67     "GetClassSort without params returns undef" );
68 is_deeply( GetClassSortRule('doesnt_exist'),
69     undef, "GetClassSort with an id which doesn't exist returns undef" );
70
71 #Test GetClassSortRules
72 my $getsortrules = GetClassSortRules();
73 is_deeply(
74     $getsortrules,
75     {
76         sortrule1 => {
77             class_sort_rule => 'sortrule1',
78             description     => 'description1',
79             sort_routine    => 'routine1'
80         },
81         sortrule2 => {
82             class_sort_rule => 'sortrule2',
83             description     => 'description2',
84             sort_routine    => 'routine2'
85         }
86     },
87     "GetClassSortRules returns the id off all SortRule and their information"
88 );
89
90 #Test GetClassSource
91 my $getsource1 = GetClassSource('source1');
92 is_deeply(
93     $getsource1,
94     {
95         cn_source       => 'source1',
96         description     => 'Description_source1',
97         used            => 1,
98         class_sort_rule => 'sortrule1'
99     },
100     "GetClassSource gives source1's information"
101 );
102 is_deeply( GetClassSource(), undef,
103     "GetClassSource without params returns undef" );
104 is_deeply( GetClassSource('doesnt_exist'),
105     undef, "GetClassSource with an id which doesn't exist returns undef" );
106
107 #Test GetClassSources
108 my $getsources = GetClassSources();
109 is_deeply(
110     $getsources,
111     {
112         source1 => {
113             cn_source       => 'source1',
114             description     => 'Description_source1',
115             used            => 1,
116             class_sort_rule => 'sortrule1'
117         },
118         source2 => {
119             cn_source       => 'source2',
120             description     => 'Description_source2',
121             used            => 0,
122             class_sort_rule => 'sortrule1'
123         }
124     },
125     "GetClassSources returns the id off all sources and their information"
126 );
127
128 #Test GetClassSort
129 my $getclassSort = GetClassSort( 'source1', 'sortrule1', 'item1' )
130   ; #Note: Create a warning:" attempting to use non-existent class sorting routine $sort_routine"
131 is( $getclassSort, "SORTRULE1_ITEM1",
132 " the sort key corresponding to Source1 and sortrule1 and item1 is SORTRULE1_ITEM1"
133 );
134
135 #Test GetSourcesForSorSortRule
136 my @sources = GetSourcesForSortRule('sortrule1');
137 is_deeply(
138     \@sources,
139     [ 'source1', 'source2' ],
140     "Sortrule1 has source1 and source2"
141 );
142 @sources = GetSourcesForSortRule();
143 is_deeply( \@sources, [],
144     "Without params GetSourcesForSortRule returns an empty array" );
145 @sources = GetSourcesForSortRule('doesnt_exist');
146 is_deeply( \@sources, [],
147     "With a wrong params GetSourcesForSortRule returns an empty array" );
148
149 #Test DelClassSortRule
150 #DelClassSortRule ('sortrule1');
151 #is(scalar (keys (%{ GetClassSortRules() })),1,"SortRule1 has been deleted");#FIXME : impossible if some sources exist
152 DelClassSortRule('sortrule2');
153 is( scalar( keys(%{ GetClassSortRules() }) ), 1, "SortRule2 has been deleted" );
154 DelClassSortRule();
155 is( scalar( keys(%{ GetClassSortRules() }) ),
156     1, "Without params DelClassSortRule doesn't do anything" );
157 DelClassSortRule('doesnt_exist');
158 is( scalar( keys(%{ GetClassSortRules() }) ),
159     1, "With wrong id, DelClassSortRule doesn't do anything" );
160
161 #Test DelClassSource
162 DelClassSource('source2');
163 is( scalar( keys(%{ GetClassSources() }) ), 1, "Source2 has been deleted" );
164 DelClassSource();
165 is( scalar( keys(%{ GetClassSources() }) ),
166     1, "Without params DelClassSource doesn't do anything" );
167 DelClassSource('doesnt_exist');
168 is( scalar( keys(%{ GetClassSources() }) ),
169     1, "With wrong id, DelClassSource doesn't do anything" );
170
171 #Test ModClassSortRule
172 ModClassSortRule( 'sortrule1', 'description1_modified', 'routine1_modified' );
173 is_deeply(
174     GetClassSortRule('sortrule1'),
175     {
176         class_sort_rule => 'sortrule1',
177         description     => 'description1_modified',
178         sort_routine    => 'routine1_modified'
179     },
180     "Sortrule1 has been modified"
181 );
182
183 #Test ModClassSource
184 ModClassSource( 'source1', 'Description_source1_modified', 0, 'sortrule1' );
185 is_deeply(
186     GetClassSource('source1'),
187     {
188         cn_source       => 'source1',
189         description     => 'Description_source1_modified',
190         used            => 0,
191         class_sort_rule => 'sortrule1'
192     },
193     "Source1 has been modified"
194 );
195
196 #End transaction
197 $dbh->rollback;