b2bda420a5829beebf46a49077a94c1c438cf359
[koha.git] / t / lib / KohaTest / Members / GetMember.pm
1 package KohaTest::Members::GetMember;
2 use base qw( KohaTest::Members );
3
4 use strict;
5 use warnings;
6
7 use Test::More;
8
9 use C4::Members;
10
11 sub testing_class { 'C4::Members' }
12
13 =head2 STARTUP METHODS
14
15 These get run once, before the main test methods in this module
16
17 =head3 startup_create_borrower
18
19 Creates a new borrower to use for these tests.  Class variables that are
20 used to search by are stored for easy access by the methods.
21
22 =cut
23
24 sub startup_create_borrower : Test( startup => 1 ) {
25     my $self = shift;
26
27     my $memberinfo = {
28         surname      => 'surname'   . $self->random_string(),
29         firstname    => 'firstname' . $self->random_string(),
30         address      => 'address'   . $self->random_string(),
31         city         => 'city'      . $self->random_string(),
32         cardnumber   => 'card'      . $self->random_string(),
33         branchcode   => 'CPL',
34         categorycode => 'B',    # B  => Board
35         dateexpiry   => '2020-01-01',
36         password     => 'testpassword',
37         userid       => 'testuser',
38         dateofbirth  => $self->random_date(),
39     };
40
41     my $borrowernumber = AddMember( %$memberinfo );
42     ok( $borrowernumber, "created member: $borrowernumber" );
43     $self->{get_new_borrowernumber} = $borrowernumber;
44     $self->{get_new_cardnumber}     = $memberinfo->{cardnumber};
45     $self->{get_new_firstname}      = $memberinfo->{firstname};
46     $self->{get_new_userid}         = $memberinfo->{userid};
47
48     return;
49 }
50
51 =head2 TESTING METHODS
52
53 Standard test methods
54
55 =head3 borrowernumber_get
56
57 Validates that GetMember can search by borrowernumber
58
59 =cut
60
61 sub borrowernumber_get : Test( 6 ) {
62     my $self = shift;
63
64     ok( $self->{get_new_borrowernumber},
65         "we have a valid memberid $self->{get_new_borrowernumber} to test with" );
66
67     #search by borrowernumber
68     my $results =
69       C4::Members::GetMember( $self->{get_new_borrowernumber}, 'borrowernumber' );
70     ok( $results, 'we successfully called GetMember searching by borrowernumber' );
71
72     ok( exists $results->{borrowernumber},
73         'member details has a "borrowernumber" attribute' );
74     is( $results->{borrowernumber},
75         $self->{get_new_borrowernumber},
76         '...and it matches the created borrowernumber'
77     );
78
79     ok( exists $results->{'category_type'}, "categories in the join returned values" );
80     ok( $results->{description}, "...and description is valid: $results->{description}" );
81 }
82
83 =head3 cardnumber_get
84
85 Validates that GetMember can search by cardnumber
86
87 =cut
88
89 sub cardnumber_get : Test( 6 ) {
90     my $self = shift;
91
92     ok( $self->{get_new_cardnumber},
93         "we have a valid cardnumber $self->{get_new_cardnumber} to test with" );
94
95     #search by cardnumber
96     my $results = C4::Members::GetMember( $self->{get_new_cardnumber}, 'cardnumber' );
97     ok( $results, 'we successfully called GetMember searching by cardnumber' );
98
99     ok( exists $results->{cardnumber}, 'member details has a "cardnumber" attribute' );
100     is( $results->{cardnumber},
101         $self->{get_new_cardnumber},
102         '..and it matches the created cardnumber'
103     );
104
105     ok( exists $results->{'category_type'}, "categories in the join returned values" );
106     ok( $results->{description}, "...and description is valid: $results->{description}" );
107 }
108
109 =head3 firstname_get
110
111 Validates that GetMember can search by firstname.
112 Note that only the first result is used.
113
114 =cut
115
116 sub firstname_get : Test( 6 ) {
117     my $self = shift;
118
119     ok( $self->{get_new_firstname},
120         "we have a valid firstname $self->{get_new_firstname} to test with" );
121
122     ##search by firstname
123     my $results = C4::Members::GetMember( $self->{get_new_firstname}, 'firstname' );
124     ok( $results, 'we successfully called GetMember searching by firstname' );
125
126     ok( exists $results->{firstname}, 'member details has a "firstname" attribute' );
127     is( $results->{'firstname'},
128         $self->{get_new_firstname},
129         '..and it matches the created firstname'
130     );
131
132     ok( exists $results->{'category_type'}, "categories in the join returned values" );
133     ok( $results->{description}, "...and description is valid: $results->{description}" );
134 }
135
136 =head3 userid_get
137
138 Validates that GetMember can search by userid.
139
140 =cut
141
142 sub userid_get : Test( 6 ) {
143     my $self = shift;
144
145     ok( $self->{get_new_userid},
146         "we have a valid userid $self->{get_new_userid} to test with" );
147
148     #search by userid
149     my $results = C4::Members::GetMember( $self->{get_new_userid}, 'userid' );
150     ok( $results, 'we successfully called GetMember searching by userid' );
151
152     ok( exists $results->{'userid'}, 'member details has a "userid" attribute' );
153     is( $results->{userid},
154         $self->{get_new_userid},
155         '..and it matches the created userid'
156     );
157
158     ok( exists $results->{'category_type'}, "categories in the join returned values" );
159     ok( $results->{description}, "...and description is valid: $results->{description}" );
160 }
161
162 =head3 missing_params
163
164 Validates that GetMember returns undef when no parameters are passed to it
165
166 =cut
167
168 sub missing_params : Test( 1 ) {
169     my $self = shift;
170
171     my $results = C4::Members::GetMember();
172
173     ok( !defined $results, 'returned undef when no parameters passed' );
174
175 }
176
177 =head2 SHUTDOWN METHODS
178
179 These get run once, after the main test methods in this module
180
181 =head3 shutdown_remove_borrower
182
183 Remove the new borrower information that was created in the startup method
184
185 =cut
186
187 sub shutdown_remove_borrower : Test( shutdown => 0 ) {
188     my $self = shift;
189
190     delete $self->{get_new_borrowernumber};
191     delete $self->{get_new_cardnumber};
192     delete $self->{get_new_firstname};
193     delete $self->{get_new_userid};
194
195 }
196
197 1;