Advertisement
zhytnytskyi

TodoMvcTest(AtomicTests)

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