Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ua.net.azhytnytskyi.housework;
- import com.codeborne.selenide.*;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- import static com.codeborne.selenide.CollectionCondition.exactTexts;
- import static com.codeborne.selenide.Condition.cssClass;
- import static com.codeborne.selenide.Condition.exactText;
- import static com.codeborne.selenide.Selenide.$;
- import static com.codeborne.selenide.Selenide.$$;
- import static com.codeborne.selenide.Selenide.open;
- public class TodoMvcTest extends BaseTest {
- @Before
- public void setUp(){
- open("/");
- Selenide.sleep(1000);
- }
- @After
- public void tearDown(){
- Selenide.executeJavaScript("localStorage.clear()");
- }
- @Test
- public void testBasicTaskManagementFlow() {
- add("a", "b", "c", "d");
- assertActiveTasks("a", "b", "c", "d");
- edit("a", "a edited");
- toggle("a edited");
- toggle("b");
- clearCompleted();
- assertActiveTasks("c", "d");
- discardEdit("c", "to be discarded");
- delete("c");
- assertActiveTasks("d");
- }
- @Test
- public void testTasksFilters(){
- // Assert that 3 tasks have been added
- add("a", "b", "c");
- assertActiveTasks("a", "b", "c");
- // Toggle specific task as completed and validate that it has been moved to completed status
- toggle("b");
- assertCompletedTasks("b");
- // Open Active filter tab and ensure that the previously deleted task is not present here
- applyFilter("Active");
- assertActiveTasks("a", "c");
- // Open Completed filter tab and toggle completed task to active
- applyFilter("Completed");
- toggle("b");
- // Check that all tasks have active status
- applyFilter("All");
- assertActiveTasks("a","b","c");
- // Toggle all tasks anc check if they have been switched to completed status
- toggleAll();
- assertCompletedTasks("a","b","c");
- }
- private static final String tasksPattern = "#todo-list>li%s";
- private static final ElementsCollection tasks = $$("#todo-list>li");
- private static final ElementsCollection filters = $$("#filters>li");
- private void applyFilter(String filter){
- filters.findBy(exactText(filter)).click();
- }
- private void add(String... taskNames) {
- for (String task : taskNames) {
- $("#new-todo").setValue(task).pressEnter();
- }
- }
- private void edit(String oldTaskName, String newTaskName) {
- startEdit(oldTaskName, newTaskName).pressEnter();
- }
- private void discardEdit(String oldTaskName, String newTaskName) {
- startEdit(oldTaskName, newTaskName).pressEscape();
- }
- private void toggle(String taskName) {
- tasks.findBy(exactText(taskName)).find(".toggle").click();
- }
- private void toggleAll(){
- $("#toggle-all").click();
- }
- private void clearCompleted() {
- $("#clear-completed").click();
- }
- private void delete(String taskName) {
- tasks.findBy(exactText(taskName)).hover().find(".destroy").click();
- }
- private static void assertActiveTasks(String... taskNames) {
- $$(String.format(tasksPattern, ".active")).shouldHave(exactTexts(taskNames));
- }
- private static void assertCompletedTasks(String... taskNames) {
- $$(String.format(tasksPattern, ".completed")).shouldHave(exactTexts(taskNames));
- }
- private SelenideElement startEdit(String oldTaskName, String newTaskName) {
- tasks.findBy(exactText(oldTaskName)).doubleClick();
- return tasks.findBy(cssClass("editing")).find(".edit").setValue(newTaskName);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement