julia_v_iluhina

Untitled

Aug 23rd, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.11 KB | None | 0 0
  1. public class TodoMvcTest {
  2.  
  3.     @Test
  4.     public void testTasksCommonFlow() {
  5.  
  6.         open("https://todomvc4tasj.herokuapp.com");
  7.  
  8.         //allTab
  9.         add("1");
  10.         edit("1", "123"); //(oldTask, newTask)
  11.         /*
  12.             хорошо использовал неявные проверки)
  13.  
  14.             можно уйти от комментариев //(oldTask, newTask) - если тестовые данные использовать как пояснения
  15.             edit("1", "1 edited");
  16.             получишь - что далее текст таски будет нам говорить  - что с таской делали
  17.             а тут - будет пояснять - что сейчас делаем
  18.         */
  19.         assertTasks("123");
  20.         toggle("123");
  21.         /*
  22.             перед toggle - можно было не делать проверку assertTasks
  23.  
  24.             таска у нас по-прежнему единственная в списке
  25.             потому - операцию edit("1", "123")
  26.             хорошо проверит операция toggle("123")
  27.  
  28.             а вот после toggle("123") - проверка нужна
  29.             тут - просто проверть тексты тасок - assertTasks
  30.  
  31.             так проверишь кусок логики - на олле - отображаются все таски независимо от статуса
  32.             потом - перешел на другой фильтр и снова проверил тексты тасок
  33.  
  34.             так проверим - переход на фильтр
  35.             и допроверим - что таки таску закомплитили
  36.         */
  37.  
  38.         activeTab("Active");
  39.         /*
  40.             про реализацию методов перехода по фильтрам - поговорим ниже)
  41.         */
  42.         assertNoTasks();
  43.         /*
  44.             правильно)
  45.  
  46.             проверка тут нужна
  47.  
  48.             и хорошо выбрал тестовую ситуацию  для проверки перехода на эктив
  49.  
  50.             было  - таска 123
  51.             перешли
  52.             стало - список пуст
  53.  
  54.             было и стало - отличаются
  55.             и стало - правильно
  56.             так наиболее точно можно проверить переход на другой фильтр
  57.  
  58.             а вот если бы было-стало не отличались - тогда
  59.             это было бы не точно
  60.             т к - возможно - фильтеринг вообще не работает в таком случае
  61.  
  62.             молодец)
  63.         */
  64.         add ("2");
  65.  
  66.         //edit than cancel
  67.         startEdit("2", "321").pressEscape();
  68.         /*
  69.             вот и тут грамотно неявную проверку заюзал)
  70.             это хорошо)
  71.  
  72.             от комментариев избавимся тем же способом - сделаем тестовые данные поясняющими
  73.             startEdit("2", "2 edit canceled").pressEscape();
  74.         */
  75.         assertTasks("2");
  76.         toogleAll();
  77.         /*
  78.             обрати внимание - IntelIJ Idea ошибки спеллинга подчеркивает зеленой волнистой линией
  79.             toggle vs toogle
  80.         */
  81.         assertNoTasks();
  82.  
  83.         activeTab("Completed");
  84.         /*
  85.             все же тут напишу про имя метода)
  86.  
  87.             читаем - активировать закладку - такую-то
  88.  
  89.             все бы хорошо - только таски у нас есть в состоянии Active, и закладка одноименная)
  90.  
  91.             чтоб не путаться - можно приметить термин - фильтровать
  92.             filter = что делать
  93.             по сути - мы это и делаем
  94.             фильтровать = согласно некому условию что-то показывать или прятать
  95.  
  96.             даже с такой сигнатурой метода сравни
  97.             activeTab("Completed");
  98.             и
  99.             filter("Completed");
  100.  
  101.             про сигнатуру  - ниже)
  102.         */
  103.         assertTasks("123", "2");
  104.         toggle("123");
  105.         /*
  106.             а вот тут бы перед toggle("123") - комментарий //reopen
  107.             был бы весьма кстати
  108.             чтоб не приходилось думать - какой результат у операции
  109.  
  110.             можно вызовы toggle / toggleAll прокомментировать и выше
  111.             просто выше еще сравнительно несложно было
  112.             а тут - уже поглубже
  113.             уже думать надо)
  114.  
  115.             следующая операция - не проверяет этот reopen
  116.             а проверка текстов видимых тасок на этом фильтре - отлично и точно переоткрытие таски проверила бы
  117.         */
  118.         clearCompleted();
  119.         /*
  120.             и тут проверки не хватает
  121.         */
  122.  
  123.         activeTab("All");
  124.         assertTasks("123");
  125.         /*
  126.             ну, насчет этой проверки - смотри сам)
  127.  
  128.             поскольку таска единственная - можно сказать
  129.             что delete("123"); - проверит то, что она видима
  130.  
  131.             но - все же фильтеринг - операция не с единственной таской
  132.             и будет точнее  - если после перехода на фильтр все же будет явная проверка текстов тасок
  133.         */
  134.         delete("123");
  135.         assertNoTasks();
  136.  
  137.     }
  138. /*
  139.     да, это наиболее оптимальный сценарий)
  140.     распределил хорошо по разным фильтрам операции
  141.     активно использовал неявные проверки
  142.     что значительно на пользу нашему сценарию
  143.  
  144.     многое можно было не комментировать - ведь реализация правильная)
  145.     комменчу важное - что сделал верно с первого раза - на случай,
  146.     если не о всех доводах в пользу такого решения догадывался
  147.  
  148. */
  149. ****************************************
  150.     public SelenideElement startEdit(String oldTask, String newTask) {
  151. /*
  152.     реализация метода - ок)
  153.     правильно понял - зачем возвращать SelenideElement
  154.     и как это использовать
  155.  
  156.     круто)
  157.  
  158.     насчет имен параметров
  159.     да old & new - хороший вариант для обозначения было-стало
  160.  
  161.     это было-стало для текста таски
  162.     для других методов текст таски - мы называли taskText
  163.  
  164.     мы придерживаемся правила - используем для одного понятия один термин
  165.  
  166.     потому - тут имена параметров - oldTaskText & newTaskText
  167.  
  168.     аналогично и для edit(String oldTask, String newTask)
  169. */
  170. *****************************
  171.     public void activeTab(String nameTab) {
  172.         $$("#filters>li").find(exactText(nameTab)).click();
  173.     }
  174. /*
  175.     вот тут - про сигнатуру метода)
  176.  
  177.     посмотри в faq - про KISS principle вообще
  178.     https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#
  179.  
  180.     и про вот этот момент, в частности
  181.     https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#bookmark=id.8bflixemdgfw
  182.  
  183.     попробуй это применить)
  184.  
  185.     также не забудь о рекомендациях по неймингу - см выше
  186. */
  187. *******************************
  188.     private void assertTasks(String... taskText) {
  189.         tasks.filter(visible).shouldHave(exactTexts(taskText));
  190.     }
  191.  
  192.     private void assertNoTasks() {
  193.         tasks.filter(visible).shouldHave(empty);
  194.     }
  195. /*
  196.     да, это наиболее эффективный набор методов для проверки списка тасок
  197.     посмотри вот это видео - про то, какие есть варианты
  198.     https://drive.google.com/file/d/0B8hgIBw8-V-AdGxxU1R3enl1RzQ/view?usp=sharing
  199.    
  200.     твой вариант - ок
  201. */
Advertisement
Add Comment
Please, Sign In to add comment