Advertisement
zhytnytskyi

AtomicTests_TodoMVC

Mar 25th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.75 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.Assert;
  6. import org.junit.Before;
  7. import org.junit.Test;
  8.  
  9.  
  10. import static com.codeborne.selenide.CollectionCondition.exactTexts;
  11. import static com.codeborne.selenide.Condition.*;
  12. import static com.codeborne.selenide.Selenide.*;
  13.  
  14. public class TodoMvcTest extends BaseTest {
  15.  
  16.     @Before
  17.     public void setUp() {
  18.         open("/");
  19.         clearCompletedButton.waitUntil(exist,1000L);
  20.     }
  21.  
  22.     @After
  23.     public void tearDown() {
  24.         Selenide.executeJavaScript("localStorage.clear()");
  25.     }
  26.  
  27.     @Test
  28.     public void testAddingTasks() {
  29.         add("a", "b", "c");
  30.         assertActiveTasks("a", "b", "c");
  31.     }
  32.  
  33.     @Test
  34.     public void testDeletingTask() {
  35.         add("a", "b", "c");
  36.         delete("c");
  37.         assertActiveTasks("a", "b");
  38.     }
  39.  
  40.     @Test
  41.     public void testEditingTask() {
  42.         add("a", "b", "c");
  43.         edit("a", "a edited");
  44.         assertActiveTasks("a edited", "b", "c");
  45.     }
  46.  
  47.     @Test
  48.     public void testDiscardedEditing() {
  49.         add("a", "b", "c");
  50.         discardEdit("a", "a to be discarded");
  51.         assertActiveTasks("a", "b", "c");
  52.     }
  53.  
  54.     @Test
  55.     public void testTogglingTask() {
  56.         add("a", "b", "c");
  57.         toggle("a");
  58.         assertCompletedTasks("a");
  59.     }
  60.  
  61.     @Test
  62.     public void testClearCompletedButton() {
  63.         add("a", "b", "c");
  64.         toggle("a");
  65.         clearCompleted();
  66.         assertActiveTasks("b", "c");
  67.     }
  68.  
  69.     @Test
  70.     public void testToggleAllButton() {
  71.         add("a", "b", "c");
  72.         toggleAll();
  73.         assertCompletedTasks("a", "b", "c");
  74.     }
  75.  
  76.     @Test
  77.     public void testItemsLeftCounter() {
  78.         add("a", "b", "c");
  79.         Assert.assertEquals("3", getItemsLeftCounter());
  80.         toggle("a");
  81.         Assert.assertEquals("2", getItemsLeftCounter());
  82.     }
  83.  
  84.     @Test
  85.     public void testThatClearCompletedButtonAppearsOnlyWithCompletedTasks() {
  86.         add("a", "b", "c");
  87.         Assert.assertFalse(isClearCompletedButtonDisplayed());
  88.         toggle("a");
  89.         Assert.assertTrue(isClearCompletedButtonDisplayed());
  90.     }
  91.  
  92.     @Test
  93.     public void testTasksFilters() {
  94.         add("a", "b", "c", "d");
  95.         toggle("b");
  96.  
  97.         applyActiveFilter();
  98.         assertDisplayedTasks("a", "", "c", "d");
  99.  
  100.         applyCompleteFilter();
  101.         assertDisplayedTasks("", "b", "", "");
  102.  
  103.         applyAllFilter();
  104.         assertDisplayedTasks("a", "b", "c", "d");
  105.     }
  106.  
  107.     private static final ElementsCollection tasks = $$("#todo-list>li");
  108.     private static final SelenideElement itemsLeftCounter = $("#todo-count>strong");
  109.     private static final SelenideElement clearCompletedButton = $("#clear-completed");
  110.  
  111.     private void assertDisplayedTasks(String... taskNames) {
  112.         tasks.shouldHave(exactTexts(taskNames));
  113.     }
  114.  
  115.     private void applyActiveFilter() {
  116.         $("[href$='active']").click();
  117.     }
  118.  
  119.     private void applyCompleteFilter() {
  120.         $("[href$='completed']").click();
  121.     }
  122.  
  123.     private void applyAllFilter() {
  124.         $("[href$='#/']").click();
  125.     }
  126.  
  127.     private void add(String... taskNames) {
  128.         for (String task: taskNames) {
  129.             $("#new-todo").setValue(task).pressEnter();
  130.         }
  131.     }
  132.  
  133.     private void edit(String oldTaskName, String newTaskName) {
  134.         startEdit(oldTaskName, newTaskName).pressEnter();
  135.     }
  136.  
  137.     private boolean isClearCompletedButtonDisplayed() {
  138.         return clearCompletedButton.isDisplayed();
  139.     }
  140.  
  141.     private void discardEdit(String oldTaskName, String newTaskName) {
  142.         startEdit(oldTaskName, newTaskName).pressEscape();
  143.     }
  144.  
  145.     private void toggle(String taskName) {
  146.         tasks.findBy(exactText(taskName)).find(".toggle").click();
  147.     }
  148.  
  149.     private void toggleAll() {
  150.         $("#toggle-all").click();
  151.     }
  152.  
  153.     private void clearCompleted() {
  154.         clearCompletedButton.click();
  155.     }
  156.  
  157.     private String getItemsLeftCounter() {
  158.         return itemsLeftCounter.text();
  159.     }
  160.  
  161.     private void delete(String taskName) {
  162.         tasks.findBy(exactText(taskName)).hover().find(".destroy").click();
  163.     }
  164.  
  165.     private static void assertActiveTasks(String... taskNames) {
  166.         tasks.filterBy(cssClass("active")).shouldHave(exactTexts(taskNames));
  167.     }
  168.  
  169.     private static void assertCompletedTasks(String... taskNames) {
  170.         tasks.filterBy(cssClass("completed")).shouldHave(exactTexts(taskNames));
  171.     }
  172.  
  173.     private SelenideElement startEdit(String oldTaskName, String newTaskName) {
  174.         tasks.findBy(exactText(oldTaskName)).doubleClick();
  175.         return tasks.findBy(cssClass("editing")).find(".edit").setValue(newTaskName);
  176.     }
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement