diff --git a/iTrust/test/edu/ncsu/csc/itrust/selenium/CauseOfDeathTrendsReportSeleniumTest.java b/iTrust/test/edu/ncsu/csc/itrust/selenium/CauseOfDeathTrendsReportSeleniumTest.java new file mode 100644 index 0000000000000000000000000000000000000000..10ca3d1e8f91533b0d0b444ffcc75cb7d0c54df6 --- /dev/null +++ b/iTrust/test/edu/ncsu/csc/itrust/selenium/CauseOfDeathTrendsReportSeleniumTest.java @@ -0,0 +1,274 @@ +package edu.ncsu.csc.itrust.selenium; + +import edu.ncsu.csc.itrust.enums.TransactionType; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.htmlunit.HtmlUnitDriver; +import org.openqa.selenium.support.ui.Select; + +public class CauseOfDeathTrendsReportSeleniumTest extends iTrustSeleniumTest { + + private HtmlUnitDriver driver; + + @Override + protected void setUp() throws Exception { + super.setUp(); + gen.clearAllTables(); + gen.standardData(); + } + + public void testViewCODTrendsReports_AllPatientsAllGenders() throws Exception { + driver = (HtmlUnitDriver)login("9000000003", "pw"); + + // Click Diagnosis Trends + driver.findElement(By.cssSelector("h2.panel-title")).click(); + driver.findElement(By.xpath("//div[@class='panel-body']/ul/li[11]")).click(); + driver.findElement(By.linkText("Cause-Of-Death Trends Report")).click(); + + // View Cause of Death Trends Report + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + driver.findElement(By.name("startDate")).clear(); + driver.findElement(By.name("startDate")).sendKeys("01/01/2000"); + driver.findElement(By.name("endDate")).sendKeys("12/31/2020"); + driver.findElement(By.id("view_report")).click(); + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + assertLogged(TransactionType.DEATH_TRENDS_VIEW, 9000000003L, 0L, + "View cause-of-death trends report"); + + WebElement table = driver.findElement(By.id("causeOfDeathTrendsTable")); + String cause1 = table.findElements(By.tagName("td")).get(0).getText(); + double code1 = Double.parseDouble(table.findElements(By.tagName("td")).get(1).getText()); + int deaths1 = Integer.parseInt(table.findElements(By.tagName("td")).get(2).getText()); + + assertEquals(cause1, "Influenza"); + assertEquals(code1, 487.00); + assertEquals(deaths1, 5); + + String cause2 = table.findElements(By.tagName("td")).get(3).getText(); + double code2 = Double.parseDouble(table.findElements(By.tagName("td")).get(4).getText()); + int deaths2 = Integer.parseInt(table.findElements(By.tagName("td")).get(5).getText()); + + assertEquals(cause2, "Tuberculosis of the lung"); + assertEquals(code2, 11.40); + assertEquals(deaths2, 3); + } + + public void testViewCODTrendsReports_AllPatientsOnlyMale() throws Exception { + driver = (HtmlUnitDriver)login("9000000003", "pw"); + + // Click Diagnosis Trends + driver.findElement(By.cssSelector("h2.panel-title")).click(); + driver.findElement(By.xpath("//div[@class='panel-body']/ul/li[11]")).click(); + driver.findElement(By.linkText("Cause-Of-Death Trends Report")).click(); + + // View Cause of Death Trends Report + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + new Select(driver.findElement(By.name("gender"))).selectByVisibleText("Male"); + driver.findElement(By.name("startDate")).clear(); + driver.findElement(By.name("startDate")).sendKeys("01/01/2000"); + driver.findElement(By.name("endDate")).sendKeys("12/31/2020"); + driver.findElement(By.id("view_report")).click(); + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + assertLogged(TransactionType.DEATH_TRENDS_VIEW, 9000000003L, 0L, + "View cause-of-death trends report"); + + WebElement table = driver.findElement(By.id("causeOfDeathTrendsTable")); + String cause1 = table.findElements(By.tagName("td")).get(0).getText(); + double code1 = Double.parseDouble(table.findElements(By.tagName("td")).get(1).getText()); + int deaths1 = Integer.parseInt(table.findElements(By.tagName("td")).get(2).getText()); + + assertEquals(cause1, "Influenza"); + assertEquals(code1, 487.00); + assertEquals(deaths1, 3); + + String cause2 = table.findElements(By.tagName("td")).get(3).getText(); + double code2 = Double.parseDouble(table.findElements(By.tagName("td")).get(4).getText()); + int deaths2 = Integer.parseInt(table.findElements(By.tagName("td")).get(5).getText()); + + assertEquals(cause2, "Malaria"); + assertEquals(code2, 84.50); + assertEquals(deaths2, 2); + } + + public void testViewCODTrendsReports_AllPatientsOnlyFemale() throws Exception { + driver = (HtmlUnitDriver)login("9000000003", "pw"); + + // Click Diagnosis Trends + driver.findElement(By.cssSelector("h2.panel-title")).click(); + driver.findElement(By.xpath("//div[@class='panel-body']/ul/li[11]")).click(); + driver.findElement(By.linkText("Cause-Of-Death Trends Report")).click(); + + // View Cause of Death Trends Report + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + new Select(driver.findElement(By.name("gender"))).selectByVisibleText("Female"); + driver.findElement(By.name("startDate")).clear(); + driver.findElement(By.name("startDate")).sendKeys("01/01/2000"); + driver.findElement(By.name("endDate")).sendKeys("12/31/2020"); + driver.findElement(By.id("view_report")).click(); + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + assertLogged(TransactionType.DEATH_TRENDS_VIEW, 9000000003L, 0L, + "View cause-of-death trends report"); + + WebElement table = driver.findElement(By.id("causeOfDeathTrendsTable")); + String cause1 = table.findElements(By.tagName("td")).get(0).getText(); + double code1 = Double.parseDouble(table.findElements(By.tagName("td")).get(1).getText()); + int deaths1 = Integer.parseInt(table.findElements(By.tagName("td")).get(2).getText()); + + assertEquals(cause1, "Influenza"); + assertEquals(code1, 487.00); + assertEquals(deaths1, 2); + + String cause2 = table.findElements(By.tagName("td")).get(3).getText(); + double code2 = Double.parseDouble(table.findElements(By.tagName("td")).get(4).getText()); + int deaths2 = Integer.parseInt(table.findElements(By.tagName("td")).get(5).getText()); + + assertEquals(cause2, "Tuberculosis of the lung"); + assertEquals(code2, 11.40); + assertEquals(deaths2, 1); + } + + public void testViewCODTrendsReports_MyPatientsAllGenders() throws Exception { + driver = (HtmlUnitDriver)login("9000000003", "pw"); + + // Click Diagnosis Trends + driver.findElement(By.cssSelector("h2.panel-title")).click(); + driver.findElement(By.xpath("//div[@class='panel-body']/ul/li[11]")).click(); + driver.findElement(By.linkText("Cause-Of-Death Trends Report")).click(); + + // View Cause of Death Trends Report + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + new Select(driver.findElement(By.name("patients"))).selectByVisibleText("My Patients"); + driver.findElement(By.name("startDate")).clear(); + driver.findElement(By.name("startDate")).sendKeys("01/01/2000"); + driver.findElement(By.name("endDate")).sendKeys("12/31/2020"); + driver.findElement(By.id("view_report")).click(); + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + assertLogged(TransactionType.DEATH_TRENDS_VIEW, 9000000003L, 0L, + "View cause-of-death trends report"); + + WebElement table = driver.findElement(By.id("causeOfDeathTrendsTable")); + String cause1 = table.findElements(By.tagName("td")).get(0).getText(); + double code1 = Double.parseDouble(table.findElements(By.tagName("td")).get(1).getText()); + int deaths1 = Integer.parseInt(table.findElements(By.tagName("td")).get(2).getText()); + + assertEquals(cause1, "Diabetes with ketoacidosis"); + assertEquals(code1, 250.10); + assertEquals(deaths1, 1); + } + + public void testViewCODTrendsReports_MyPatientsOnlyMale() throws Exception { + driver = (HtmlUnitDriver)login("9000000003", "pw"); + + // Click Diagnosis Trends + driver.findElement(By.cssSelector("h2.panel-title")).click(); + driver.findElement(By.xpath("//div[@class='panel-body']/ul/li[11]")).click(); + driver.findElement(By.linkText("Cause-Of-Death Trends Report")).click(); + + // View Cause of Death Trends Report + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + new Select(driver.findElement(By.name("patients"))).selectByVisibleText("My Patients"); + new Select(driver.findElement(By.name("gender"))).selectByVisibleText("Male"); + driver.findElement(By.name("startDate")).clear(); + driver.findElement(By.name("startDate")).sendKeys("01/01/2000"); + driver.findElement(By.name("endDate")).sendKeys("12/31/2020"); + driver.findElement(By.id("view_report")).click(); + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + assertLogged(TransactionType.DEATH_TRENDS_VIEW, 9000000003L, 0L, + "View cause-of-death trends report"); + + WebElement table = driver.findElement(By.id("causeOfDeathTrendsTable")); + String cause1 = table.findElements(By.tagName("td")).get(0).getText(); + double code1 = Double.parseDouble(table.findElements(By.tagName("td")).get(1).getText()); + int deaths1 = Integer.parseInt(table.findElements(By.tagName("td")).get(2).getText()); + + assertEquals(cause1, "Diabetes with ketoacidosis"); + assertEquals(code1, 250.10); + assertEquals(deaths1, 1); + } + + public void testViewCODTrendsReports_MyPatientsOnlyFemale() throws Exception { + driver = (HtmlUnitDriver)login("9000000003", "pw"); + + // Click Diagnosis Trends + driver.findElement(By.cssSelector("h2.panel-title")).click(); + driver.findElement(By.xpath("//div[@class='panel-body']/ul/li[11]")).click(); + driver.findElement(By.linkText("Cause-Of-Death Trends Report")).click(); + + // View Cause of Death Trends Report + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + new Select(driver.findElement(By.name("patients"))).selectByVisibleText("My Patients"); + new Select(driver.findElement(By.name("gender"))).selectByVisibleText("Female"); + driver.findElement(By.name("startDate")).clear(); + driver.findElement(By.name("startDate")).sendKeys("01/01/2000"); + driver.findElement(By.name("endDate")).sendKeys("12/31/2020"); + driver.findElement(By.id("view_report")).click(); + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + assertLogged(TransactionType.DEATH_TRENDS_VIEW, 9000000003L, 0L, + "View cause-of-death trends report"); + + assertTrue(driver.getPageSource().contains("No results returned")); + } + + public void testViewCODTrendsReports_EmptyDates() throws Exception { + driver = (HtmlUnitDriver)login("9000000003", "pw"); + + // Click Diagnosis Trends + driver.findElement(By.cssSelector("h2.panel-title")).click(); + driver.findElement(By.xpath("//div[@class='panel-body']/ul/li[11]")).click(); + driver.findElement(By.linkText("Cause-Of-Death Trends Report")).click(); + + // View Cause of Death Trends Report + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + driver.findElement(By.name("startDate")).clear(); + driver.findElement(By.name("startDate")).sendKeys(""); + driver.findElement(By.name("endDate")).sendKeys(""); + driver.findElement(By.id("view_report")).click(); + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + assertLogged(TransactionType.DEATH_TRENDS_VIEW, 9000000003L, 0L, + "View cause-of-death trends report"); + + assertTrue(driver.getPageSource().contains("Enter dates in MM/dd/yyyy")); + } + + public void testViewCODTrendsReports_InvalidDateFormat() throws Exception { + driver = (HtmlUnitDriver)login("9000000003", "pw"); + + // Click Diagnosis Trends + driver.findElement(By.cssSelector("h2.panel-title")).click(); + driver.findElement(By.xpath("//div[@class='panel-body']/ul/li[11]")).click(); + driver.findElement(By.linkText("Cause-Of-Death Trends Report")).click(); + + // View Cause of Death Trends Report + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + driver.findElement(By.name("startDate")).clear(); + driver.findElement(By.name("startDate")).sendKeys("01-01-2000"); + driver.findElement(By.name("endDate")).sendKeys("12-31-2020"); + driver.findElement(By.id("view_report")).click(); + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + assertLogged(TransactionType.DEATH_TRENDS_VIEW, 9000000003L, 0L, + "View cause-of-death trends report"); + + assertTrue(driver.getPageSource().contains("Enter dates in MM/dd/yyyy")); + } + + public void testViewCODTrendsReports_StartDateAfterEndDate() throws Exception { + driver = (HtmlUnitDriver)login("9000000003", "pw"); + + // Click Diagnosis Trends + driver.findElement(By.cssSelector("h2.panel-title")).click(); + driver.findElement(By.xpath("//div[@class='panel-body']/ul/li[11]")).click(); + driver.findElement(By.linkText("Cause-Of-Death Trends Report")).click(); + + // View Cause of Death Trends Report + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + driver.findElement(By.name("startDate")).clear(); + driver.findElement(By.name("startDate")).sendKeys("01/01/2021"); + driver.findElement(By.name("endDate")).sendKeys("12/31/2020"); + driver.findElement(By.id("view_report")).click(); + assertTrue(driver.getCurrentUrl().equals(ADDRESS + "auth/hcp/causeOfDeathTrendsReport.jsp")); + assertLogged(TransactionType.DEATH_TRENDS_VIEW, 9000000003L, 0L, + "View cause-of-death trends report"); + + assertTrue(driver.getPageSource().contains("Start date must be before end date!")); + } +}