Skip to content
Snippets Groups Projects
SendRemindersTest.java 3.48 KiB
Newer Older
  • Learn to ignore specific revisions
  • package edu.ncsu.csc.itrust.selenium;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import java.text.SimpleDateFormat;  
    import java.util.Date; 
    import java.util.List;
    
    public class SendRemindersTest extends iTrustSeleniumTest{
    
        protected WebDriver driver;
    
        @Override
        protected void setUp() throws Exception {
            super.setUp();
            gen.clearAllTables();
            gen.standardData();
        }
    
        // Test sending reminders
    	public void testSendReminder() throws Exception {
    		// Login as admin
            driver = login("9000000001", "pw");
            assertEquals("iTrust - Admin Home", driver.getTitle());
            driver.findElement(By.linkText("Send Appointment Reminders")).click();
    
            // Send reminders
            driver.findElement(By.name("withinDays")).sendKeys("10");
            driver.findElement(By.name("withinDays")).submit();
            assertEquals("Reminders were successfully sent",
            driver.findElement(By.className("iTrustMessage")).getText());
    
            // Create timestamp
    		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    		Date date = new Date();
    		String stamp = dateFormat.format(date);
    
    
            // Check admin reminders outbox
            driver.findElement(By.linkText("Reminder Message Outbox")).click();
            assertNotNull(driver.findElement(By.className("fancyTable")));
            assertTrue(driver.getPageSource().contains(stamp));
    
            // Check a reminder message
            driver.findElement(By.linkText("Read")).click();
            assertTrue(driver.getPageSource().contains(stamp));
    
    		
            // Logout admin and login as patient
    		List<WebElement> links = driver.findElements(By.tagName("a"));
    		int count = 0;
    		for(int i = 0; i < links.size(); i++) {
    			if(links.get(i).getAttribute("href").contains("logout"))
    			{
    				count = i;
    				break;
    			}
    		}
    		links.get(count).click();
    		driver = login("5", "pw");
    		
    		// Check patient inbox
            driver.findElement(By.linkText("Message Inbox")).click();
            int index = 1;
            WebElement baseTable = driver.findElement(By.cssSelector(".display.fTable"));
            List<WebElement> tableRows = baseTable.findElements(By.tagName("tr"));
            assertTrue(tableRows.get(index).getText().contains("System Reminder"));
            assertTrue(tableRows.get(index).getText().contains("Reminder: upcoming appointment"));
            index++;
            assertTrue(tableRows.get(index).getText().contains("Reminder: upcoming appointment"));
            assertTrue(tableRows.get(index).getText().contains(stamp));
        }
    
        // Test invalid number of days input for sending reminders
    	public void testInvalidSendReminder() throws Exception {
    
            // Login as admin
            driver = login("9000000001", "pw");
            assertEquals("iTrust - Admin Home", driver.getTitle());
            driver.findElement(By.linkText("Send Appointment Reminders")).click();
    
            // Send reminder with negative days
            driver.findElement(By.name("withinDays")).sendKeys("-4");
            driver.findElement(By.name("withinDays")).submit();
            assertEquals("Provide a positive number",
            driver.findElement(By.className("iTrustError")).getText());
        
            // Send reminder with non-numberic days
            driver.findElement(By.name("withinDays")).sendKeys("Hello");
            driver.findElement(By.name("withinDays")).submit();
            assertEquals("Reminders failed to send. Please provide a positive number",
            driver.findElement(By.className("iTrustError")).getText());
        }
    
    
    
        
    }