/** * Adds a participant to booking form */ private function addParticipantsToBooking($logins = array()) { $number = count($logins); if ($number <= 0) { return; } for ($i = 0; $i < $number; $i++) { if ($i == 0) { $this->webDriver->findElement(WebDriverBy::id('participants'))->sendKeys($logins[0]); } else { $this->webDriver->findElement(WebDriverBy::id('participants~' . strval($i)))->sendKeys($logins[$i]); } $this->webDriver->findElement(webDriverBy::id('ilMultiAdd~participants~' . strval($i)))->click(); } }
public function testAppointmentPrivileges() { #1 check without any privilege self::$helper->logout(); self::$helper->login(self::$new_user_1_login, self::$new_user_1_pw); self::$helper->toRSS(); try { $webDriver->findElement(webDriverBy::linkText('Termine')); $this->fail("#1 Appointments are displayed even if there's no privilege"); } catch (Exception $ex) { //Nothing to do here - the Element musn't be found! } #2 check with the privilege to see appointments and administrate booking attributes self::$helper->logout(); self::$helper->login(self::$login_root, self::$pass_root); self::$helper->toRSS(); self::$webDriver->findElement(webDriverBy::linkText('Privilegien'))->click(); $class_1_id = self::$helper->getPrivilegeClassIDByNamePartial(self::$classname_1); self::$helper->grantPrivilege('accessAppointments', $class_1_id); self::$helper->grantPrivilege('adminBookingAttributes', $class_1_id); self::$helper->logout(); self::$helper->login(self::$new_user_1_login, self::$new_user_1_pw); self::$helper->toRSS(); $this->assertEquals(true, self::$webDriver->findElement(webDriverBy::linkText('Termine'))->isDisplayed(), '#2 - 1 Appointments are not displayed even the privilege is granted'); $this->assertEquals(true, self::$webDriver->findElement(webDriverBy::linkText('Termine'))->isDisplayed(), '#2 - 2 Attributes are not displayed even the privilege is granted'); # Check if non_public bookings are not displayed self::$helper->logout(); self::$helper->login(self::$login_root, self::$pass_root); self::$helper->toRSS(); //Create a non-public booking self::$helper->createRoom(self::$standard_roomname, '1', '10'); self::$helper->searchForRoomByName(self::$standard_roomname); self::$webDriver->findElement(WebDriverBy::linktext('Buchen'))->click(); self::$helper->doABooking(self::$standard_subject, "1", "1", date("Y") + 1, "12", "00", "1", "1", date("Y") + 1, "13", "00", ''); self::$helper->logout(); self::$helper->login(self::$new_user_1_login, self::$new_user_1_pw); self::$helper->toRSS(); $this->assertEquals(0, self::$helper->getNoOfResults(), "#3 A non-public booking is visible to an user without the privilege"); #4 Check the privilege to see non-public bookings self::$helper->logout(); self::$helper->login(self::$login_root, self::$pass_root); self::$helper->toRSS(); self::$webDriver->findElement(webDriverBy::linkText('Privilegien'))->click(); self::$helper->grantPrivilege('seeNonPublicBookingInformation', $class_1_id); self::$helper->logout(); self::$helper->login(self::$new_user_1_login, self::$new_user_1_pw); self::$helper->toRSS(); $this->assertEquals(1, self::$helper->getNoOfResults(), "#4 A non-public booking is not visible to an user with the privilege"); #5 Check if the search is accessible self::$helper->logout(); self::$helper->login(self::$login_root, self::$pass_root); self::$helper->toRSS(); self::$webDriver->findElement(webDriverBy::linkText('Privilegien'))->click(); self::$helper->grantPrivilege('accessSearch', $class_1_id); self::$helper->logout(); self::$helper->login(self::$new_user_1_login, self::$new_user_1_pw); self::$helper->toRSS(); $this->assertEquals(true, self::$webDriver->findElement(webDriverBy::linkText('Suche'))->isDisplayed(), '#5 Search is not displayed even the privilege is granted'); #6 Check if the "add booking"-link is not showed, if the privilege isn't given try { $webDriver->findElement(webDriverBy::partialLinkText('Buchung hinzufügen'))->click(); $this->fail('#6 Add Booking is acceptible without the privilege'); } catch (Exception $ex) { //Nothing to do - the exception should come } #7 Check if the "add booking"-link is showed if the privilege is given self::$helper->logout(); self::$helper->login(self::$login_root, self::$pass_root); self::$helper->toRSS(); self::$webDriver->findElement(webDriverBy::linkText('Privilegien'))->click(); self::$helper->grantPrivilege('addOwnBookings', $class_1_id); self::$helper->logout(); self::$helper->login(self::$new_user_1_login, self::$new_user_1_pw); self::$helper->toRSS(); $this->assertEquals(true, self::$webDriver->findElement(webDriverBy::partialLinkText('Buchung hinzufügen'))->isDisplayed(), '#7 Add Booking is not displayed even the privilege is granted'); #8 Check if a user with a higher Priority can oust another booking self::$helper->searchForRoomByName(self::$standard_roomname); self::$webDriver->findElement(WebDriverBy::linktext('Buchen'))->click(); self::$helper->doABooking(self::$standard_subject, "1", "1", date("Y") + 1, "15", "00", "1", "1", date("Y") + 1, "16", "00", ''); self::$helper->searchForRoomByName(self::$standard_roomname); self::$webDriver->findElement(WebDriverBy::linktext('Buchen'))->click(); self::$helper->doABooking(self::$standard_subject, "1", "1", date("Y") + 1, "17", "00", "1", "1", date("Y") + 1, "18", "00", ''); self::$helper->logout(); self::$helper->login(self::$login_root, self::$pass_root); self::$helper->toRSS(); self::$webDriver->findElement(webDriverBy::linkText('Privilegien'))->click(); $class_2_id = self::$helper->getPrivilegeClassIDByNamePartial(self::$classname_2); self::$helper->grantPrivilege('cancelBookingLowerPriority', $class_2_id); self::$helper->grantPrivilege('accessSearch', $class_2_id); self::$helper->grantPrivilege('seeNonPublicBookingInformation', $class_2_id); self::$helper->grantPrivilege('accessAppointments', $class_2_id); self::$helper->grantPrivilege('addOwnBookings', $class_2_id); self::$helper->logout(); self::$helper->login(self::$new_user_2_login, self::$new_user_2_pw); self::$helper->toRSS(); self::$helper->searchForRoomByName(self::$standard_roomname); self::$webDriver->findElement(WebDriverBy::linktext('Buchen'))->click(); self::$helper->doABooking(self::$standard_subject, "1", "1", date("Y") + 1, "15", "00", "1", "1", date("Y") + 1, "16", "00", ''); try { self::$webDriver->findElement(WebDriverBy::className("ilFailureMessage")); $this->fail("#8 Booking with ousting a lower-priority booking does not succeed"); } catch (Exception $ex) { } #9 Check if user with higher priority can cancel bookings with lower priority self::$helper->toRSS(); self::$webDriver->findElement(webDriverBy::id('chb_select_all_'))->click(); self::$webDriver->findElement(webDriverBy::cssSelector('div.ilTableCommandRow > div > input[name="cmd[confirmMultipleCancels]"]'))->click(); self::$webDriver->findElement(webDriverBy::name('cmd[cancelMultipleBookings]'))->click(); try { self::$webDriver->findElement(WebDriverBy::className("ilFailureMessage")); $this->fail('#9 Cancelling a booking with a lower priority is impossible'); } catch (Exception $ex) { } #10 Check if serial bookings can be made and if unlimited bookings are possible self::$helper->logout(); self::$helper->login(self::$login_root, self::$pass_root); self::$helper->toRSS(); self::$webDriver->findElement(webDriverBy::linkText('Privilegien'))->click(); self::$helper->grantPrivilege('addSequenceBookings', $class_1_id); self::$helper->grantPrivilege('addUnlimitedBookings', $class_1_id); self::$helper->logout(); self::$helper->login(self::$new_user_1_login, self::$new_user_1_pw); self::$helper->toRSS(); self::$helper->searchForRoomByName(self::$standard_roomname); self::$webDriver->findElement(WebDriverBy::linktext('Buchen'))->click(); try { $this->assertEquals(true, self::$webDriver->findElement(webDriverBy::id('il_recurrence_1'))->isDisplayed(), "#10 Sequence Bookings are impossible"); } catch (Exception $ex) { $this->fail("#10 Sequence Bookings are impossible"); } self::$helper->toRSS(); self::$helper->searchForRoomByName(self::$standard_roomname); self::$webDriver->findElement(WebDriverBy::linktext('Buchen'))->click(); self::$helper->doABooking(self::$standard_subject, "1", "1", date("Y") + 1, "20", "00", "1", "1", date("Y") + 2, "11", "00", ''); try { self::$webDriver->findElement(WebDriverBy::className("ilFailureMessage")); $this->fail('#10 Unlimited Bookings are impossible'); } catch (Exception $ex) { } #11 Import Bookings self::$helper->logout(); self::$helper->login(self::$login_root, self::$pass_root); self::$helper->toRSS(); self::$webDriver->findElement(webDriverBy::linkText('Privilegien'))->click(); self::$helper->grantPrivilege('accessImport', $class_1_id); self::$helper->logout(); self::$helper->login(self::$new_user_1_login, self::$new_user_1_pw); self::$helper->toRSS(); try { $this->assertEquals(true, self::$webDriver->findElement(webDriverBy::partialLinkText('Import'))->isDisplayed(), "#11 Import is not accessible"); } catch (Exception $ex) { $this->fail("#11 Import is not accessible"); } //Not implemented: Preferences for notifications. The ID for this privilege // (to be used in grantPrivilege() is 'notificationSettings' }