View | Details | Raw Unified | Return to bug 14536
Collapse All | Expand All

(-)a/t/lib/Page/Intra.pm (+13 lines)
Lines 43-48 See. Selenium documentation best practices for UI element mapping to common lang Link Here
43
=cut
43
=cut
44
################################################################################
44
################################################################################
45
45
46
=head _getBreadcrumbLinks
47
48
@RETURNS List of all breadcrumb links
49
=cut
50
51
sub _getBreadcrumbLinks {
52
    my ($self) = @_;
53
    my $d = $self->getDriver();
54
55
    my $breadcrumbLinks = $d->find_elements("div#breadcrumbs a");
56
    return ($breadcrumbLinks);
57
}
58
46
=head _getHeaderElements
59
=head _getHeaderElements
47
60
48
@RETURNS HASHRef of all the Intranet header clickables.
61
@RETURNS HASHRef of all the Intranet header clickables.
(-)a/t/lib/Page/Members/Memberentry.pm (-17 / +127 lines)
Lines 21-30 use Modern::Perl; Link Here
21
use Scalar::Util qw(blessed);
21
use Scalar::Util qw(blessed);
22
use Test::More;
22
use Test::More;
23
23
24
use base qw(t::lib::Page::Intra t::lib::Page::Members::Toolbar);
24
use base qw(t::lib::Page::Intra t::lib::Page::Members::Toolbar t::lib::Page::Members::LeftNavigation);
25
25
26
use Koha::Exception::BadParameter;
26
use Koha::Exception::BadParameter;
27
27
28
use t::lib::Page::Circulation::Circulation;
29
28
30
29
sub new {
31
sub new {
30
    my ($class, $params) = @_;
32
    my ($class, $params) = @_;
Lines 61-75 sub _getInputFieldsForValidation { Link Here
61
    my ($self) = @_;
63
    my ($self) = @_;
62
    my $d = $self->getDriver();
64
    my $d = $self->getDriver();
63
65
64
    my $emailInput  = $d->find_element('#email');
66
    my ($emailInput, $emailProInput, $email_BInput, $phoneInput, $phoneProInput, $phone_BInput, $SMSnumber);
65
    my $emailProInput  = $d->find_element('#emailpro');
67
    eval {
66
    my $email_BInput  = $d->find_element('#B_email');
68
        $emailInput  = $d->find_element('#email');
69
    };
70
    eval {
71
        $emailProInput  = $d->find_element('#emailpro');
72
    };
73
    eval {
74
        $email_BInput  = $d->find_element('#B_email');
75
    };
76
    eval {
77
        $phoneInput  = $d->find_element('#phone');
78
    };
79
    eval {
80
        $phoneProInput  = $d->find_element('#phonepro');
81
    };
82
    eval {
83
        $phone_BInput  = $d->find_element('#B_phone');
84
    };
85
    eval {
86
        $SMSnumber = $d->find_element('#SMSnumber');
87
    };
67
    
88
    
68
    my $phoneInput  = $d->find_element('#phone');
89
    return ($emailInput, $emailProInput, $email_BInput, $phoneInput, $phoneProInput, $phone_BInput, $SMSnumber);
69
    my $phoneProInput  = $d->find_element('#phonepro');
90
}
70
    my $phone_BInput  = $d->find_element('#B_phone');
91
92
sub _getMessagingPreferenceCheckboxes {
93
    my ($self) = @_;
94
    my $d = $self->getDriver();
95
96
    my @email_prefs = $d->find_elements('input[type="checkbox"][id^="email"]');
97
    my @phone_prefs = $d->find_elements('input[type="checkbox"][id^="phone"]');
98
    my @sms_prefs = $d->find_elements('input[type="checkbox"][id^="sms"]');
71
    
99
    
72
    return ($emailInput, $emailProInput, $email_BInput, $phoneInput, $phoneProInput, $phone_BInput);
100
    return  { email => \@email_prefs, phone => \@phone_prefs, sms => \@sms_prefs };
73
}
101
}
74
102
75
103
Lines 79-90 sub _getInputFieldsForValidation { Link Here
79
=cut
107
=cut
80
################################################################################
108
################################################################################
81
109
110
sub checkMessagingPreferencesSet {
111
    my ($self, $valid, @prefs) = @_;
112
    my $d = $self->getDriver();
113
    $self->debugTakeSessionSnapshot();
114
    
115
    foreach my $type (@prefs){
116
        my @this_pref = $d->find_elements('input[type="checkbox"][id^="'.$type.'"]');
117
        
118
        my $ok = 0;
119
        
120
        foreach my $checkbox (@this_pref){
121
            ok(0, "Intra Memberentry $type messaging checkbox ".$checkbox->get_attribute('id')." not checked") if !$checkbox->is_selected() and $valid;
122
            ok(0, "Intra Memberentry $type messaging checkbox ".$checkbox->get_attribute('id')." checked (not supposed to be)") if $checkbox->is_selected() and !$valid;
123
            $ok = 1;
124
        }
125
        ok($ok, "Intra Memberentry $type messaging checkboxes ok (all " . (($valid) ? 'checked':'unchecked') . ")");
126
    }
127
    
128
    return $self;
129
}
130
131
sub clearMessagingContactFields {
132
    my ($self, @fields) = @_;
133
    my $d = $self->getDriver();
134
    $self->debugTakeSessionSnapshot();
135
    
136
    my ($emailInput, $emailProInput, $email_BInput, $phoneInput, $phoneProInput, $phone_BInput, $SMSnumber) = $self->_getInputFieldsForValidation();
137
138
    if (@fields) {
139
        for my $field (@fields){
140
            $emailInput->clear() if $field eq "email";
141
            $emailProInput->clear() if $field eq "emailpro";
142
            $email_BInput->clear() if $field eq "B_email";
143
            $phoneInput->clear() if $field eq "phone";
144
            $phoneProInput->clear() if $field eq "phonepro";
145
            $phone_BInput->clear() if $field eq "B_phone";
146
            $SMSnumber->clear() if $field eq "SMSnumber";
147
        }
148
        ok(1, "Intra Memberentry contact fields (@fields) cleared");
149
    } else {
150
        $emailInput->clear();
151
        $emailProInput->clear();
152
        $email_BInput->clear();
153
        $phoneInput->clear();
154
        $phoneProInput->clear();
155
        $phone_BInput->clear();
156
        $SMSnumber->clear();
157
        ok(1, "Intra Memberentry contact fields (email, emailpro, email_B, phone, phonepro, phone_B, SMSnumber) cleared");
158
    }
159
    
160
    return $self;
161
}
162
163
sub checkPreferences {
164
    my ($self, $valid, $type) = @_;
165
    my $d = $self->getDriver();
166
    $self->debugTakeSessionSnapshot();
167
    
168
    my $checkboxes = $self->_getMessagingPreferenceCheckboxes();
169
    
170
    ok (0, "Intra $type checkboxes not defined") if not defined $checkboxes->{$type};
171
    return 0 if not defined $checkboxes->{$type};
172
    
173
    foreach my $checkbox (@{ $checkboxes->{$type} }){
174
        ok(0, "Intra Memberentry $type messaging checkbox ".$checkbox->get_attribute('id')." not available") if !$checkbox->is_enabled() and $valid;
175
        ok(0, "Intra Memberentry $type messaging checkbox ".$checkbox->get_attribute('id')." available (not supposed to be)") if $checkbox->is_enabled() and !$valid;
176
177
        $checkbox->click() if not $checkbox->is_selected();
178
    }
179
    ok (1, "Intra Memberentry $type messaging checkboxes checked") if $valid;
180
    
181
    return $self;
182
}
82
sub setEmail {
183
sub setEmail {
83
    my ($self, $input) = @_;
184
    my ($self, $input) = @_;
84
    my $d = $self->getDriver();
185
    my $d = $self->getDriver();
85
    $self->debugTakeSessionSnapshot();
186
    $self->debugTakeSessionSnapshot();
86
    
187
    
87
    my ($emailInput, $emailProInput, $email_BInput, $phoneInput, $phoneProInput, $phone_BInput) = $self->_getInputFieldsForValidation();
188
    my ($emailInput, $emailProInput, $email_BInput, $phoneInput, $phoneProInput, $phone_BInput, $SMSnumber) = $self->_getInputFieldsForValidation();
88
    
189
    
89
    $emailInput->clear();
190
    $emailInput->clear();
90
    $emailProInput->clear();
191
    $emailProInput->clear();
Lines 102-108 sub setPhone { Link Here
102
    my $d = $self->getDriver();
203
    my $d = $self->getDriver();
103
    $self->debugTakeSessionSnapshot();
204
    $self->debugTakeSessionSnapshot();
104
    
205
    
105
    my ($emailInput, $emailProInput, $email_BInput, $phoneInput, $phoneProInput, $phone_BInput) = $self->_getInputFieldsForValidation();
206
    my ($emailInput, $emailProInput, $email_BInput, $phoneInput, $phoneProInput, $phone_BInput, $SMSnumber) = $self->_getInputFieldsForValidation();
106
    
207
    
107
    $phoneInput->clear();
208
    $phoneInput->clear();
108
    $phoneProInput->clear();
209
    $phoneProInput->clear();
Lines 115-134 sub setPhone { Link Here
115
    return $self;
216
    return $self;
116
}
217
}
117
218
219
sub setSMSNumber {
220
    my ($self, $input) = @_;
221
    my $d = $self->getDriver();
222
    $self->debugTakeSessionSnapshot();
223
    
224
    my ($emailInput, $emailProInput, $email_BInput, $phoneInput, $phoneProInput, $phone_BInput, $SMSnumber) = $self->_getInputFieldsForValidation();
225
    
226
    $SMSnumber->clear();
227
    $SMSnumber->send_keys($input);
228
    ok(1, "Intra Memberentry Wrote \"$input\" to SMSnumber.");
229
    
230
    return $self;
231
}
232
118
sub submitForm {
233
sub submitForm {
119
    my ($self, $valid) = @_;
234
    my ($self, $valid) = @_;
120
    my $d = $self->getDriver();
235
    my $d = $self->getDriver();
121
    $self->debugTakeSessionSnapshot();
236
    $self->debugTakeSessionSnapshot();
122
    
237
    
123
    my $submitButton = $d->find_element('form#entryform input[type="submit"]');
238
    my $submitButton = $d->find_element('form#entryform input[type="submit"]');
124
    $submitButton->click();
239
    $submitButton->submit();
125
    
126
    $self->debugTakeSessionSnapshot();
240
    $self->debugTakeSessionSnapshot();
127
    
241
    
128
    if ($valid) {
242
    if ($valid) {
129
        my $submitted = $d->find_element("#editpatron", 'css');
243
        my $submitted = $d->find_element("#editpatron", 'css');
130
        ok(1, "Intra Memberentry Submit changes success");
244
        ok(1, "Intra Memberentry Submit changes success");
131
        return t::lib::Page::Members::Moremember->rebrandFromPageObject($self);
245
        return t::lib::Page::Circulation::Circulation->rebrandFromPageObject($self);
132
    } else {
246
    } else {
133
        my @notsubmitted = $d->find_elements('form#entryform label[class="error"]', 'css');
247
        my @notsubmitted = $d->find_elements('form#entryform label[class="error"]', 'css');
134
        my $error_ids = "";
248
        my $error_ids = "";
Lines 142-151 sub submitForm { Link Here
142
        $d->refresh();
256
        $d->refresh();
143
        return $self;
257
        return $self;
144
    }
258
    }
145
    
146
    
147
    
148
    
149
}
259
}
150
260
151
1;
261
1;
(-)a/t/lib/Page/Members/Moremember.pm (-2 / +118 lines)
Lines 19-26 package t::lib::Page::Members::Moremember; Link Here
19
19
20
use Modern::Perl;
20
use Modern::Perl;
21
use Scalar::Util qw(blessed);
21
use Scalar::Util qw(blessed);
22
use Test::More;
22
23
23
use base qw(t::lib::Page::Intra t::lib::Page::Members::Toolbar);
24
use base qw(t::lib::Page::Intra t::lib::Page::Members::Toolbar t::lib::Page::Members::LeftNavigation);
24
25
25
use t::lib::Page::Members::ApiKeys;
26
use t::lib::Page::Members::ApiKeys;
26
27
Lines 74-82 See. Selenium documentation best practices for UI element mapping to common lang Link Here
74
=cut
75
=cut
75
################################################################################
76
################################################################################
76
77
78
sub _getEditLinks {
79
    my ($self) = @_;
80
    my $d = $self->getDriver();
81
82
    my $patron_info_edit = $d->find_element("div#patron-information div.action a[href*='memberentry.pl?op=modify'][href*='step=1']", 'css');
83
    my $sms_number_edit = $d->find_element("div.action a[href*='memberentry.pl?op=modify'][href*='step=5']", 'css');
84
    my $library_use_edit = $d->find_element("div.action a[href*='memberentry.pl?op=modify'][href*='step=3']", 'css');
85
    my $alternate_addr_edit = $d->find_element("div.action a[href*='memberentry.pl?op=modify'][href*='step=6']", 'css');
86
    my $alternative_contact_edit = $d->find_element("div.action a[href*='memberentry.pl?op=modify'][href*='step=2']", 'css');
87
88
    my $e = {};
89
    $e->{patron_information} = $patron_info_edit if $patron_info_edit;
90
    $e->{smsnumber} = $sms_number_edit if $sms_number_edit;
91
    $e->{library_use} = $library_use_edit if $library_use_edit;
92
    $e->{alternate_address} = $alternate_addr_edit if $alternate_addr_edit;
93
    $e->{alternative_contact} = $alternative_contact_edit if $alternative_contact_edit;
94
    return $e;
95
}
77
96
97
sub _getMessagingPreferenceCheckboxes {
98
    my ($self) = @_;
99
    my $d = $self->getDriver();
78
100
79
101
    my @email_prefs = $d->find_elements('input[type="checkbox"][id^="email"]');
102
    my @phone_prefs = $d->find_elements('input[type="checkbox"][id^="phone"]');
103
    my @sms_prefs = $d->find_elements('input[type="checkbox"][id^="sms"]');
104
    
105
    return  { email => \@email_prefs, phone => \@phone_prefs, sms => \@sms_prefs };
106
}
80
107
81
################################################################################
108
################################################################################
82
=head PageObject Services
109
=head PageObject Services
Lines 84-90 See. Selenium documentation best practices for UI element mapping to common lang Link Here
84
=cut
111
=cut
85
################################################################################
112
################################################################################
86
113
114
sub checkMessagingPreferencesSet {
115
    my ($self, $valid, @prefs) = @_;
116
    my $d = $self->getDriver();
117
    $self->debugTakeSessionSnapshot();
118
    
119
    foreach my $type (@prefs){
120
        my @this_pref = $d->find_elements('input[type="checkbox"][id^="'.$type.'"]');
121
        
122
        my $ok = 0;
123
        
124
        foreach my $checkbox (@this_pref){
125
            ok(0, "Intra Moremember $type messaging checkbox ".$checkbox->get_attribute('id')." not checked") if !$checkbox->is_selected() and $valid;
126
            ok(0, "Intra Moremember $type messaging checkbox ".$checkbox->get_attribute('id')." checked (not supposed to be)") if $checkbox->is_selected() and !$valid;
127
            $ok = 1;
128
        }
129
        ok($ok, "Intra Moremember $type messaging checkboxes ok (all " . (($valid) ? 'checked':'unchecked') . ")");
130
    }
131
    
132
    return $self;
133
}
134
135
sub navigateToPatronInformationEdit {
136
    my ($self) = @_;
137
    my $d = $self->getDriver();
138
    $self->debugTakeSessionSnapshot();
139
140
    my $elements = $self->_getEditLinks();
141
    $elements->{patron_information}->click();
142
    ok($d->get_title() =~ m/Modify patron/, "Intra Navigate to Modify patron information");
143
144
    $self->debugTakeSessionSnapshot();
145
146
    return t::lib::Page::Members::Memberentry->rebrandFromPageObject($self);
147
}
148
149
sub navigateToSMSnumberEdit {
150
    my ($self) = @_;
151
    my $d = $self->getDriver();
152
    $self->debugTakeSessionSnapshot();
153
154
    my $elements = $self->_getEditLinks();
155
    $elements->{smsnumber}->click();
156
    ok($d->get_title() =~ m/Modify patron/, "Intra Navigate to Modify patron SMS number");
157
158
    $self->debugTakeSessionSnapshot();
159
160
    return t::lib::Page::Members::Memberentry->rebrandFromPageObject($self);
161
}
162
163
sub navigateToLibraryUseEdit {
164
    my ($self) = @_;
165
    my $d = $self->getDriver();
166
    $self->debugTakeSessionSnapshot();
167
168
    my $elements = $self->_getEditLinks();
169
    $elements->{library_use}->click();
170
    ok($d->get_title() =~ m/Modify patron/, "Intra Navigate to Modify patron Library use");
171
172
    $self->debugTakeSessionSnapshot();
173
174
    return t::lib::Page::Members::Memberentry->rebrandFromPageObject($self);
175
}
176
177
sub navigateToAlternateAddressEdit {
178
    my ($self) = @_;
179
    my $d = $self->getDriver();
180
    $self->debugTakeSessionSnapshot();
181
182
    my $elements = $self->_getEditLinks();
183
    $elements->{alternate_address}->click();
184
    ok($d->get_title() =~ m/Modify patron/, "Intra Navigate to Modify patron Alternate address");
87
185
186
    $self->debugTakeSessionSnapshot();
187
188
    return t::lib::Page::Members::Memberentry->rebrandFromPageObject($self);
189
}
190
191
sub navigateToAlternativeContactEdit {
192
    my ($self) = @_;
193
    my $d = $self->getDriver();
194
    $self->debugTakeSessionSnapshot();
195
196
    my $elements = $self->_getEditLinks();
197
    $elements->{alternative_contact}->click();
198
    ok($d->get_title() =~ m/Modify patron/, "Intra Navigate to Modify patron Alternative contact");
199
200
    $self->debugTakeSessionSnapshot();
201
202
    return t::lib::Page::Members::Memberentry->rebrandFromPageObject($self);
203
}
88
204
89
205
90
206
(-)a/t/lib/Page/Opac/LeftNavigation.pm (+22 lines)
Lines 22-27 use Scalar::Util qw(blessed); Link Here
22
use Test::More;
22
use Test::More;
23
23
24
use t::lib::Page::Opac::OpacApiKeys;
24
use t::lib::Page::Opac::OpacApiKeys;
25
use t::lib::Page::Opac::OpacMessaging;
25
26
26
=head NAME t::lib::Page::Opac::LeftNavigation
27
=head NAME t::lib::Page::Opac::LeftNavigation
27
28
Lines 72-77 sub _getLeftNavigationActionElements { Link Here
72
        $e->{yourPurchaseSuggestions} = $d->find_element("a[href*='opac-suggestions.pl']", 'css');
73
        $e->{yourPurchaseSuggestions} = $d->find_element("a[href*='opac-suggestions.pl']", 'css');
73
    };
74
    };
74
    eval {
75
    eval {
76
        $e->{yourMessaging} = $d->find_element("a[href*='opac-messaging.pl']", 'css');
77
    };
78
    eval {
75
        $e->{yourLists} = $d->find_element("a[href*='opac-shelves.pl']", 'css');
79
        $e->{yourLists} = $d->find_element("a[href*='opac-shelves.pl']", 'css');
76
    };
80
    };
77
    eval {
81
    eval {
Lines 106-111 sub navigateYourAPIKeys { Link Here
106
    return t::lib::Page::Opac::OpacApiKeys->rebrandFromPageObject($self);
110
    return t::lib::Page::Opac::OpacApiKeys->rebrandFromPageObject($self);
107
}
111
}
108
112
113
sub navigateYourMessaging {
114
    my ($self) = @_;
115
    my $d = $self->getDriver();
116
    $self->debugTakeSessionSnapshot();
117
118
    my $elements = $self->_getLeftNavigationActionElements();
119
    $elements->{yourMessaging}->click();
120
    $self->debugTakeSessionSnapshot();
121
122
    my $breadcrumbs = $self->_getBreadcrumbLinks();
123
124
    ok(ref($breadcrumbs) eq 'ARRAY' &&
125
       $breadcrumbs->[scalar(@$breadcrumbs)-1]->get_text() =~ m/Your messaging/i,
126
       "Opac Navigate to Your messaging");
127
128
    return t::lib::Page::Opac::OpacMessaging->rebrandFromPageObject($self);
129
}
130
109
sub navigateYourPersonalDetails {
131
sub navigateYourPersonalDetails {
110
    my ($self) = @_;
132
    my ($self) = @_;
111
    my $d = $self->getDriver();
133
    my $d = $self->getDriver();
(-)a/t/lib/Page/Opac/OpacMemberentry.pm (-2 / +1 lines)
Lines 23-29 use Test::More; Link Here
23
23
24
use t::lib::Page::Opac::OpacUser;
24
use t::lib::Page::Opac::OpacUser;
25
25
26
use base qw(t::lib::Page::Opac);
26
use base qw(t::lib::Page::Opac t::lib::Page::Opac::LeftNavigation);
27
27
28
use Koha::Exception::BadParameter;
28
use Koha::Exception::BadParameter;
29
29
30
- 

Return to bug 14536