package test.system; import static org.junit.Assert.assertTrue; import edu.cs320.project.*; import test.*; import java.awt.AWTException; import junit.framework.TestCase; public class SearchSystemTest extends TestCase { private SmartRobot rob; private LoginDisplay loginDisplay; private SearchMainDisplay searchMainDisplay; private PatientRecordDisplay patientRecordDisplay; private PatientInfoDisplay patientInfoDisplay; private SummaryDisplay summaryDisplay; public SearchSystemTest(String name) { super(name); rob = SmartRobot.getInstance(); } protected void setUp() throws Exception { StorageWrapper.deleteFromClient("cs320.patient"); super.setUp(); DisplayController.main(null); loginDisplay = (LoginDisplay) DisplayController.GetInstance().getCurrentDisplay(); } protected void tearDown() throws Exception { super.tearDown(); } /** * logs in as pharmacist and searches for a new non-existing patient. The Patient won't be * found and a message should be displayed saying so. After clicking out of the message, * the pharmacist should be brought back to the main search display. */ public void testSearchForNonExistingPatientPharmacist(){ assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof LoginDisplay); //login as pharmacist Utility.login("jmolloy", "cs320"); assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof SearchMainDisplay); searchMainDisplay = (SearchMainDisplay)DisplayController.GetInstance().getCurrentDisplay(); //search for a random patient not already in the database Utility.searchForPatient(InputGenerator.randomString(20), InputGenerator.randomString(20), InputGenerator.randomDateStringNoTime()); rob.delay(3000); assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof SearchMainDisplay); Utility.logoutFromSearchMainDisplay(); } /** * logs in as nurse and searches for a new non-existing patient. The Patient won't be * found and should be saved to the database as a new patient. This is tested by going back * and searching for the same patient again. */ public void testSearchForNonExistingPatientNurse(){ String firstName = test.InputGenerator.randomString(20); // name of 20 characters String lastName = test.InputGenerator.randomString(20); //last name of 20 characters String dob = test.InputGenerator.randomDateStringNoTime(); assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof LoginDisplay); //login as nurse Utility.login("cs320", "cs320"); assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof SearchMainDisplay); searchMainDisplay = (SearchMainDisplay)DisplayController.GetInstance().getCurrentDisplay(); //search for random patient not already in the database Utility.searchForPatient(firstName, lastName, dob); //clicks okay button on message displayed //int x = DisplayController.GetInstance().GetWindow().getX(); //int y = DisplayController.GetInstance().GetWindow().getY(); rob.typeEnter(); //rob.delay(3000); assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof PatientRecordDisplay); patientRecordDisplay = (PatientRecordDisplay)DisplayController.GetInstance().getCurrentDisplay(); Utility.fillOutPatientDemographics(null, null, null, Integer.toString(InputGenerator.randomInt(100000)), Integer.toString(InputGenerator.randomInt(1000)) , Integer.toString(InputGenerator.randomInt(1000)) , "female", InputGenerator.randomString(50)); //click submit button rob.mouseClick(patientRecordDisplay.getSubmitButtonTest()); rob.delay(2000); //click confirm button assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof PatientRecordDisplay); rob.mouseClick(patientRecordDisplay.getSubmitButtonTest()); rob.delay(1000); //click finish button on summary page assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof SummaryDisplay); summaryDisplay = (SummaryDisplay)DisplayController.GetInstance().getCurrentDisplay(); rob.mouseClick(summaryDisplay.getSearchButtonTest()); rob.delay(2000); //system goes back to main search page assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof SearchMainDisplay); searchMainDisplay = (SearchMainDisplay)DisplayController.GetInstance().getCurrentDisplay(); //search for the newly created patient Utility.searchForPatient(firstName, lastName, dob); assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof PatientRecordDisplay); rob.mouseClick(patientRecordDisplay.getLogoutButtonTest()); } /** * tests for when all of the fields in search are empty */ public void testSearchForEmptyPatient(){ assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof LoginDisplay); //login as pharmacist Utility.login("jmolloy", "cs320"); assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof SearchMainDisplay); searchMainDisplay = (SearchMainDisplay)DisplayController.GetInstance().getCurrentDisplay(); //search for a random patient not already in the database Utility.searchForPatient("", "", ""); //clicks the okay button on the message displayed assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof SearchMainDisplay); assertEquals(searchMainDisplay.getNoneFoundLabel().getText(), "Please Fill Out All Fields"); rob.mouseClick(searchMainDisplay.getLogoutButtonTest()); } /** * checks that wrong date is not allowed */ public void testSearchForPatientWrongDate(){ assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof LoginDisplay); //login as pharmacist Utility.login("jmolloy", "cs320"); assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof SearchMainDisplay); searchMainDisplay = (SearchMainDisplay)DisplayController.GetInstance().getCurrentDisplay(); //search for a random patient not already in the database Utility.searchForPatient(InputGenerator.randomString(20), InputGenerator.randomString(20), InputGenerator.randomString(20)); assertEquals(searchMainDisplay.getNoneFoundLabel().getText(), "Please Correctly Fill Out All Fields"); assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof SearchMainDisplay); Utility.logoutFromSearchMainDisplay(); } /** * tests that the clear button works */ public void testSearchForNonPatientClear(){ assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof LoginDisplay); //login as pharmacist Utility.login("jmolloy", "cs320"); assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof SearchMainDisplay); searchMainDisplay = (SearchMainDisplay)DisplayController.GetInstance().getCurrentDisplay(); //Input information into the fields in the search main display rob.mouseClick(searchMainDisplay.getNameTxtTest()); rob.type(InputGenerator.randomString(20)); rob.mouseClick(searchMainDisplay.getLstNameTxtTest()); rob.type(InputGenerator.randomString(20)); rob.mouseClick(searchMainDisplay.getDobFieldTest()); rob.type(InputGenerator.randomDateStringNoTime()); rob.mouseClick(searchMainDisplay.getClearButtonTest()); assertTrue(DisplayController.GetInstance().getCurrentDisplay() instanceof SearchMainDisplay); Utility.logoutFromSearchMainDisplay(); } }