From e27a61c79a509f8121b93f6cd7d2e0fba67e4cc6 Mon Sep 17 00:00:00 2001 From: Elengikal <elengik2@fa20-cs427-053.cs.illinois.edu> Date: Tue, 24 Nov 2020 18:16:58 -0600 Subject: [PATCH] adding junit and selenium tests for Subflow 1 --- .../itrust/selenium/SendRemindersTest.java | 88 +++++++++++++++++++ .../unit/action/SendRemindersActionTest.java | 68 ++++++++++++++ .../unit/dao/appointment/ApptDAOTest.java | 20 ++++- 3 files changed, 174 insertions(+), 2 deletions(-) create mode 100644 iTrust/test/edu/ncsu/csc/itrust/selenium/SendRemindersTest.java create mode 100644 iTrust/test/edu/ncsu/csc/itrust/unit/action/SendRemindersActionTest.java diff --git a/iTrust/test/edu/ncsu/csc/itrust/selenium/SendRemindersTest.java b/iTrust/test/edu/ncsu/csc/itrust/selenium/SendRemindersTest.java new file mode 100644 index 0000000..45207bb --- /dev/null +++ b/iTrust/test/edu/ncsu/csc/itrust/selenium/SendRemindersTest.java @@ -0,0 +1,88 @@ +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); + + // 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()); + } + + + + +} \ No newline at end of file diff --git a/iTrust/test/edu/ncsu/csc/itrust/unit/action/SendRemindersActionTest.java b/iTrust/test/edu/ncsu/csc/itrust/unit/action/SendRemindersActionTest.java new file mode 100644 index 0000000..7112371 --- /dev/null +++ b/iTrust/test/edu/ncsu/csc/itrust/unit/action/SendRemindersActionTest.java @@ -0,0 +1,68 @@ +package edu.ncsu.csc.itrust.unit.action; + +import edu.ncsu.csc.itrust.action.SendRemindersAction; +import edu.ncsu.csc.itrust.beans.ApptBean; +import edu.ncsu.csc.itrust.beans.MessageBean; +import edu.ncsu.csc.itrust.dao.DAOFactory; +import edu.ncsu.csc.itrust.dao.mysql.MessageDAO; +import edu.ncsu.csc.itrust.exception.FormValidationException; +import edu.ncsu.csc.itrust.exception.ITrustException; +import edu.ncsu.csc.itrust.unit.datagenerators.TestDataGenerator; +import edu.ncsu.csc.itrust.unit.testutils.TestDAOFactory; +import junit.framework.TestCase; + +import java.sql.SQLException; +import java.sql.Timestamp; +import java.time.LocalDateTime; +import java.util.List; + + +public class SendRemindersActionTest extends TestCase { + + private DAOFactory factory; + private MessageDAO messageDAO; + private SendRemindersAction srAction; + private TestDataGenerator gen; + private long patientId; + private long hcpId; + + @Override + protected void setUp() throws Exception { + super.setUp(); + gen = new TestDataGenerator(); + gen.clearAllTables(); + gen.standardData(); + + this.patientId = 2L; + this.hcpId = 9000000000L; + this.factory = TestDAOFactory.getTestInstance(); + this.messageDAO = new MessageDAO(this.factory); + this.srAction = new SendRemindersAction(this.factory, this.hcpId); + } + + public void testSendRemindersAction() throws ITrustException + { + int numberOfAppts = srAction.sendReminderForAppointments(10); + assertTrue(numberOfAppts >= 5); + } + + public void testSendReminders() throws ITrustException, SQLException, FormValidationException { + ApptBean aBean = new ApptBean(); + + aBean.setApptType("TEST"); + aBean.setPatient(patientId); + aBean.setHcp(hcpId); + aBean.setDate(Timestamp.valueOf(LocalDateTime.now().plusDays(4))); + + List<MessageBean> mbListBefore = messageDAO.getMessagesFor(patientId); + + srAction.sendReminder(aBean); + + List<MessageBean> mbList = messageDAO.getMessagesFor(patientId); + + assertEquals(mbList.size(), mbListBefore.size() + 1); + MessageBean mBeanDB = mbList.get(0); + assertEquals("Reminder: upcoming appointment in 4 day(s)", mBeanDB.getSubject()); + } + +} \ No newline at end of file diff --git a/iTrust/test/edu/ncsu/csc/itrust/unit/dao/appointment/ApptDAOTest.java b/iTrust/test/edu/ncsu/csc/itrust/unit/dao/appointment/ApptDAOTest.java index f20dd33..77a4579 100644 --- a/iTrust/test/edu/ncsu/csc/itrust/unit/dao/appointment/ApptDAOTest.java +++ b/iTrust/test/edu/ncsu/csc/itrust/unit/dao/appointment/ApptDAOTest.java @@ -17,6 +17,8 @@ public class ApptDAOTest extends TestCase { private DAOFactory factory = TestDAOFactory.getTestInstance(); private ApptDAO apptDAO = factory.getApptDAO(); + private ApptBean[] appts = null; + private ApptBean a1; private ApptBean a2; private ApptBean a3; @@ -30,8 +32,6 @@ public class ApptDAOTest extends TestCase { gen.clearAllTables(); gen.appointmentType(); - - a1 = new ApptBean(); a1.setDate(new Timestamp(new Date().getTime())); a1.setApptType("Ultrasound"); @@ -49,6 +49,7 @@ public class ApptDAOTest extends TestCase { a3.setApptType("Ultrasound"); a3.setHcp(doctorMID); a3.setPatient(patientMID); + } public void testAppointment() throws Exception { @@ -148,5 +149,20 @@ public class ApptDAOTest extends TestCase { assertEquals(30, type.getDuration()); assertEquals("Ultrasound", type.getName()); } + + // Test adding and retreiving upcoming appointments within n days + public void testGetUpcomingAppts() throws Exception { + // Edge case: empty database + List<ApptBean> upcomingAppts = apptDAO.getUpcomingAppts(30); + assertEquals(0, upcomingAppts.size()); + + // Test returning upcoming appts B + apptDAO.scheduleAppt(a1); + apptDAO.scheduleAppt(a2); + apptDAO.scheduleAppt(a3); + + upcomingAppts = apptDAO.getUpcomingAppts(1); + assertEquals(3, upcomingAppts.size()); + } } -- GitLab