Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class TodoMVCTest {
- public void testCreateTasks () {
- open("https://todomvc4tasj.herokuapp.com/");
- $("#new-todo").setValue("Task1").pressEnter();
- $("#new-todo").setValue("Task2").pressEnter();
- $("#new-todo").setValue("Task3").pressEnter();
- $("#new-todo").setValue("Task4").pressEnter();
- $$("#todo-list li").shouldHaveSize(4);
- }
- /*
- сразу рекомендую как источник информации - https://selenide.gitbooks.io/user-guide/content/ru/
- не торопись разбивать код на методы
- в следующем видео, которое мы откроем после того
- как реализуем первую версию этого задания - будет про это
- пока не торопись)
- пусть все дейстивя будут реализованы в тест-методе
- используй стандартное форматирование кода
- так он легче воспринимается
- в IntelIJ Idea
- выдели код
- в меню(верхнем) - выбери пункт - Code->Reformat code
- советую завести привычку - в конце работы - обязательно форматировать код
- вероятнее всего, ты будешь работать в команде, и твой код будут смотреть другие специалисты
- им проще смотреть на стандартно отформатированный код (как правило)
- иногда у команды есть свои правила форматирования, которые чуть отличатся от стандартных.
- Если все сделано по уму, то у всех членов команды в IntelIJ Idea именно так и настроено форматирование кода.
- Т е - все равно - привычка реформатировать код - нужна
- https://www.jetbrains.com/help/idea/2016.3/reformatting-source-code.html
- $$("#todo-list li").shouldHaveSize(4); - недостаточно точная проверка
- тасок в списке может быть 4
- но - они могут идти или не в том порядке, или быть не с теми текстами
- есть лучший способ проверить состояние коллекции $$("#todo-list li") - с помощью кондишена exactTexts
- нам достаточно проверки shouldHave(exactTexts("t1", "t2", "t3", "t4"))
- как осуществяется проверка по кондишену exactTexts
- сверяется количество, порядок и тексты
- количество элементов коллекции должно быть равно количеству переданных текстов
- иначе - проверка не прошла
- и далее - по порядку сверяются текст элемента и переданный текст
- нулевой - с нулевым
- первый с первым
- и т д
- таким образом - уже не нужно проверять размер списка
- раз уже проверили exactTexts
- */
- public void testDeleteTask() {
- $$(".view").findBy(Condition.exactText("Task2")).click();
- $$(".view").findBy(Condition.exactText("Task2")).$(".destroy").click();
- $$("#todo-list li").shouldHave(CollectionCondition.exactTexts("Task1", "Task3", "Task4"));
- /*
- $$(".view").findBy(Condition.exactText("Task2")) - что мы таким образом получили
- мы получили таску из списка тасок, с таким-то текстом
- мы уже ранее для списка тасок применяли $$("#todo-list li")
- и далее - будем этот же метод использовать
- если нам нужно обратиться к той же коллекции - используй один и тот же метод
- дальше - будет понятнее - какие выгоды мы получим
- но уже и сейчас ясно - что чем меньше селекторов - тем с меньшим их количеством придется разбираться
- а это - плюс)
- $$("#todo-list li").findBy(Condition.exactText("Task2")) - так мы тоже получим таску из коллекции тасок - по ее тексту
- но - так избежим использования еще одного селектора для коллекции тасок
- советую использовать import static для Condition.exactText
- тогда код получится лаконичнее - $$("#todo-list li").findBy(exactText("Task2"))
- и при этом - наглядности он те потеряет
- касается использования всех кондишенов
- кликать на таске перед ее удалением - не нужно
- попробуй вручную это проделать
- кнопка удаления таски - станет видимой после того
- как ты наведешь курсор мыши на таску
- это можно достичь - вызвав не метод click(), а метод hover()
- */
- }
- public void testCompleteTask() {
- $$("#todo-list li").findBy(Condition.exactText("Task4")).$(".toggle").click();
- $(By.linkText("Active")).click();
- /*
- понимаю, зачем реализовала переход на другой фильтр)
- но - пока не отходи от того сценария, который описан в задании
- не нужно в этом задании реализовывать переходы по фильтрам
- как проверить - что таска закомпличена
- будем говорить про это еще, во втором видео
- можно просле закомпличивания таски - отложить проверку
- и делать ее уже после clear completed
- */
- $$("#todo-list li").filterBy(Condition.visible).shouldHave(CollectionCondition.size(2));
- $(By.linkText("Completed")).click();
- $$("#todo-list li").filterBy(Condition.visible).shouldHave(CollectionCondition.exactTexts("Task4"));
- }
- public void testClearCompleted () {
- $(By.linkText("Completed")).click();
- $("#clear-completed").click();
- $$("#todo-list li").filterBy(Condition.visible).isEmpty();
- /*
- работай на all фильтре
- не отходи от сценария, описанного в задании
- */
- }
- public void testCompleteAll () {
- $(By.linkText("Active")).click();
- while ($$("#todo-list li").filterBy(Condition.visible).size()>0) {
- $$("#todo-list li" ).findBy(Condition.cssClass ("active")).$(".toggle").click();
- $(By.linkText("Active")).click();}
- $(By.linkText("Completed")).click();
- $$("#todo-list li").filterBy(Condition.visible).shouldHave(CollectionCondition.sizeGreaterThan(0));
- /*
- имелось в виду вот такое действие - кликнуть на чекбоксе - http://joxi.ru/DrlQ5oLhv04xkm
- при этом - все таски в списке будут закомпличены
- */
- }
- public void testAllisempty (){
- $$("#todo-list li").isEmpty();
- /*
- такой код - $$("#todo-list li").isEmpty();
- просто вернет true or false
- а нам нужна проверка
- которая в случае того, если это не так -
- вызовет падение теста
- используй метод shouldBe / shouldHave для коллекции
- указав в качестве параметра - верный для этого случая кондишен
- */
- }
- @Test
- public void testCase1 () {
- /*
- почитай по неймингу - раздел в faq
- и прими решение - как лучше назвать тест-метод
- https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit#heading=h.2zj10n877t2p
- пока - не спеши реализовывать вспомогательные методы
- это все будет
- но позже)
- */
- testCreateTasks();
- testDeleteTask();
- testCompleteTask();
- testClearCompleted();
- testCompleteAll();
- testClearCompleted();
- testAllisempty();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement