Skip to content
Snippets Groups Projects
EditApptPatientTest.java 5.07 KiB
package edu.ncsu.csc.itrust.selenium;

import java.util.concurrent.TimeUnit;

import org.junit.*;
import org.openqa.selenium.*;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

import edu.ncsu.csc.itrust.enums.TransactionType;

public class EditApptPatientTest extends iTrustSeleniumTest {
  private HtmlUnitDriver driver;
  private StringBuffer verificationErrors = new StringBuffer();

  @Before
  public void setUp() throws Exception {
    super.setUp();
    gen.clearAllTables();
    gen.standardData();
    driver = new HtmlUnitDriver();
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
  }

  @Test
  public void testSetPassedDate() throws Exception {
    gen.uc22();
    driver = (HtmlUnitDriver) login("1", "pw");
    driver.setJavascriptEnabled(true);
    assertEquals("iTrust - Patient Home", driver.getTitle());
    driver.findElement(By.linkText("View/Edit My Appointments")).click();
    assertLogged(TransactionType.APPOINTMENT_ALL_VIEW, 1L, 0L, "");
    driver.findElements(By.tagName("td")).get(5).findElement(By.tagName("a")).click();
    driver.findElement(By.name("startDate")).clear();
    driver.findElement(By.name("startDate")).sendKeys("10/10/2009");
    driver.findElement(By.name("request")).click();
    assertTrue(driver.getPageSource().contains("The scheduled date of this appointment"));
    assertTrue(driver.getPageSource().contains("has already passed"));
    assertNotLogged(TransactionType.APPOINTMENT_EDIT, 1L, 100L, "");
  }

  @Test
  public void testRemoveAppt() throws Exception {
    gen.uc22();
    driver = (HtmlUnitDriver) login("1", "pw");
    driver.setJavascriptEnabled(true);
    assertEquals("iTrust - Patient Home", driver.getTitle());
    driver.findElement(By.linkText("View/Edit My Appointments")).click();
    assertLogged(TransactionType.APPOINTMENT_ALL_VIEW, 1L, 0L, "");
    driver.findElements(By.tagName("td")).get(7).findElement(By.tagName("a")).click();
    driver.findElement(By.id("removeButton")).click();
    assertTrue(driver.getPageSource().contains("Success: Appointment removed"));
    assertLoggedNoSecondary(TransactionType.APPOINTMENT_REMOVE, 1L, 0L, "");
  }

  @Test
  public void testConflictingDate() throws Exception {
    driver = (HtmlUnitDriver) login("1", "pw");
    driver.setJavascriptEnabled(true);
    assertEquals("iTrust - Patient Home", driver.getTitle());
    driver.findElement(By.linkText("View/Edit My Appointments")).click();
    assertLogged(TransactionType.APPOINTMENT_ALL_VIEW, 1L, 0L, "");
    driver.findElements(By.tagName("td")).get(5).findElement(By.tagName("a")).click();
    assertEquals("iTrust - Appointment Requests", driver.getTitle());
    assertTrue(driver.getPageSource().contains("Kelly Doctor"));
    assertTrue(driver.getPageSource().contains("Consultation"));
    assertTrue(driver.getPageSource().contains("11/26/2020"));
    assertTrue(driver.getPageSource().contains("09"));
    assertTrue(driver.getPageSource().contains("10"));
    assertTrue(driver.getPageSource().contains("AM"));
    driver.findElement(By.name("comment")).clear();
    driver.findElement(By.name("comment")).sendKeys("New comment!");
    driver.findElement(By.name("request")).click();
    assertTrue(driver.getPageSource()
        .contains("ERROR: The appointment you requested conflicts with other existing appointments"));
    driver.findElements(By.tagName("input")).get(7).click();
    assertTrue(driver.getPageSource().contains("Your appointment request has been saved and is pending"));
    assertLogged(TransactionType.APPOINTMENT_REQUEST_SUBMITTED, 1L, 9000000000L, "");
  }

  @Test
  public void testEditAppt() throws Exception {
    driver = (HtmlUnitDriver) login("1", "pw");
    driver.setJavascriptEnabled(true);
    assertEquals("iTrust - Patient Home", driver.getTitle());
    driver.findElement(By.linkText("View/Edit My Appointments")).click();
    assertLogged(TransactionType.APPOINTMENT_ALL_VIEW, 1L, 0L, "");
    driver.findElements(By.tagName("td")).get(5).findElement(By.tagName("a")).click();
    assertEquals("iTrust - Appointment Requests", driver.getTitle());
    assertTrue(driver.getPageSource().contains("Kelly Doctor"));
    assertTrue(driver.getPageSource().contains("Consultation"));
    assertTrue(driver.getPageSource().contains("11/26/2020"));
    assertTrue(driver.getPageSource().contains("09"));
    assertTrue(driver.getPageSource().contains("10"));
    assertTrue(driver.getPageSource().contains("AM"));
    driver.findElement(By.name("comment")).clear();
    driver.findElement(By.name("comment")).sendKeys("New comment!");
    driver.findElement(By.name("startDate")).clear();
    driver.findElement(By.name("startDate")).sendKeys("12/20/2021");
    driver.findElement(By.name("request")).click();
    assertTrue(driver.getPageSource().contains("Your appointment request has been saved and is pending"));
    assertLogged(TransactionType.APPOINTMENT_REQUEST_SUBMITTED, 1L, 9000000000L, "");
  }

  @After
  public void tearDown() throws Exception {
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
      fail(verificationErrorString);
    }
  }
}