Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class TodoMVCTest {
- TodoMVCPage tasks = new TodoMVCPage();
- @Test
- public void testTasksLifeCycle() {
- open("https://todomvc4tasj.herokuapp.com/");
- //- "All" filter operations. "items left assertCounter" used in each action for verification that action was done correctly
- //- "create", "edit" and "items left assertCounter"
- /*
- не надо использовать комментарии там - где они не нужны вообще
- дальше из кода и так ясно - что мы делаем
- такие комментарии - только загромождают код
- пользы от них - маловато)
- */
- tasks.add("t1");
- tasks.edit("t1", "t1_renamed");
- /*
- вот это хорошо
- проверил операцию add
- использовав следующее действие edit
- */
- tasks.assertCounter(1);
- /*
- assertItemsLeft - было бы лучше
- т к эти термины используются на UI -
- т е мы не вводим никаких новых терминов
- а используем самый наглядный вариант
- чтобы переименовать метод/класспеременную/параметр
- https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#heading=h.vwuqi54t6fyg
- */
- //- "delete"
- tasks.delete("t1_renamed");
- /*
- из кода и так ясно - что удаляем таску
- не нужно тут комментариев
- и delete - отлично справляется с неявной проверкой edit
- только вот это очень не экономно)
- лучше уже под финиш удали таску
- так ты на одной таске больше всяких операций проведешь
- и меньше тасок придется создавать
- */
- tasks.assertTasksEmpty();
- /*
- верно, а тут проверка - была нужна
- добавление таски никак не проверит удаления предыдущей
- */
- //- "complete"
- tasks.add("t2");
- tasks.toggle("t2");
- /*
- хорошая идея - покрыть тут complete
- если уберешь delete
- то сможешь закомплитить таску t1_renamed
- те - еще и сєкономишь на добавлении таски
- про стиль комментариев
- сравни
- //- "complete"
- //complete
- я предпочту более лаконичный вариант
- меньше читать и меньше писать)
- тут и правда - комментарий полезен
- чтобы не размышлять - что в этот раз делает toggle
- только стоит такой комментарий добавлять уже непосредственно перед toggle
- перед add - рано, может путать
- */
- tasks.assertCounter(0);
- /*
- писала в прошлый раз
- assertItemsLeft - в рамках этого тест-метода покрываем единожды
- мы уже ранее покрыли его
- а использовать assertItemsLeft как проверку закомпличености -
- мы еще не скоро сможем)
- */
- //- "activate"
- tasks.toggle("t2");
- tasks.assertCounter(1);
- //- "complete all"
- tasks.toggleAll();
- tasks.assertCounter(0);
- //- "activate all"
- tasks.toggleAll();
- tasks.assertCounter(1);
- //- "clear completed"
- tasks.toggleAll();
- tasks.clearCompleted();
- tasks.assertTasksEmpty();
- /*
- я так поняла - ты собрался покрыть на каждом из фильтров - все юз кейсы
- перечитай прошлое ревью, строки 82-97
- советую остановиться на complete
- после complete - проверим состояние списка тасок и перейдем на Active
- почему именно это - удачный момент, поясню ниже
- у нас задача - покрыть ТОЛЬКО высокоприоритетные действия
- и ТОЛЬКО единожды (а не на каждом контексте)
- с добавлением тасок так не выйдет
- но и столько тасок не понадобится - если думать про эффективность
- и кроме того - мы хотим поравномернее распределить действия по фильтрам
- мы уже на all покрыли
- add
- edit
- complete
- items left
- оставь и для других фильтров что-то)
- */
- //- "Active" filter operations. "items left assertCounter" used in each action for verification that action was done correctly
- //- "create", "edit" and "items left assertCounter"
- /*
- комментарий - лишний
- */
- tasks.add("t1");
- /*
- если в процессе теста надо новые таски добавить -
- добавляй с новыми именами
- не важно - что предыдущей таски "t1" нету
- такой сценарий будет путать
- надо будет думать - а что это за "t1"
- та которую мы добавили тогда-то или тогда-то?
- зачем создавать ребусы? )
- и так достаточно вещей, о которых придется думать
- в случае, если мы остановимся на complete
- перед tasks.add("t1");
- у нас будет в списке закомпличеная таска "t1_renamed"
- для проверки перехода на Active фильтр - ее достаточно
- так что - не торопись добавлять новую таску
- как понадобится - так и добавим
- */
- tasks.switchToActive();
- /*
- верно реализовал метод)
- еще советую изменить название на filterActive
- filter - уже применяется на уровне приложения
- и глагол фильтровать - точнее отражает - что мы делаем
- фильтровать = показывать удовлетворяющее условию и не показывать не удовлетворяющее
- переход на другой фильтр - тоже операция
- и ее тоже надо проверить
- нам нужно, чтобы состояние списка тасок после перехода на другой фильтр
- было правильным - с точки зрения фильтра
- а также - чтобы состояние фильтра изменилось (чтобы быть уверенным - что переход на фильтр - вообще сработал)
- вот тут у нас получится
- было = таска "t1_renamed"
- перешли на эктив
- стало = ни одной видимой таски
- стало = правильное + стало отличается от было
- все, фильтеринг проверен достаточно точно
- да и закомпличивание "t1_renamed" допроверим как раз
- проверив на олле - что тексты списка тасок = "t1_renamed"
- мы проверим кусок логики - что на all таски отображаются вне зависимости от статуса
- и проверив на active - что видимых тасок нет - мы допроверим - что "t1_renamed" была закомпличена
- и вот после этого - уже на active - и добавляй новую таску)
- ведь теперь у нас нету ни одной видимой
- (это если послушался моих советов выше)
- */
- tasks.edit("t1", "t1_renamed");
- tasks.assertCounter(1);
- //- "delete"
- tasks.delete("t1_renamed");
- tasks.assertTasksEmpty();
- /*
- это уже на all покрыто
- тут - не повторяйся
- */
- //- "complete"
- tasks.add("t2");
- tasks.switchToActive();
- tasks.toggle("t2");
- tasks.assertCounter(0);
- /*
- тут ты не подумал)
- ты уже на Active
- зачем тогда switchToActive?
- да и complete уже покрыт на All
- тут на Active разумнее покрыть complete all
- а перед этим - cancel edit
- писала тебе в прошлый раз - что это тоже высокоприоритетное действие
- не забывай про проверки
- пропускаешь)
- */
- //- "complete all"
- /*
- вот ты пишешь такой комментарий
- и далее пассаж с переходами и переоткрытиями
- только запутывает комментарий
- комментируй как complete, complete all, activate
- именно строку с вызовом toggle, toggleAll
- иначе - не понятно - к чему этот комментарий
- */
- tasks.switchToCompleted();
- /*
- проверок - не хватает
- если на active
- добавишь задачу
- отменишь редактирование
- выполнишь complete all
- то к переходу на Completed фильтр - придешь со списком тасок
- в котором нету ни одной видимой таски
- перешел на Completed
- стало = 2 видимые таски
- снова сможем тщательно проверить фильтеринг
- и еще останутся не покрытые операции - с тем чтобы их на Completed
- покрыть
- */
- tasks.toggle("t2");
- /*
- насколько я понимаю - это как раз activate
- вот это стоило прокомментировать
- а и поверить тоже стоило)
- */
- tasks.switchToActive();
- /*
- switchToActive() - ты уже покрыл
- больше не надо
- остался не покрытым переход на all
- если прислушался к советам из комментариев
- то осталось не покрыто -
- переход на all
- clear completed
- delete
- и все)
- учитывай - что на all - мы уже много чего покрыли
- постарайся на Completed фильтре не только activate покрыть
- но и еще что-то
- */
- tasks.assertCounter(1);
- //- "clear completed"
- tasks.toggle("t2");
- tasks.clearCompleted();
- tasks.assertTasksEmpty();
- //- "Completed" filter operations. "items left assertCounter" used in each action for verification that action was done correctly
- //- "delete"
- tasks.add("t1");
- tasks.toggle("t1");
- tasks.switchToCompleted();
- tasks.delete("t1");
- tasks.assertTasksEmpty();
- //- "activate"
- tasks.add("t2");
- tasks.switchToAll();
- tasks.toggle("t2");
- tasks.switchToCompleted();
- tasks.toggle("t2");
- tasks.assertCounter(1);
- tasks.switchToAll();
- //- "activate all"
- tasks.toggle("t2");
- tasks.switchToCompleted();
- tasks.toggleAll();
- tasks.assertCounter(1);
- //- "clear completed"
- tasks.switchToActive();
- tasks.toggle("t2");
- tasks.switchToCompleted();
- tasks.clearCompleted();
- tasks.assertTasksEmpty();
- /*
- весь вот этот "хвост" - даже не буду разбирать
- это все повторения
- почитай в прошлом ревью еще раз информацию
- строки 76-162
- надеюсь, после построчного разбора кода - станет понятнее о чем я
- в пейдж не заглядывала пока даже
- давай решим пока эти вопросы)
- */
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment