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


import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.openqa.selenium.support.ui.Select;


public class LabelsTest extends iTrustSeleniumTest {

	/**
	 * Sets up the standard testing data.
	 */
	public void setUp() throws Exception {
		super.setUp();
		gen.standardData();
	}

	/**
	 * Tests a patient can create a new label when there 
	 * are no other labels
	 */
	public void testCreateLabel() throws Exception{
		WebDriver driver = new HtmlUnitDriver();
		driver = login("1", "pw"); //login as Random Person
		
		//go to label management page
		driver.findElement(By.linkText("My Labels")).click();
		assertEquals("iTrust - My Labels", driver.getTitle());
		
		//add a label name, use default label color - white/#FFFFFF
		WebElement labelName = driver.findElement(By.name("createLabelName"));
		labelName.clear();
		labelName.sendKeys("Test");
		labelName.submit();
		
		//table contains text boxes for editting purposes
		//so we need to get the value inside the textbox
		labelName = driver.findElement(By.name("Label:0"));
		assertEquals("Test", labelName.getAttribute(VALUE));
	}
	
	/**
	 * Tests a patient can edit a label 
	 */
	public void testEditLabel() throws Exception {
		//need to enable javascript
		HtmlUnitDriver driver = new HtmlUnitDriver();
		driver = (HtmlUnitDriver)login("1", "pw"); //login as Random Person
		driver.setJavascriptEnabled(true);
		driver.findElement(By.linkText("My Labels")).click();
		assertEquals("iTrust - My Labels", driver.getTitle());
		driver.setJavascriptEnabled(true);

		//add a label name, use default label color - white/#FFFFFF
		WebElement labelName = driver.findElement(By.name("createLabelName")); 
		labelName.clear();
		labelName.sendKeys("Test");
		driver.findElement(By.cssSelector("input[value='Create Label']")).click();
		 
		//edit the label name field and submit
		WebElement editButton = driver.findElement(By.cssSelector("input[value='Edit Entry']"));
		editButton.click();
		labelName = driver.findElement(By.name("Label:0"));	
		labelName.clear();
		labelName.sendKeys("Updated");
		WebElement submitButton = driver.findElement(By.cssSelector("input[value='Submit']"));
		submitButton.click();
		
		//table contains text boxes for editting purposes
		//so we need to get the value inside the textbox
		labelName = driver.findElement(By.name("Label:0"));
		assertEquals("Updated", labelName.getAttribute(VALUE));

	}
	
	/**
	 * Tests a patient can delete a label 
	 */
	public void testDeleteLabel() throws Exception {
		//need to enable javascript
		HtmlUnitDriver driver = new HtmlUnitDriver();
		driver = (HtmlUnitDriver)login("1", "pw"); //login as Random Person
		driver.setJavascriptEnabled(true);
		driver.findElement(By.linkText("My Labels")).click();
		assertEquals("iTrust - My Labels", driver.getTitle());
		driver.setJavascriptEnabled(true);
		
		//add a "Test" label
		WebElement labelName = driver.findElement(By.name("createLabelName")); 
		labelName.clear();
		labelName.sendKeys("Test");
		driver.findElement(By.cssSelector("input[value='Create Label']")).click();
		//add "Test 2" label
		labelName = driver.findElement(By.name("createLabelName")); 
		labelName.clear();
		labelName.sendKeys("Test 2");
		driver.findElement(By.cssSelector("input[value='Create Label']")).click();
		driver.findElement(By.cssSelector("input[value='Delete Label']")).click();
		labelName = driver.findElement(By.name("Label:0"));
		assertEquals("Test 2", labelName.getAttribute(VALUE));
	}
	
	/**
	 * Tests a patient can apply a label to their food diary
	 */
	public void testApplyLabeltoFood() throws Exception {
		//need to enable javascript
		HtmlUnitDriver driver = new HtmlUnitDriver();
		driver = (HtmlUnitDriver)login("1", "pw"); //login as Random Person
		driver.setJavascriptEnabled(true);
		
		//view my food diary so we can add a new entry
		driver.findElement(By.linkText("My Food Diary")).click();
		assertEquals("iTrust - View My Food Diary", driver.getTitle());
		driver.findElement(By.linkText("Add an entry to your Food Diary.")).click();		
		assertEquals("Add a Food Entry", driver.getTitle());
		
		//now fill in all of the info and submit
		WebElement dateEaten = driver.findElement(By.name("dateEatenStr"));
		dateEaten.clear();
		dateEaten.sendKeys("02/04/2015");
		Select meal = new Select(driver.findElement(By.name("mealType")));
		meal.selectByValue("Dinner");
		WebElement food = driver.findElement(By.name("food"));
		food.clear();
		food.sendKeys("Fruity Pebbles");
		WebElement servings = driver.findElement(By.name("servings"));
		servings.clear();
		servings.sendKeys("7");
		WebElement cals = driver.findElement(By.name("calories"));
		cals.clear();
		cals.sendKeys("110");
		WebElement fat = driver.findElement(By.name("fat"));
		fat.clear();
		fat.sendKeys("1");
		WebElement sodium = driver.findElement(By.name("sodium"));
		sodium.clear();
		sodium.sendKeys("170");
		WebElement carbs = driver.findElement(By.name("carb"));
		carbs.clear();
		carbs.sendKeys("24");
		WebElement fiber = driver.findElement(By.name("fiber"));
		fiber.clear();
		fiber.sendKeys("0");
		WebElement sugar = driver.findElement(By.name("sugar"));
		sugar.clear();
		sugar.sendKeys("11");
		WebElement protein = driver.findElement(By.name("protein"));
		protein.clear();
		protein.sendKeys("1"); 
		driver.findElement(By.cssSelector("input[value='Add entry to Food Diary']")).click();
		assertEquals("iTrust - View My Food Diary", driver.getTitle()); 
		
		//navigate to My Labels page
		driver.findElement(By.linkText("My Labels")).click();
		assertEquals("iTrust - My Labels", driver.getTitle());
		driver.setJavascriptEnabled(true);
		
		//add a "Test" label
		WebElement labelName = driver.findElement(By.name("createLabelName")); 
		labelName.clear();
		labelName.sendKeys("Test");
		driver.findElement(By.cssSelector("input[value='Create Label']")).click();
		
		//Select food diary, label, start and end dates and apply the label
		Select diary = new Select(driver.findElement(By.name("diaries")));
		Select label = new Select(driver.findElement(By.name("labels")));
		diary.selectByValue("food");
		label.selectByIndex(0);
		WebElement startDate = driver.findElement(By.name("startDate"));
		startDate.clear();
		startDate.sendKeys("02/04/2015");
		WebElement endDate = driver.findElement(By.name("endDate"));
		endDate.clear();
		endDate.sendKeys("02/04/2015");		
		driver.findElement(By.cssSelector("input[value='Apply Label']")).click();
		
		//go back to view my food diary
		driver.findElement(By.linkText("My Food Diary")).click();
		assertEquals("iTrust - View My Food Diary", driver.getTitle());
		
		//make sure the label was applied
		Select appliedLabel = new Select(driver.findElement(By.name("LabelEntry:0")));
		WebElement appliedLabelName = appliedLabel.getFirstSelectedOption();
		assertEquals("Test", appliedLabelName.getText());
	}

	/**
	 * Tests a patient can apply a label to their exercise diary
	 */
	public void testApplyLabeltoExercise() throws Exception {
		//need to enable javascript
		HtmlUnitDriver driver = new HtmlUnitDriver();
		driver = (HtmlUnitDriver)login("1", "pw"); //login as Random Person
		driver.setJavascriptEnabled(true);
		
		//navigate to My Labels page
		driver.findElement(By.linkText("My Labels")).click();
		assertEquals("iTrust - My Labels", driver.getTitle());
		driver.setJavascriptEnabled(true);
		
		//add a "Test" label
		WebElement labelName = driver.findElement(By.name("createLabelName")); 
		labelName.clear();
		labelName.sendKeys("Test");
		driver.findElement(By.cssSelector("input[value='Create Label']")).click();
		
		//Select exercise diary, label, start and end dates and apply the label
		Select diary = new Select(driver.findElement(By.name("diaries")));
		Select label = new Select(driver.findElement(By.name("labels")));
		diary.selectByValue("exercise");
		label.selectByIndex(0);
		WebElement startDate = driver.findElement(By.name("startDate"));
		startDate.clear();
		startDate.sendKeys("12/14/2012");
		WebElement endDate = driver.findElement(By.name("endDate"));
		endDate.clear();
		endDate.sendKeys("12/14/2012");		
		driver.findElement(By.cssSelector("input[value='Apply Label']")).click();
		
		//go to view my exercise diary
		driver.findElement(By.linkText("My Exercise Diary")).click();
		assertEquals("iTrust - View My Exercise Diary", driver.getTitle());
		
		//make sure the label was applied
		Select appliedLabel = new Select(driver.findElement(By.name("LabelEntry:0")));
		WebElement appliedLabelName = appliedLabel.getFirstSelectedOption();
		assertEquals("Test", appliedLabelName.getText());
	}
	
	/**
	 * Tests a patient can apply a label to their sleep diary
	 */
	public void testApplyLabeltoSleep() throws Exception {
		//need to enable javascript
		HtmlUnitDriver driver = new HtmlUnitDriver();
		driver = (HtmlUnitDriver)login("1", "pw"); //login as Random Person
		driver.setJavascriptEnabled(true);
		
		//navigate to My Labels page
		driver.findElement(By.linkText("My Labels")).click();
		assertEquals("iTrust - My Labels", driver.getTitle());
		driver.setJavascriptEnabled(true);
		
		//add a "Test" label
		WebElement labelName = driver.findElement(By.name("createLabelName")); 
		labelName.clear();
		labelName.sendKeys("Test");
		driver.findElement(By.cssSelector("input[value='Create Label']")).click();
		
		//Select sleep diary, label, start and end dates and apply the label
		Select diary = new Select(driver.findElement(By.name("diaries")));
		Select label = new Select(driver.findElement(By.name("labels")));
		diary.selectByValue("sleep");
		label.selectByIndex(0);
		WebElement startDate = driver.findElement(By.name("startDate"));
		startDate.clear();
		startDate.sendKeys("12/14/2012");
		WebElement endDate = driver.findElement(By.name("endDate"));
		endDate.clear();
		endDate.sendKeys("12/14/2012");		
		driver.findElement(By.cssSelector("input[value='Apply Label']")).click();
		
		//go to view my sleep diary
		driver.findElement(By.linkText("My Sleep Diary")).click();
		assertEquals("iTrust - View My Sleep Diary", driver.getTitle());
		
		//make sure the label was applied
		Select appliedLabel = new Select(driver.findElement(By.name("LabelEntry:0")));
		WebElement appliedLabelName = appliedLabel.getFirstSelectedOption();
		assertEquals("Test", appliedLabelName.getText());
	}
}