Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class TodoMvcTest {
- @Test
- public void testTasksCommonFlow() {
- open("https://todomvc4tasj.herokuapp.com");
- //allTab
- add("1");
- edit("1", "123"); //(oldTask, newTask)
- /*
- хорошо использовал неявные проверки)
- можно уйти от комментариев //(oldTask, newTask) - если тестовые данные использовать как пояснения
- edit("1", "1 edited");
- получишь - что далее текст таски будет нам говорить - что с таской делали
- а тут - будет пояснять - что сейчас делаем
- */
- assertTasks("123");
- toggle("123");
- /*
- перед toggle - можно было не делать проверку assertTasks
- таска у нас по-прежнему единственная в списке
- потому - операцию edit("1", "123")
- хорошо проверит операция toggle("123")
- а вот после toggle("123") - проверка нужна
- тут - просто проверть тексты тасок - assertTasks
- так проверишь кусок логики - на олле - отображаются все таски независимо от статуса
- потом - перешел на другой фильтр и снова проверил тексты тасок
- так проверим - переход на фильтр
- и допроверим - что таки таску закомплитили
- */
- activeTab("Active");
- /*
- про реализацию методов перехода по фильтрам - поговорим ниже)
- */
- assertNoTasks();
- /*
- правильно)
- проверка тут нужна
- и хорошо выбрал тестовую ситуацию для проверки перехода на эктив
- было - таска 123
- перешли
- стало - список пуст
- было и стало - отличаются
- и стало - правильно
- так наиболее точно можно проверить переход на другой фильтр
- а вот если бы было-стало не отличались - тогда
- это было бы не точно
- т к - возможно - фильтеринг вообще не работает в таком случае
- молодец)
- */
- add ("2");
- //edit than cancel
- startEdit("2", "321").pressEscape();
- /*
- вот и тут грамотно неявную проверку заюзал)
- это хорошо)
- от комментариев избавимся тем же способом - сделаем тестовые данные поясняющими
- startEdit("2", "2 edit canceled").pressEscape();
- */
- assertTasks("2");
- toogleAll();
- /*
- обрати внимание - IntelIJ Idea ошибки спеллинга подчеркивает зеленой волнистой линией
- toggle vs toogle
- */
- assertNoTasks();
- activeTab("Completed");
- /*
- все же тут напишу про имя метода)
- читаем - активировать закладку - такую-то
- все бы хорошо - только таски у нас есть в состоянии Active, и закладка одноименная)
- чтоб не путаться - можно приметить термин - фильтровать
- filter = что делать
- по сути - мы это и делаем
- фильтровать = согласно некому условию что-то показывать или прятать
- даже с такой сигнатурой метода сравни
- activeTab("Completed");
- и
- filter("Completed");
- про сигнатуру - ниже)
- */
- assertTasks("123", "2");
- toggle("123");
- /*
- а вот тут бы перед toggle("123") - комментарий //reopen
- был бы весьма кстати
- чтоб не приходилось думать - какой результат у операции
- можно вызовы toggle / toggleAll прокомментировать и выше
- просто выше еще сравнительно несложно было
- а тут - уже поглубже
- уже думать надо)
- следующая операция - не проверяет этот reopen
- а проверка текстов видимых тасок на этом фильтре - отлично и точно переоткрытие таски проверила бы
- */
- clearCompleted();
- /*
- и тут проверки не хватает
- */
- activeTab("All");
- assertTasks("123");
- /*
- ну, насчет этой проверки - смотри сам)
- поскольку таска единственная - можно сказать
- что delete("123"); - проверит то, что она видима
- но - все же фильтеринг - операция не с единственной таской
- и будет точнее - если после перехода на фильтр все же будет явная проверка текстов тасок
- */
- delete("123");
- assertNoTasks();
- }
- /*
- да, это наиболее оптимальный сценарий)
- распределил хорошо по разным фильтрам операции
- активно использовал неявные проверки
- что значительно на пользу нашему сценарию
- многое можно было не комментировать - ведь реализация правильная)
- комменчу важное - что сделал верно с первого раза - на случай,
- если не о всех доводах в пользу такого решения догадывался
- */
- ****************************************
- public SelenideElement startEdit(String oldTask, String newTask) {
- /*
- реализация метода - ок)
- правильно понял - зачем возвращать SelenideElement
- и как это использовать
- круто)
- насчет имен параметров
- да old & new - хороший вариант для обозначения было-стало
- это было-стало для текста таски
- для других методов текст таски - мы называли taskText
- мы придерживаемся правила - используем для одного понятия один термин
- потому - тут имена параметров - oldTaskText & newTaskText
- аналогично и для edit(String oldTask, String newTask)
- */
- *****************************
- public void activeTab(String nameTab) {
- $$("#filters>li").find(exactText(nameTab)).click();
- }
- /*
- вот тут - про сигнатуру метода)
- посмотри в faq - про KISS principle вообще
- https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#
- и про вот этот момент, в частности
- https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#bookmark=id.8bflixemdgfw
- попробуй это применить)
- также не забудь о рекомендациях по неймингу - см выше
- */
- *******************************
- private void assertTasks(String... taskText) {
- tasks.filter(visible).shouldHave(exactTexts(taskText));
- }
- private void assertNoTasks() {
- tasks.filter(visible).shouldHave(empty);
- }
- /*
- да, это наиболее эффективный набор методов для проверки списка тасок
- посмотри вот это видео - про то, какие есть варианты
- https://drive.google.com/file/d/0B8hgIBw8-V-AdGxxU1R3enl1RzQ/view?usp=sharing
- твой вариант - ок
- */
Advertisement
Add Comment
Please, Sign In to add comment