Advertisement
zhytnytskyi

TodoMvcTest(indepentent Tests)

Feb 26th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.74 KB | None | 0 0
  1. package ua.net.azhytnytskyi.housework;
  2.  
  3. import com.codeborne.selenide.*;
  4. import org.junit.After;
  5. import org.junit.Before;
  6. import org.junit.Test;
  7.  
  8. import static com.codeborne.selenide.CollectionCondition.exactTexts;
  9. import static com.codeborne.selenide.Condition.cssClass;
  10. import static com.codeborne.selenide.Condition.exactText;
  11. import static com.codeborne.selenide.Selenide.$;
  12. import static com.codeborne.selenide.Selenide.$$;
  13. import static com.codeborne.selenide.Selenide.open;
  14.  
  15. public class TodoMvcTest extends BaseTest {
  16.  
  17.     @Before
  18.     public void setUp(){
  19.         open("/");
  20.         Selenide.sleep(1000);
  21.     }
  22.  
  23.     @After
  24.     public void tearDown(){
  25.         Selenide.executeJavaScript("localStorage.clear()");
  26.     }
  27.  
  28.     @Test
  29.     public void testBasicTaskManagementFlow() {
  30.  
  31.         add("a", "b", "c", "d");
  32.         assertActiveTasks("a", "b", "c", "d");
  33.  
  34.         edit("a", "a edited");
  35.  
  36.         toggle("a edited");
  37.         toggle("b");
  38.         clearCompleted();
  39.         assertActiveTasks("c", "d");
  40.  
  41.         discardEdit("c", "to be discarded");
  42.  
  43.         delete("c");
  44.         assertActiveTasks("d");
  45.     }
  46.  
  47.     @Test
  48.     public void testTasksFilters(){
  49.  
  50.         // Assert that 3 tasks have been added
  51.         add("a", "b", "c");
  52.         assertActiveTasks("a", "b", "c");
  53.  
  54.         // Toggle specific task as completed and validate that it has been moved to completed status
  55.         toggle("b");
  56.         assertCompletedTasks("b");
  57.  
  58.         // Open Active filter tab and ensure that the previously deleted task is not present here
  59.         applyFilter("Active");
  60.         assertActiveTasks("a", "c");
  61.  
  62.         // Open Completed filter tab and toggle completed task to active
  63.         applyFilter("Completed");
  64.         toggle("b");
  65.  
  66.         // Check that all tasks have active status
  67.         applyFilter("All");
  68.         assertActiveTasks("a","b","c");
  69.  
  70.         // Toggle all tasks anc check if they have been switched to completed status
  71.         toggleAll();
  72.         assertCompletedTasks("a","b","c");
  73.     }
  74.  
  75.     private static final String tasksPattern = "#todo-list>li%s";
  76.     private static final ElementsCollection tasks = $$("#todo-list>li");
  77.     private static final ElementsCollection filters = $$("#filters>li");
  78.  
  79.     private void applyFilter(String filter){
  80.         filters.findBy(exactText(filter)).click();
  81.     }
  82.  
  83.     private void add(String... taskNames) {
  84.         for (String task : taskNames) {
  85.             $("#new-todo").setValue(task).pressEnter();
  86.         }
  87.     }
  88.  
  89.     private void edit(String oldTaskName, String newTaskName) {
  90.         startEdit(oldTaskName, newTaskName).pressEnter();
  91.     }
  92.  
  93.     private void discardEdit(String oldTaskName, String newTaskName) {
  94.         startEdit(oldTaskName, newTaskName).pressEscape();
  95.     }
  96.  
  97.     private void toggle(String taskName) {
  98.         tasks.findBy(exactText(taskName)).find(".toggle").click();
  99.     }
  100.  
  101.     private void toggleAll(){
  102.         $("#toggle-all").click();
  103.     }
  104.  
  105.     private void clearCompleted() {
  106.         $("#clear-completed").click();
  107.     }
  108.  
  109.     private void delete(String taskName) {
  110.         tasks.findBy(exactText(taskName)).hover().find(".destroy").click();
  111.     }
  112.  
  113.     private static void assertActiveTasks(String... taskNames) {
  114.         $$(String.format(tasksPattern, ".active")).shouldHave(exactTexts(taskNames));
  115.     }
  116.  
  117.     private static void assertCompletedTasks(String... taskNames) {
  118.         $$(String.format(tasksPattern, ".completed")).shouldHave(exactTexts(taskNames));
  119.     }
  120.  
  121.     private SelenideElement startEdit(String oldTaskName, String newTaskName) {
  122.         tasks.findBy(exactText(oldTaskName)).doubleClick();
  123.         return tasks.findBy(cssClass("editing")).find(".edit").setValue(newTaskName);
  124.     }
  125.  
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement