// Path: src/test/java/org/springside/examples/quickstart/data/TaskData.java
// public class TaskData {
// 
// 	public static Task randomTask() {
// 		Task task = new Task();
// 		task.setTitle(randomTitle());
// 		User user = new User(1L);
// 		task.setUser(user);
// 		return task;
// 	}
// 
// 	public static String randomTitle() {
// 		return RandomData.randomName("Task");
// 	}
// }
// 
// Path: src/main/java/org/springside/examples/quickstart/entity/Task.java
// @Entity
// @Table(name = "ss_task")
// public class Task extends IdEntity {
// 
// 	private String title;
// 	private String description;
// 	private User user;
// 
// 	// JSR303 BeanValidator的校验规则
// 	@NotBlank
// 	public String getTitle() {
// 		return title;
// 	}
// 
// 	public void setTitle(String title) {
// 		this.title = title;
// 	}
// 
// 	public String getDescription() {
// 		return description;
// 	}
// 
// 	public void setDescription(String description) {
// 		this.description = description;
// 	}
// 
// 	// JPA 基于USER_ID列的多对一关系定义
// 	@ManyToOne
// 	@JoinColumn(name = "user_id")
// 	public User getUser() {
// 		return user;
// 	}
// 
// 	public void setUser(User user) {
// 		this.user = user;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return ToStringBuilder.reflectionToString(this);
// 	}
// }
// 
// Path: src/test/functional/org/springside/examples/quickstart/functional/BaseSeleniumTestCase.java
// public class BaseSeleniumTestCase extends BaseFunctionalTestCase {
// 
// 	protected static Selenium2 s;
// 
// 	// 出错时截屏的规则
// 	@Rule
// 	public TestRule snapshotRule = new SeleniumSnapshotRule(s);
// 
// 	@BeforeClass
// 	public static void initSelenium() throws Exception {
// 		createSeleniumOnce();
// 		loginAsUserIfNecessary();
// 	}
// 
// 	/**
// 	 * 创建Selenium，仅创建一次.
// 	 */
// 	protected static void createSeleniumOnce() throws Exception {
// 		if (s == null) {
// 			// 根据配置创建Selenium driver.
// 			String driverName = propertiesLoader.getProperty("selenium.driver");
// 
// 			WebDriver driver = WebDriverFactory.createDriver(driverName);
// 
// 			s = new Selenium2(driver, baseUrl);
// 			s.setStopAtShutdown();
// 		}
// 	}
// 
// 	/**
// 	 * 登录管理员, 如果用户还没有登录.
// 	 */
// 	protected static void loginAsUserIfNecessary() {
// 		s.open("/task");
// 
// 		if (s.getTitle().contains("登录页")) {
// 			s.type(By.name("username"), "user");
// 			s.type(By.name("password"), "user");
// 			s.check(By.name("rememberMe"));
// 			s.click(By.id("submit_btn"));
// 			s.waitForTitleContains("任务管理");
// 		}
// 	}
// }


import static org.assertj.core.api.Assertions.*;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.springside.examples.quickstart.data.TaskData;
import org.springside.examples.quickstart.entity.Task;
import org.springside.examples.quickstart.functional.BaseSeleniumTestCase;
import org.springside.modules.test.category.Smoke;
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package org.springside.examples.quickstart.functional.gui;



/**
 * 任务管理的功能测试, 测试页面JavaScript及主要用户故事流程.
 * 
 * @author calvin
 */
public class TaskGuiFT extends BaseSeleniumTestCase {

	/**
	 * 浏览任务列表.
	 */
	@Test
	@Category(Smoke.class)
	public void viewTaskList() {
		s.open("/task/");
		WebElement table = s.findElement(By.id("contentTable"));
		assertThat(s.getTable(table, 0, 0)).isEqualTo("Release SpringSide 4.0");
	}

	/**
	 * 创建/更新/搜索/删除任务.
	 */
	@Test
	@Category(Smoke.class)
	public void crudTask() {
		s.open("/task/");

		// create
		s.click(By.linkText("创建任务"));

// Path: src/test/java/org/springside/examples/quickstart/data/TaskData.java
// public class TaskData {
// 
// 	public static Task randomTask() {
// 		Task task = new Task();
// 		task.setTitle(randomTitle());
// 		User user = new User(1L);
// 		task.setUser(user);
// 		return task;
// 	}
// 
// 	public static String randomTitle() {
// 		return RandomData.randomName("Task");
// 	}
// }
// 
// Path: src/main/java/org/springside/examples/quickstart/entity/Task.java
// @Entity
// @Table(name = "ss_task")
// public class Task extends IdEntity {
// 
// 	private String title;
// 	private String description;
// 	private User user;
// 
// 	// JSR303 BeanValidator的校验规则
// 	@NotBlank
// 	public String getTitle() {
// 		return title;
// 	}
// 
// 	public void setTitle(String title) {
// 		this.title = title;
// 	}
// 
// 	public String getDescription() {
// 		return description;
// 	}
// 
// 	public void setDescription(String description) {
// 		this.description = description;
// 	}
// 
// 	// JPA 基于USER_ID列的多对一关系定义
// 	@ManyToOne
// 	@JoinColumn(name = "user_id")
// 	public User getUser() {
// 		return user;
// 	}
// 
// 	public void setUser(User user) {
// 		this.user = user;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return ToStringBuilder.reflectionToString(this);
// 	}
// }
// 
// Path: src/test/functional/org/springside/examples/quickstart/functional/BaseSeleniumTestCase.java
// public class BaseSeleniumTestCase extends BaseFunctionalTestCase {
// 
// 	protected static Selenium2 s;
// 
// 	// 出错时截屏的规则
// 	@Rule
// 	public TestRule snapshotRule = new SeleniumSnapshotRule(s);
// 
// 	@BeforeClass
// 	public static void initSelenium() throws Exception {
// 		createSeleniumOnce();
// 		loginAsUserIfNecessary();
// 	}
// 
// 	/**
// 	 * 创建Selenium，仅创建一次.
// 	 */
// 	protected static void createSeleniumOnce() throws Exception {
// 		if (s == null) {
// 			// 根据配置创建Selenium driver.
// 			String driverName = propertiesLoader.getProperty("selenium.driver");
// 
// 			WebDriver driver = WebDriverFactory.createDriver(driverName);
// 
// 			s = new Selenium2(driver, baseUrl);
// 			s.setStopAtShutdown();
// 		}
// 	}
// 
// 	/**
// 	 * 登录管理员, 如果用户还没有登录.
// 	 */
// 	protected static void loginAsUserIfNecessary() {
// 		s.open("/task");
// 
// 		if (s.getTitle().contains("登录页")) {
// 			s.type(By.name("username"), "user");
// 			s.type(By.name("password"), "user");
// 			s.check(By.name("rememberMe"));
// 			s.click(By.id("submit_btn"));
// 			s.waitForTitleContains("任务管理");
// 		}
// 	}
// }


// Path: src/test/functional/org/springside/examples/quickstart/functional/gui/TaskGuiFT.java
import static org.assertj.core.api.Assertions.*;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.springside.examples.quickstart.data.TaskData;
import org.springside.examples.quickstart.entity.Task;
import org.springside.examples.quickstart.functional.BaseSeleniumTestCase;
import org.springside.modules.test.category.Smoke;

/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package org.springside.examples.quickstart.functional.gui;



/**
 * 任务管理的功能测试, 测试页面JavaScript及主要用户故事流程.
 * 
 * @author calvin
 */
public class TaskGuiFT extends BaseSeleniumTestCase {

	/**
	 * 浏览任务列表.
	 */
	@Test
	@Category(Smoke.class)
	public void viewTaskList() {
		s.open("/task/");
		WebElement table = s.findElement(By.id("contentTable"));
		assertThat(s.getTable(table, 0, 0)).isEqualTo("Release SpringSide 4.0");
	}

	/**
	 * 创建/更新/搜索/删除任务.
	 */
	@Test
	@Category(Smoke.class)
	public void crudTask() {
		s.open("/task/");

		// create
		s.click(By.linkText("创建任务"));

		Task task = TaskData.randomTask();