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

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

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

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

public class UploadCDCFilesTest extends iTrustSeleniumTest {
	protected void setUp() throws Exception{
		super.setUp();
		gen.clearAllTables();
		gen.admin1();
	}
	
	public void testCDCImport_Head() throws Exception {
		HtmlUnitDriver driver = (HtmlUnitDriver)login("9000000001", "pw");
		assertEquals("iTrust - Admin Home", driver.getTitle());
		assertLogged(TransactionType.HOME_VIEW, 9000000001L, 0L, "");
		
		driver.findElement(By.linkText("Upload CDC Percentile Metrics")).click();
		assertEquals("iTrust - Import CDC Percentile Metrics", driver.getTitle());
		
		// input tag is under the form of importCDC 
		WebElement file_input = driver.findElement(By.xpath("//*[@id=\"NDCodeUploadForm\"]/input[1]"));
		
		// upload the file by its absolute path
		file_input.sendKeys(tempHeadFile().getAbsolutePath());
		
		Select selectMetric = new Select
				(driver.findElementByXPath("//*[@id=\"NDCodeUploadForm\"]/select"));
		selectMetric.selectByVisibleText("Head Circumfrence");
		
		WebElement submit_button = driver.findElement(By.xpath("//*[@id=\"import\"]"));
		submit_button.click();
		
		// Current page should contain a message
		WebElement currentPage = driver.findElement(By.id("iTrustContent"));
		// System.out.println(currentPage.getText());
		
		assertEquals("iTrust - Import CDC Percentile Metrics", driver.getTitle());
		assertTrue(currentPage.getText().contains("CDC Metrics updated successfully!"));
	}
	
	public void testCDCImport_BMI() throws Exception {
		HtmlUnitDriver driver = (HtmlUnitDriver)login("9000000001", "pw");
		assertEquals("iTrust - Admin Home", driver.getTitle());
		assertLogged(TransactionType.HOME_VIEW, 9000000001L, 0L, "");
		
		driver.findElement(By.linkText("Upload CDC Percentile Metrics")).click();
		assertEquals("iTrust - Import CDC Percentile Metrics", driver.getTitle());
		
		// input tag is under the form of importCDC 
		WebElement file_input = driver.findElement(By.xpath("//*[@id=\"NDCodeUploadForm\"]/input[1]"));
		
		// upload the file by its absolute path
		file_input.sendKeys(tempBMIFile().getAbsolutePath());
		
		Select selectMetric = new Select
				(driver.findElementByXPath("//*[@id=\"NDCodeUploadForm\"]/select"));
		selectMetric.selectByVisibleText("Body Mass Index");
		
		WebElement submit_button = driver.findElement(By.xpath("//*[@id=\"import\"]"));
		submit_button.click();
		
		// Current page should contain a message
		WebElement currentPage = driver.findElement(By.id("iTrustContent"));
		// System.out.println(currentPage.getText());
		
		assertEquals("iTrust - Import CDC Percentile Metrics", driver.getTitle());
		assertTrue(currentPage.getText().contains("CDC Metrics updated successfully!"));
	}
	
	public void testImportCDC_Height() throws Exception {
		HtmlUnitDriver driver = (HtmlUnitDriver)login("9000000001", "pw");
		assertEquals("iTrust - Admin Home", driver.getTitle());
		assertLogged(TransactionType.HOME_VIEW, 9000000001L, 0L, "");
		
		driver.findElement(By.linkText("Upload CDC Percentile Metrics")).click();
		assertEquals("iTrust - Import CDC Percentile Metrics", driver.getTitle());
		
		// input tag is under the form of importCDC 
		WebElement file_input = driver.findElement(By.xpath("//*[@id=\"NDCodeUploadForm\"]/input[1]"));
		
		// upload the file by its absolute path
		file_input.sendKeys(tempHeightFile().getAbsolutePath());
		
		Select selectMetric = new Select
				(driver.findElementByXPath("//*[@id=\"NDCodeUploadForm\"]/select"));
		selectMetric.selectByVisibleText("Height");
		
		WebElement submit_button = driver.findElement(By.xpath("//*[@id=\"import\"]"));
		submit_button.click();
		
		// Current page should contain a message
		WebElement currentPage = driver.findElement(By.id("iTrustContent"));
		// System.out.println(currentPage.getText());
		
		assertEquals("iTrust - Import CDC Percentile Metrics", driver.getTitle());
		assertTrue(currentPage.getText().contains("CDC Metrics updated successfully!"));
	}
	
	public void testImportCDC_Weight() throws Exception {
		HtmlUnitDriver driver = (HtmlUnitDriver)login("9000000001", "pw");
		assertEquals("iTrust - Admin Home", driver.getTitle());
		assertLogged(TransactionType.HOME_VIEW, 9000000001L, 0L, "");
		
		driver.findElement(By.linkText("Upload CDC Percentile Metrics")).click();
		assertEquals("iTrust - Import CDC Percentile Metrics", driver.getTitle());
		
		// input tag is under the form of importCDC 
		WebElement file_input = driver.findElement(By.xpath("//*[@id=\"NDCodeUploadForm\"]/input[1]"));
		
		// upload the file by its absolute path
		file_input.sendKeys(tempWeightFile().getAbsolutePath());
		
		Select selectMetric = new Select
				(driver.findElementByXPath("//*[@id=\"NDCodeUploadForm\"]/select"));
		selectMetric.selectByVisibleText("Weight");
		
		WebElement submit_button = driver.findElement(By.xpath("//*[@id=\"import\"]"));
		submit_button.click();
		
		// Current page should contain a message
		WebElement currentPage = driver.findElement(By.id("iTrustContent"));
		// System.out.println(currentPage.getText());
		
		assertEquals("iTrust - Import CDC Percentile Metrics", driver.getTitle());
		assertTrue(currentPage.getText().contains("CDC Metrics updated successfully!"));
	}
	
	public void testImportCDC_Dirtyfile() throws Exception {
		HtmlUnitDriver driver = (HtmlUnitDriver)login("9000000001", "pw");
		assertEquals("iTrust - Admin Home", driver.getTitle());
		assertLogged(TransactionType.HOME_VIEW, 9000000001L, 0L, "");
		
		driver.findElement(By.linkText("Upload CDC Percentile Metrics")).click();
		assertEquals("iTrust - Import CDC Percentile Metrics", driver.getTitle());
		
		// input tag is under the form of importCDC 
		WebElement file_input = driver.findElement(By.xpath("//*[@id=\"NDCodeUploadForm\"]/input[1]"));
		
		// upload the file by its absolute path
		file_input.sendKeys(tempDirtyFile().getAbsolutePath());
		
		Select selectMetric = new Select
				(driver.findElementByXPath("//*[@id=\"NDCodeUploadForm\"]/select"));
		selectMetric.selectByVisibleText("Weight");
		
		WebElement submit_button = driver.findElement(By.xpath("//*[@id=\"import\"]"));
		submit_button.click();
		
		// Current page should contain a message
		WebElement currentPage = driver.findElement(By.id("iTrustContent"));
		// System.out.println(currentPage.getText());
		
		assertEquals("iTrust - Import CDC Percentile Metrics", driver.getTitle());
		assertTrue(currentPage.getText().contains("Please make sure the file you are submitting is formatted as per the CDC's instructions!"));
	}
	
	//test file for weight
	private File tempWeightFile() throws IOException {
		File f = File.createTempFile("weightcodes", null);
		FileWriter fw = new FileWriter(f);
		fw.write(
				"Sex,Agemos,L,M,S,P3,P5,P10,P25,P50,P75,P90,P95,P97\n" +
				"1,0,90.989747,3.530203168,0.152385273,2.355450986,2.52690402,2.773801848,3.150611082,3.530203168,3.879076559,4.17249339,4.34029274,4.446488308\n" +
				"1,0.5,1.547523128,4.003106424,0.146025021,2.799548641,2.964655655,3.209510017,3.597395573,4.003106424,4.387422565,4.718161283,4.910130108,5.032624982\n" +
				"1,1.5,1.068795548,4.879525083,0.136478767,3.614688072,3.774848862,4.020561446,4.428872952,4.879525083,5.327327567,5.728152752,5.967101615,6.121929103\n" +
				"1,2.5,0.695973505,5.672888765,0.129677511,4.34234145,4.503255345,4.754479354,5.183377547,5.672888765,6.175598158,6.638979132,6.921119162,7.106250132\n" +
				"1,3.5,0.41981509,6.391391982,0.124717085,4.992897896,5.157411653,5.416802856,5.866806254,6.391391982,6.942217106,7.460702368,7.781401145,7.993878049\n" 
				);
		fw.flush();
		fw.close();
		return f;
	}
	
	//test file for height
	private File tempHeightFile() throws IOException {
		File f = File.createTempFile("heightcodes", null);
		FileWriter fw = new FileWriter(f);
		fw.write(
				"Sex,Agemos,L,M,S,P3,P5,P10,P25,P50,P75,P90,P95,P97\n" +
				"1,0,9.989747,3.530203168,0.152385273,2.355450986,2.52690402,2.773801848,3.150611082,3.530203168,3.879076559,4.17249339,4.34029274,4.446488308\n" +
				"1,0.5,1.547523128,4.003106424,0.146025021,2.799548641,2.964655655,3.209510017,3.597395573,4.003106424,4.387422565,4.718161283,4.910130108,5.032624982\n" +
				"1,1.5,1.068795548,4.879525083,0.136478767,3.614688072,3.774848862,4.020561446,4.428872952,4.879525083,5.327327567,5.728152752,5.967101615,6.121929103\n" +
				"1,2.5,0.695973505,5.672888765,0.129677511,4.34234145,4.503255345,4.754479354,5.183377547,5.672888765,6.175598158,6.638979132,6.921119162,7.106250132\n" +
				"1,3.5,0.41981509,6.391391982,0.124717085,4.992897896,5.157411653,5.416802856,5.866806254,6.391391982,6.942217106,7.460702368,7.781401145,7.993878049\n" 
				);
		fw.flush();
		fw.close();
		return f;
	}
	
	private File tempHeadFile() throws IOException {
		File f = File.createTempFile("heightcodes", null);
		FileWriter fw = new FileWriter(f);
		fw.write(
				"Sex,Agemos,L,M,S,P3,P5,P10,P25,P50,P75,P90,P95,P97\n" +
				"1,0,1.989747,3.530203168,0.152385273,2.355450986,2.52690402,2.773801848,3.150611082,3.530203168,3.879076559,4.17249339,4.34029274,4.446488308\n" +
				"1,0.5,1.547523128,4.003106424,0.146025021,2.799548641,2.964655655,3.209510017,3.597395573,4.003106424,4.387422565,4.718161283,4.910130108,5.032624982\n" +
				"1,1.5,1.068795548,4.879525083,0.136478767,3.614688072,3.774848862,4.020561446,4.428872952,4.879525083,5.327327567,5.728152752,5.967101615,6.121929103\n" +
				"1,2.5,0.695973505,5.672888765,0.129677511,4.34234145,4.503255345,4.754479354,5.183377547,5.672888765,6.175598158,6.638979132,6.921119162,7.106250132\n" +
				"1,3.5,0.41981509,6.391391982,0.124717085,4.992897896,5.157411653,5.416802856,5.866806254,6.391391982,6.942217106,7.460702368,7.781401145,7.993878049\n" 
				);
		fw.flush();
		fw.close();
		return f;
	}
	
	private File tempBMIFile() throws IOException {
		File f = File.createTempFile("heightcodes", null);
		FileWriter fw = new FileWriter(f);
		fw.write(
				"Sex,Agemos,L,M,S,P3,P5,P10,P25,P50,P75,P90,P95,P97\n" +
				"1,0,920.989747,3.530203168,0.152385273,2.355450986,2.52690402,2.773801848,3.150611082,3.530203168,3.879076559,4.17249339,4.34029274,4.446488308\n" +
				"1,0.5,1.547523128,4.003106424,0.146025021,2.799548641,2.964655655,3.209510017,3.597395573,4.003106424,4.387422565,4.718161283,4.910130108,5.032624982\n" +
				"1,1.5,1.068795548,4.879525083,0.136478767,3.614688072,3.774848862,4.020561446,4.428872952,4.879525083,5.327327567,5.728152752,5.967101615,6.121929103\n" +
				"1,2.5,0.695973505,5.672888765,0.129677511,4.34234145,4.503255345,4.754479354,5.183377547,5.672888765,6.175598158,6.638979132,6.921119162,7.106250132\n" +
				"1,3.5,0.41981509,6.391391982,0.124717085,4.992897896,5.157411653,5.416802856,5.866806254,6.391391982,6.942217106,7.460702368,7.781401145,7.993878049\n" 
				);
		fw.flush();
		fw.close();
		return f;
	}
	
	//dirty file to test the return on bad file formats.
	private File tempDirtyFile() throws IOException {
		File f = File.createTempFile("heightcodes", null);
		FileWriter fw = new FileWriter(f);
		fw.write(
				"TNG WAS BETTER THAN DS9"
				);
		fw.flush();
		fw.close();
		return f;
	}
}