Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ToDoMVCTest {
- ElementsCollection task = $$("#todo-list li");
- /*
- будь точнее
- это - список тасОК, а не одна таска
- так что - tasks
- */
- @Test
- public void basicTasksLifeCycle(){
- open("http://todomvc.com/examples/angularjs/#/");
- /*
- вообще в задании говорилось - использовать для теста вот это приложение)
- https://todomvc4tasj.herokuapp.com/
- могут отличаться - используй урл - как в задании
- */
- // create 4 tasks
- /*
- комментарии пишем только в одном случае - если из кода что-то не понятно
- также - формулируем комментарии как можно более лаконично
- если из кода не понятно - какую операцию выполняем - только про операцию пишем, а тествоые данные - не описываем
- если и про тестовые данные не ясно - ну что делать, и это уточним
- теперь - практически все понятно
- нам не нужно пояснять код addTasks("1", "2", "3", "4");
- этот комментарий и практически все остальные - уйдут
- */
- addTasks("1", "2", "3", "4");
- assertTasksAre("1", "2", "3", "4");
- //delete 2nd task
- deleteTask("2");
- assertTasksAre("1", "3", "4");
- //complete & clear task 4
- /*
- вот этот комментарий не уйдет - т к toggle("4") - не совсем понятно - что делаем с таской
- но в то же время понятно - с какой таской работаем
- так что - complete & clear - будет достаточно
- */
- toggle("4");
- clearCompleted();
- assertTasksAre("1", "3");
- //mark all as completed & clear all
- /*
- можно лаконичнее - complete all & clear
- */
- toogleAll();
- clearCompleted();
- task.shouldBe(empty);
- }
- /*
- используй пропуски строк - как инструмент для форматирования кода
- между методами одного класса - не помешала бы пропущенная строка
- почитай https://google.github.io/styleguide/javaguide.html#s4.6.1-vertical-whitespace
- */
- ***************************************************************
- private void toggle(String ... taskToggle){
- for(String text: taskToggle) {
- task.find(Condition.exactText(text)).$(".toggle").click();
- }
- }
- /*
- Для добавления тасок - есть причины реализовать метод так, чтобы можно было добавлять сразу несколько тасок
- Прежде всего потому, что для некоторых тестов вначале нужно создать несколько тасок
- Для остальных действий - точно нету смысла реализовывать метод, работающий с несколькими тасками
- Нам и проверки надо делать надо после каждого выполненного действия
- что касается имен
- метод называется toggle
- верное решение - имя точно отражает то, что мы делаем
- в имени метода мы не указали - что работаем с тасками
- и это ОК - т к только над тасками мы действия и выполняем
- имя параметра
- с чем мы работаем - с текстами тасок (а будем - с текстом таски - т к изменим реализацию)
- вот и примени термин taskText - для понятия текст таски
- и далее - если у нас параметр = текст таски - применяй тот же термин
- про то, что мы будем делать с таской - уже сказали в имени метода,
- и в имени параметра метода про это уже писать не нужно
- придерживайся правила - для одного понятия использовать один термин
- не нужно использовать разные термины/написания/синонимы и прочее
- в таком случае - код будет более точным и более однозначным,
- с ним будет проще работать
- используй import static для Condition.exactText
- и тогда в коде вместо Condition.exactText
- сможешь писать exactText
- */
- ************************************************
- private void toogleAll(){
- /*
- имя точное = точно говорит, что делаем
- имя лаконичное - не пишем, что действие выполняется над тасками
- и это ОК
- с реализацией тоже все ок
- на именах заостряю внимание - т к не для всех методов это так
- */
- ***************************************************
- private void deleteTask(String taskDelete){
- /*
- А тут - уточняешь в имени, что именно таску удаляешь
- Надо быть последовательнее
- или
- add(String ... taskTexts)
- toggle(String taskText)
- delete(String taskText)
- ...
- или
- addTask(String ... texts)
- toggleTask(String text)
- deleteTask(String text)
- ...
- оба ваорианта возможны
- в первом варианте - мы из имени убрали уточнение - что работаем с тасками, но уточнили в имени параметра это
- во втором варианте - мы не убирали из имени это уточнение, но сделали лаконичнее имена параметров
- первый вариант тебе даст более лаконичный код
- и его возможно тут использовать - т к в приложении только над тасками действия и выполняются
- очень важно = это относится только к методам-действиям
- и не касается имен методов-проверок
- т к даже в таком простом приложении - тут надо быть максимально точным
- */
- ********************************
- private void assertTasksAre(String ... tasksAssert){
- $$("#todo-list li").shouldHave(exactTexts(tasksAssert));
- }
- /*
- про переменную tasks - не забывай
- почитай про DRY
- https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#heading=h.lzxge2s5ilgv
- имя параметра - тоже подправь
- и для проверки tasks.shouldBe(empty); - тоже реализуй метод
- чтобы у нас был один подход к реализации проверок
- */
Advertisement
Add Comment
Please, Sign In to add comment