forked from artesis/ding_reservation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathding_reservation.test
159 lines (136 loc) · 6.43 KB
/
ding_reservation.test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<?php
/**
* Check that basic user login functionality works.
*/
class DingReservationFunctionalTest extends DingPopupTestCase {
public static function getInfo() {
return array(
'name' => 'Ding reservation',
'description' => 'Reservation functional tests.',
'group' => 'Ding! - Reservation',
);
}
function setUp() {
$this->profile = 'minimal';
parent::setUp(array('ding_reservation', 'ding_user', 'ding_user_test', 'ding_provider', 'connie', 'ting'));
// Way too many dependencies for this test, but we'll need a mock
// ding_entity implementation in order to test ding_reservations. Until
// such a thing exists, we're using ting.
variable_set('ting_agency', '710100');
variable_set('ting_search_url', 'http://opensearch.addi.dk/1.0/');
variable_set('ting_scan_url', 'http://openscan.addi.dk/1.5/');
variable_set('ting_spell_url', 'http://openspell.addi.dk/1.2/');
variable_set('ting_recommendation_url', 'http://openadhl.addi.dk/1.1/');
}
function testAnonReserve() {
$login_data = array(
'name' => 'twain',
'pass' => 'wain',
);
$this->drupalGet('ting/object/710100:24168638'); // Random harry potter book.
$commands = $this->drupalPostAJAX(NULL, array(), array('op' => t('Reserve')), NULL, array(), array(), 'ding-reservation-reserve-form');
$expected = array(
'command' => 'ding_popup',
'name' => 'ding_user',
'title' => t('Login'),
);
$this->assertCommand($commands, $expected, "We get a login form.");
$commands = $this->drupalPostAJAX(NULL, $login_data, array('op' => t('Log in')), NULL, array(), array(), 'user-login');
$expected = array(
'command' => 'ding_popup_close',
'name' => 'ding_user',
);
$this->assertCommand($commands, $expected, "Login works.");
$expected = array(
'command' => 'ding_popup',
'name' => 'ding_reservation',
);
$this->assertCommand($commands, $expected, "We're asked for a default branch.");
$commands = $this->drupalPostAJAX(NULL, array('preferred_branch' => 'grd'), array('op' => t('Reserve')), NULL, array(), array(), 'ding-reservation-reserve-form--2');
$expected = array(
'command' => 'ding_popup',
'name' => 'ding_reservation',
);
$this->assertCommand($commands, $expected, "Popup stays open.");
foreach ($commands as $command) {
if ($command['command'] == 'ding_popup') {
$this->assertTrue(strpos($command['data'], '"Harry Potter og De Vises Sten Ved Jesper Christensen" reserved and will be available for pickup at Gåserød bibliotek.'), 'Proper message displayed.');
}
}
$this->drupalGet('ting/object/710100:25197909'); // Another random harry potter book.
$commands = $this->drupalPostAJAX(NULL, array(), array('op' => t('Reserve')), NULL, array(), array(), 'ding-reservation-reserve-form');
$expected = array(
'command' => 'ding_popup',
'name' => 'ding_reservation',
);
$this->assertCommand($commands, $expected, "We get a popup.");
foreach ($commands as $command) {
if ($command['command'] == 'ding_popup') {
$this->assertTrue(strpos($command['data'], '"Harry Potter og Flammernes Pokal" reserved and will be available for pickup at Gåserød bibliotek.'), 'Proper message displayed.');
}
}
}
function testUserReserve() {
$login_data = array(
'name' => 'twain',
'pass' => 'wain',
);
$this->drupalPost('user/login', $login_data, t('Log in'));
$this->drupalGet('ting/object/710100:24168638'); // Random harry potter book.
$commands = $this->drupalPostAJAX(NULL, array(), array('op' => t('Reserve')), NULL, array(), array(), 'ding-reservation-reserve-form');
$expected = array(
'command' => 'ding_popup',
'name' => 'ding_reservation',
);
$this->assertCommand($commands, $expected, "We're asked for a default branch.");
$commands = $this->drupalPostAJAX(NULL, array('preferred_branch' => 'grd'), array('op' => t('Reserve')), NULL, array(), array(), 'ding-reservation-reserve-form--2');
$expected = array(
'command' => 'ding_popup',
'name' => 'ding_reservation',
);
$this->assertCommand($commands, $expected, "Popup stays open.");
foreach ($commands as $command) {
if ($command['command'] == 'ding_popup') {
$this->assertTrue(strpos($command['data'], '"Harry Potter og De Vises Sten Ved Jesper Christensen" reserved and will be available for pickup at Gåserød bibliotek.'), 'Proper message displayed.');
}
}
$this->drupalGet('ting/object/710100:25197909'); // Another random harry potter book.
$commands = $this->drupalPostAJAX(NULL, array(), array('op' => t('Reserve')), NULL, array(), array(), 'ding-reservation-reserve-form');
$expected = array(
'command' => 'ding_popup',
'name' => 'ding_reservation',
);
$this->assertCommand($commands, $expected, "We get a popup.");
foreach ($commands as $command) {
if ($command['command'] == 'ding_popup') {
$this->assertTrue(strpos($command['data'], '"Harry Potter og Flammernes Pokal" reserved and will be available for pickup at Gåserød bibliotek.'), 'Proper message displayed.');
}
}
// Now expire creds and try another book.
$this->drupalGet('ding_user_test/expirecreds');
$this->drupalGet('ting/object/710100:25245784'); // Yet another harry potter book.
$commands = $this->drupalPostAJAX(NULL, array(), array('op' => t('Reserve')), NULL, array(), array(), 'ding-reservation-reserve-form');
$expected = array(
'command' => 'ding_popup',
'name' => 'ding_user',
'title' => t('Authenticate'),
);
$this->assertCommand($commands, $expected, "We get an authentication form.");
$commands = $this->drupalPostAJAX(NULL, $login_data, array('op' => t('Log in')), NULL, array(), array(), 'ding-user-authenticate-form');
$expected = array(
'command' => 'ding_popup_close',
'name' => 'ding_user',
);
$this->assertCommand($commands, $expected, "Authentication works.");
$expected = array(
'command' => 'ding_popup',
'name' => 'ding_reservation',
);
$this->assertCommand($commands, $expected, "We get a popup.");
foreach ($commands as $command) {
if ($command['command'] == 'ding_popup') {
$this->assertTrue(strpos($command['data'], '"Harry Potter og Fønixordenen" reserved and will be available for pickup at Gåserød bibliotek.'), 'Proper message displayed.');
}
}
}
}