Advertisement
zhytnytskyi

FiltersTask_TodoMvcTest

Mar 25th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.38 KB | None | 0 0
  1. package ua.net.azhytnytskyi.housework.filterstask;
  2.  
  3. import com.codeborne.selenide.ElementsCollection;
  4. import com.codeborne.selenide.Selenide;
  5. import com.codeborne.selenide.SelenideElement;
  6. import org.junit.After;
  7. import org.junit.Before;
  8. import org.junit.Test;
  9. import ua.net.azhytnytskyi.housework.BaseTest;
  10.  
  11. import static com.codeborne.selenide.CollectionCondition.exactTexts;
  12. import static com.codeborne.selenide.Condition.cssClass;
  13. import static com.codeborne.selenide.Condition.exactText;
  14. import static com.codeborne.selenide.Condition.visible;
  15. import static com.codeborne.selenide.Selenide.*;
  16.  
  17. public class TodoMvcTest extends BaseTest {
  18.  
  19.     @Before
  20.     public void setUp() {
  21.         open("/");
  22.         clearCompletedButton.waitUntil(exist,1000L);
  23.     }
  24.  
  25.     @After
  26.     public void tearDown() {
  27.         Selenide.executeJavaScript("localStorage.clear()");
  28.     }
  29.  
  30.     @Test
  31.     public void testBasicTaskManagementFlow() {
  32.  
  33.         add("a", "b", "c", "d");
  34.         assertActiveTasks("a", "b", "c", "d");
  35.  
  36.         edit("a", "a edited");
  37.  
  38.         toggle("a edited");
  39.         toggle("b");
  40.         clearCompleted();
  41.         assertActiveTasks("c", "d");
  42.  
  43.         discardEdit("c", "to be discarded");
  44.  
  45.         delete("c");
  46.         assertActiveTasks("d");
  47.     }
  48.  
  49.     @Test
  50.     public void testTasksFilters() {
  51.  
  52.         add("a", "b", "c", "d");
  53.         toggle("b");
  54.  
  55.         applyActiveFilter();
  56.         assertDisplayedTasks("a", "c", "d");
  57.  
  58.         applyCompleteFilter();
  59.         assertDisplayedTasks("b");
  60.  
  61.         applyAllFilter();
  62.         assertDisplayedTasks("a", "b", "c", "d");
  63.  
  64.     }
  65.  
  66.     private static final ElementsCollection tasks = $$("#todo-list>li");
  67.  
  68.     private void assertDisplayedTasks(String... taskNames) {
  69.         tasks.filterBy(visible).shouldHave(exactTexts(taskNames));
  70.     }
  71.  
  72.     private void applyActiveFilter() {
  73.         $("[href$='active']").click();
  74.     }
  75.  
  76.     private void applyCompleteFilter() {
  77.         $("[href$='completed']").click();
  78.     }
  79.  
  80.     private void applyAllFilter() {
  81.         $("[href$='#/']").click();
  82.     }
  83.  
  84.     private void add(String... taskNames) {
  85.         for (String task : taskNames) {
  86.             $("#new-todo").setValue(task).pressEnter();
  87.         }
  88.     }
  89.  
  90.     private void edit(String oldTaskName, String newTaskName) {
  91.         startEdit(oldTaskName, newTaskName).pressEnter();
  92.     }
  93.  
  94.  
  95.     private void discardEdit(String oldTaskName, String newTaskName) {
  96.         startEdit(oldTaskName, newTaskName).pressEscape();
  97.     }
  98.  
  99.     private void toggle(String taskName) {
  100.         tasks.findBy(exactText(taskName)).find(".toggle").click();
  101.     }
  102.  
  103.     private void clearCompleted() {
  104.         $("#clear-completed").click();
  105.     }
  106.  
  107.     private void delete(String taskName) {
  108.         tasks.findBy(exactText(taskName)).hover().find(".destroy").click();
  109.     }
  110.  
  111.     private static void assertActiveTasks(String... taskNames) {
  112.         tasks.filterBy(cssClass("active")).shouldHave(exactTexts(taskNames));
  113.     }
  114.  
  115.     private static void assertCompletedTasks(String... taskNames) {
  116.         tasks.filterBy(cssClass("completed")).shouldHave(exactTexts(taskNames));
  117.     }
  118.  
  119.     private SelenideElement startEdit(String oldTaskName, String newTaskName) {
  120.         tasks.findBy(exactText(oldTaskName)).doubleClick();
  121.         return tasks.findBy(cssClass("editing")).find(".edit").setValue(newTaskName);
  122.     }
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement