Advertisement
julia_v_iluhina

Untitled

Jan 22nd, 2017
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.67 KB | None | 0 0
  1. public class TodoMVCTest {
  2.  
  3.  
  4.         public void testCreateTasks () {
  5.             open("https://todomvc4tasj.herokuapp.com/");
  6.             $("#new-todo").setValue("Task1").pressEnter();
  7.             $("#new-todo").setValue("Task2").pressEnter();
  8.             $("#new-todo").setValue("Task3").pressEnter();
  9.             $("#new-todo").setValue("Task4").pressEnter();
  10.             $$("#todo-list li").shouldHaveSize(4);
  11.         }
  12. /*
  13.     сразу рекомендую как источник информации - https://selenide.gitbooks.io/user-guide/content/ru/
  14.  
  15.     не торопись разбивать код на методы
  16.     в следующем видео, которое мы откроем после того
  17.     как реализуем первую версию этого задания - будет про это
  18.  
  19.     пока не торопись)
  20.     пусть все дейстивя будут реализованы в тест-методе
  21.  
  22.     используй стандартное форматирование кода
  23.     так он легче воспринимается
  24.        в IntelIJ Idea
  25.         выдели код
  26.         в меню(верхнем) - выбери пункт  - Code->Reformat code
  27.  
  28.         советую завести привычку - в конце работы - обязательно форматировать код
  29.         вероятнее всего, ты будешь работать в команде, и твой код будут смотреть другие специалисты
  30.         им проще смотреть на стандартно отформатированный код (как правило)
  31.         иногда у команды есть свои правила форматирования, которые чуть отличатся от стандартных.
  32.         Если все сделано по уму, то у всех членов команды в IntelIJ Idea именно так и настроено форматирование кода.
  33.         Т е - все равно - привычка реформатировать код - нужна
  34.  
  35.         https://www.jetbrains.com/help/idea/2016.3/reformatting-source-code.html
  36.  
  37.     $$("#todo-list li").shouldHaveSize(4); - недостаточно точная проверка
  38.     тасок в списке может быть 4
  39.     но - они могут идти или не в том порядке, или быть не с теми текстами
  40.  
  41.     есть лучший способ проверить состояние коллекции $$("#todo-list li") - с помощью кондишена exactTexts
  42.     нам достаточно проверки shouldHave(exactTexts("t1", "t2", "t3", "t4"))
  43.                 как осуществяется проверка по кондишену exactTexts
  44.                 сверяется количество, порядок и тексты
  45.                     количество элементов коллекции должно быть равно количеству переданных текстов
  46.                     иначе - проверка не прошла
  47.                     и далее - по порядку сверяются текст элемента и переданный текст
  48.                     нулевой - с нулевым
  49.                     первый с первым
  50.                     и  т д
  51.                 таким образом - уже не нужно проверять размер списка
  52.                 раз уже проверили  exactTexts
  53.  
  54. */
  55.  
  56.     public  void testDeleteTask() {
  57.         $$(".view").findBy(Condition.exactText("Task2")).click();
  58.         $$(".view").findBy(Condition.exactText("Task2")).$(".destroy").click();
  59.         $$("#todo-list li").shouldHave(CollectionCondition.exactTexts("Task1", "Task3", "Task4"));
  60.         /*
  61.             $$(".view").findBy(Condition.exactText("Task2")) - что мы таким образом получили
  62.             мы получили таску из списка тасок, с таким-то текстом
  63.  
  64.             мы уже ранее для списка тасок применяли $$("#todo-list li")
  65.             и далее - будем этот же метод использовать
  66.  
  67.             если нам нужно обратиться к той же коллекции - используй один и тот же метод
  68.             дальше - будет понятнее - какие выгоды мы получим
  69.  
  70.             но уже и сейчас ясно - что чем меньше селекторов - тем с меньшим их количеством придется разбираться
  71.             а это  - плюс)
  72.  
  73.             $$("#todo-list li").findBy(Condition.exactText("Task2")) - так мы тоже получим таску из коллекции тасок - по ее тексту
  74.             но - так избежим использования еще одного селектора для коллекции тасок
  75.  
  76.             советую использовать import static для Condition.exactText
  77.             тогда код получится лаконичнее - $$("#todo-list li").findBy(exactText("Task2"))
  78.             и при этом - наглядности он те потеряет
  79.             касается использования всех кондишенов
  80.  
  81.             кликать на таске перед ее удалением - не нужно
  82.             попробуй вручную это проделать
  83.             кнопка удаления таски - станет видимой после того
  84.             как ты наведешь курсор мыши на таску
  85.             это можно достичь - вызвав не метод click(), а метод hover()
  86.  
  87.         */
  88.     }
  89.  
  90.     public void testCompleteTask() {
  91.         $$("#todo-list li").findBy(Condition.exactText("Task4")).$(".toggle").click();
  92.         $(By.linkText("Active")).click();
  93.         /*
  94.             понимаю, зачем реализовала переход на другой фильтр)
  95.             но - пока не отходи от того сценария, который описан в задании
  96.  
  97.             не нужно в этом задании реализовывать переходы по фильтрам
  98.  
  99.             как проверить - что таска закомпличена
  100.             будем говорить про это еще, во втором видео
  101.  
  102.             можно просле закомпличивания таски - отложить проверку
  103.             и делать ее уже после clear completed
  104.         */
  105.         $$("#todo-list li").filterBy(Condition.visible).shouldHave(CollectionCondition.size(2));
  106.         $(By.linkText("Completed")).click();
  107.         $$("#todo-list li").filterBy(Condition.visible).shouldHave(CollectionCondition.exactTexts("Task4"));
  108.  
  109.     }
  110.  
  111.      public void testClearCompleted () {
  112.          $(By.linkText("Completed")).click();
  113.          $("#clear-completed").click();
  114.          $$("#todo-list li").filterBy(Condition.visible).isEmpty();
  115.          /*
  116.             работай на all фильтре
  117.             не отходи от сценария, описанного в задании
  118.          */
  119.         }
  120.  
  121.     public void testCompleteAll () {
  122.         $(By.linkText("Active")).click();
  123.         while ($$("#todo-list li").filterBy(Condition.visible).size()>0) {
  124.                $$("#todo-list li" ).findBy(Condition.cssClass ("active")).$(".toggle").click();
  125.                $(By.linkText("Active")).click();}
  126.         $(By.linkText("Completed")).click();
  127.         $$("#todo-list li").filterBy(Condition.visible).shouldHave(CollectionCondition.sizeGreaterThan(0));
  128.  
  129.         /*
  130.             имелось в виду вот такое действие - кликнуть на чекбоксе - http://joxi.ru/DrlQ5oLhv04xkm
  131.             при этом - все таски в списке будут закомпличены
  132.         */
  133.  
  134.     }
  135.         public void testAllisempty (){
  136.                $$("#todo-list li").isEmpty();
  137.                /*
  138.                     такой код - $$("#todo-list li").isEmpty();
  139.                     просто вернет true or false
  140.  
  141.                     а нам нужна проверка
  142.                     которая в случае того, если это не так -
  143.                     вызовет падение теста
  144.  
  145.                     используй метод shouldBe / shouldHave для коллекции
  146.                     указав в качестве параметра - верный для этого случая кондишен
  147.                */
  148.     }
  149.  
  150.     @Test
  151.     public void testCase1 () {
  152.     /*
  153.         почитай по неймингу - раздел в faq
  154.         и прими решение - как лучше назвать тест-метод
  155.         https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit#heading=h.2zj10n877t2p
  156.        
  157.         пока  - не спеши реализовывать вспомогательные методы
  158.         это все будет
  159.         но позже)
  160.     */
  161.         testCreateTasks();
  162.         testDeleteTask();
  163.         testCompleteTask();
  164.         testClearCompleted();
  165.         testCompleteAll();
  166.         testClearCompleted();
  167.         testAllisempty();
  168.     }
  169.  
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement