Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class firstSelenideTest {
- /*
- в имена тест-классов - не надо включать структурную информацию
- первый/второрой/на чем написанный/какая попытка и прочеее
- это лучше отражать в имени пекеджа
- а имя тест-класса - должно описывать - что мы тестируем
- а мы тестируем - todoMVC
- почитай FAQ - раздел по неймингу
- и переименуй и тест-класс, и тест-метод
- https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit#bookmark=kix.j1paet9x2zve
- */
- @Test
- public void testCreateTask() {
- /*
- мы тестируем не только создание таски
- но и несколько других операций
- если их перечислить в имени - будет длинно и не наглядно
- для таких случаев - применяй вот такой совет
- https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit#bookmark=id.txqig9rkgybo
- */
- //1 create task1, 2 create task2, 3 create task3, 4 create task4
- /*
- достаточно комментария create
- ведь остальное - вполне понятно из кода
- а в следующих версиях - мы и от этого комментария избавимся)
- старайся не использовать лишних комментариев
- и если уж они нужны - то пиши в них только нужное - чего из кода нельзя понять
- например - номера шагов, или уточнения аж до текста таски
- это правило сбережет тебе силы - когда код придется менять
- ведь при этом - и все комментарии придется менять
- и это легко пропустить - потому код по максимуму должен пояснять сам себя
- этот навык весь курс будем оттачивать
- учти это и для других комментариев в коде
- */
- open("https://todomvc4tasj.herokuapp.com/#/");
- /*
- используй пропуск строки для деления кода на блоки
- каждый блок - своя законченная мысль
- open - стоит отделить от создания тасок
- и комментарий create - стоит располагать непосредственно перед добавлением тасок
- */
- $("#new-todo").setValue("do something_1").pressEnter();
- $("#new-todo").setValue("do something_2").pressEnter();
- $("#new-todo").setValue("do something_3").pressEnter();
- $("#new-todo").setValue("do something_4").pressEnter();
- $$("#todo-list li").shouldHave(size(4));
- $$("#todo-list li").shouldHave(exactTexts("do something_1","do something_2", "do something_3", "do something_4"));
- /*
- нам достаточно проверки shouldHave(exactTexts(...))
- как осуществяется проверка по кондишену exactTexts
- сверяется количество, порядок и тексты
- количество элементов коллекции должно быть равно количеству переданных текстов
- иначе - проверка не прошла
- и далее - по порядку сверяются текст элемента и переданный текст
- нулевой - с нулевым
- первый с первым
- и т д
- таким образом - уже не нужно проверять размер списка
- раз уже проверили exactTexts
- */
- //5 delete task2
- $("li[data-index='1']").hover();
- $("li[data-index='1'] button.destroy").click();
- $$("#todo-list li").shouldHave(size(3));
- /*
- button.destroy или .destroy - оба варианта точно идентифицируют кнопку удаления
- только второй вариант - помимо наглядности, еще и более лаконичный
- я считаю - вариант .destroy - предпочтительнее
- и далее - есть похожие ситуации, там тоже это учти
- проверки размера списка тасок - недостаточно
- ведь количество тасок может быть верным
- но будут проблемы с их текстами
- ты хороший вариант селектора использовала для работы со списком тасок
- "#todo-list li"
- и теперь - везде - где нужно работать с чем-то из списка тасок - оттолкнись от "#todo-list li"
- и дополни этот селектор необходимыми уточнениями
- но вот это начало - "#todo-list li" - не меняй
- когда доступаемся до таски из списка - начни с "#todo-list li"
- и далее - уточняйся
- уже сейчас это даст бОльшую однозначность и наглядность - проще будет сориентироваться -
- с чем мы работаем
- а дальше - после второго видео - мы сможем по максимуму бонусы получить от такого подхода
- по использованию [data-index='1']
- не лучший вариант
- попробуй добавить 3 таски, удалить среднюю, и снова добавить новую
- в общем случае - работа с [data-index=...] - заставит глубще и дольше задумываться над логиков кода
- можно написать проще
- воспользуйся советами из http://www.w3schools.com/cssref/css_selectors.asp
- это тоже учти и в дальнейшем коде
- */
- //6 mark task4 as completed
- $("ul#todo-list *:nth-of-type(2) input.toggle").setSelected(true);
- $("ul#todo-list *:nth-of-type(2) input.toggle").shouldBe(selected);
- /*
- насчет setSelected(true)
- как он работает
- выполняется проверка - сключен ли переключатель, и если не включен - то выполняется клик
- нам на самом деле - достаточно клика на элементе
- даже больше скажу - имено так и стоит реализовывать
- т к заодно мы проверим - если кликнуть на чекбоксе .toggle таски, которую только добавили -
- то она именно закомплитится
- более интеллектуальный setSelected - нам такого не даст
- что касается проверки
- правильнее, если проверка касается не одной таски, с которой мы работали
- а всего списка
- т к могло быть так - мы работали с одной таской, а проблемы возникли с другой
- на самом деле - про эту проверку мы еще не раз будем говорить)
- пока - для первой версии - определись - что отличает закомпличеные таски
- получи коллекцию - закомпличеные таски
- и реализуй для них - проверку поточнее
- получится - что ты проверишь состояние всех закомпличеных тасок в списке
- этого достаточно - с учетом следующей проверки после clear-completed
- */
- **************************************
- //8 mark all as completed
- $("#toggle-all").setSelected(true);
- $("#toggle-all").shouldBe(selected);
- /*
- а вот состояние чекбокса #toggle-all - на самом деле - мелочи
- гораздо важнее - в каком состоянии сами таски в списке
- именно это и стоит проверять - важное и относящееся к логике работы приложения
- тоже этой темы еще коснемся)
- */
- ********************************************
- //9 clear completed
- $("#clear-completed").click();
- $("#new-todo").shouldBe(visible);
- /*
- Последняя проверка - странная)
- мы проверили - что поле для добавления нвой таски - видимо
- а что нам такая проверка дает?
- и как это проверяет выполненную операцию?
- мы работали со списком тасок
- и после clear completed - в списке не осталось ни одной таски
- это - важно
- и это надо проверить
- а видимость поля #new-todo - точно не стоит проверять тут
- на самом деле - этот факт - что когда чписок тасок пуст - поле для ввода новой таски видимо - мы уже проверили)
- когда в начале теста - таски добавляли
- а тут - работали со списком тасок - значит и проверить нужно его же
- */
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment