Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class TodoMVCUseCases {
- /*
- для тест-класса - не самое подходящее имя
- имя тест-класса - должно заканчиваться на Test
- Посмотри раздел о naming в faq
- TodoMVCTest - будет ок
- фраза UseCases - не добавляет никакой полезной информации о тест-классе
- */
- *****************************************************
- @Test
- public void taskWorkFlow(){
- open("https://todomvc4tasj.herokuapp.com/");
- add("task1", "task2", "task3", "task4");
- confirmEdit("task1", "task11");
- /*
- ты знаешь, в предыдущей версии - этот кусок был лучше
- было
- add("task1");
- confirmEdit("task1", "task1 edited");
- я предлагала еще добавить сюда закомпличивание таски
- строки 34-41 прошлого ревью
- в итоге - получили бы
- add("task1");
- confirmEdit("task1", "task1 edited");
- toggle("task1 edited");
- чем было лучше
- было лучше - т к в списке была единственная таска
- и мы могли использовать следующие действия как неявные проверки
- проверка - должна проверять все таски
- следовательно - только если у тебя в списке одна видимая таска - ты можешь эффективно применять
- действие - в качестве проверок предыдущего действия
- в текущей версии - сразу добавлены несколько тасок
- все - мы будем вынуждеы после каждого действия выполнять проверку
- неявные проверку - не наш выбор в таком случае
- вернись к варианту
- add("task1");
- confirmEdit("task1", "task1 edited");
- toggle("task1 edited");
- это и правда один из оптимальных вариантов
- и еще - вариант текста таски после редактирования - "task1 edited"
- тоже лучше, чем в текущей версии
- т к "task1 edited" - поясняет нам далее - что за таска и что с ней уже было
- */
- assertEdited("task11", "task2", "task3", "task4");
- /*
- про имя метода assertEdited - писала
- строки 257-262 прошлого ревью
- */
- cancelEdit("task2", "task21");
- assertEdited("task11", "task2", "task3", "task4");
- toggle("task4");
- /*
- нужна проверка текстов тасок
- да, закомпличивание ты недопроверишь
- это допроверится после перехода на active фильтр
- но - ты проверишь - что вне зависимости от своего статуса - на all таски отобразаются
- и что вообще после закомпличивания - со всеми остальными тасками все ок
- */
- clickFilterActive();
- assertVisibleTasks("task11", "task2", "task3");
- /*
- разумнее тут покрыть cancelEdit
- чтоб разгрузить all фильтр
- писала - что лучше распределить операции по фильтрам - поравномернее
- строки 119-136 прошлого ревью
- */
- toggleAll();
- assertNotVisibleTasks();
- add("task5");
- assertVisibleTasks("task5");
- confirmEdit("task5", "task51");
- /*
- это - уже покрыто на all
- для smoke покрытия - не нужно одну и ту же операцию покрывать на разных фильтрах
- достаточно операцию покрыть лишь единожды
- */
- assertVisibleTasks("task51");
- clickFilterCompleted();
- assertVisibleTasks("task11", "task2", "task3", "task4");
- toggle("task11");
- assertVisibleTasks("task2", "task3", "task4");
- delete("task2");
- /*
- советую это под финиш отложить - тем более - что там ты тоже удаление покрываешь
- */
- assertVisibleTasks("task3", "task4");
- clearCompleted();
- assertNotVisibleTasks();
- /*
- вот да - хорошая идея - на completed фильтре
- одну таску переоткрыть
- вторую - через clearCompleted() удалить
- подсказка - для этого тебе достаточно иметь 2 таски после перехода на completed фильтр)
- */
- clickFilterAll();
- /*
- была бы тут одна таска "task11"
- я могла бы согласиться - что delete("task11") - неявно проверит состояние списка
- но - тут у нас 2 таски
- значит - нужна проверка
- */
- delete("task11");
- assertItemLeft(1);
- /*
- этой проверки недостаточно
- нужна проверка состояния списка тасок
- */
- }
- ******************************************
- /*
- оцениваем покрытие
- All
- add *4 (предлагаю добавить лишь одну - так сможешь использовать неявные проверки)
- confirmEdit
- cancelEdit (предлагаю перенести на Active - для равномерного распределения операций по фильтрам)
- complete
- Active
- complete all
- add (предлагаю сдвинуть на шаг выше - раз мы не создавали лишнего на all)
- confirmEdit (это лишнее - на all уже покрыли, убирай)
- Completed
- activate
- delete (это ниже на all покроем, убирай)
- clearCompleted
- All
- delete
- с выше обозначенными корректировками - будет ок
- */
- ***************************************************
- private void assertTasksAre(String... taskTexts){
- tasks.shouldHave(exactTexts(taskTexts));
- }
- private void assertTasksAreNot(){
- tasks.filter(visible).shouldBe(empty);
- }
- private void assertEmpty(){
- tasks.shouldBe(empty);
- }
- private void assertVisibleTasks(String... taskTexts){
- tasks.filter(visible).shouldHave(exactTexts(taskTexts));
- }
- private void assertNotVisibleTasks(String... taskTexts){
- tasks.filter(visible).shouldBe(empty);
- }
- /*
- ты решила быть точной - и реализовала 6 методов для проверки состояния списка тасок
- зачем 2 метода с одинаковой функциональностью -
- и в assertTasksAreNot и в assertNotVisibleTasks - есть фильтрация по visible?
- достаточно одного
- почему названия методов - не подчинены одной логике построения фраз?
- проверяем Tasks or VisibleTasks
- если assertTasksAre
- то assertVisibleTasksAre
- если assertTasks
- то assertVisibleTasks
- нет тасок = there are no tasks = assertNoTasks or assertNoVisibleTasks
- или - список тасок пуст = tasks are empty = assertTasksAreEmpty or assertVisibleTasksAreEmpty
- мне такой вариант меньше нравится - недостаточно однозначно понимаемый
- в любом случае - фразы строим по одинаковым правилам
- иначе - имена методов будет сложно быстро запомнить или понять
- это важно
- */
- **************************************
- private void assertEdited(String... taskText){
- assertTasksAre(taskText);
- }
- /*
- поищи в прошлом ревью
- писала про этот метод
- он не нужен
- если не согласна - в слеке давай обсудим
- */
- ***************************************
- private void clickFilterAll(){
- private void clickFilterActive(){
- private void clickFilterCompleted(){
- /*
- строки 269-276 прошлого ревью
- не нужно лишних слов в именах
- если есть более лаконичный и настолько же точный вариант - то лучше предпочесть его
- если не согласна - в слеке давай обсудим
- */
- ***********************************************
- private void assertItemLeft(int itemCount){
- /*
- строки 281-285 прошлого ревью
- */
Advertisement
Add Comment
Please, Sign In to add comment