julia_v_iluhina

Untitled

Oct 26th, 2016
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 14.38 KB | None | 0 0
  1. public class TodoMVCTest {
  2.     TodoMVCPage tasks = new TodoMVCPage();
  3.  
  4.     @Test
  5.     public void testTasksLifeCycle() {
  6.  
  7.         open("https://todomvc4tasj.herokuapp.com/");
  8.  
  9.         //- "All" filter operations. "items left assertCounter" used in each action for verification that action was done correctly
  10.         //- "create", "edit" and "items left assertCounter"
  11.         /*
  12.             не надо использовать комментарии там - где они не нужны вообще
  13.             дальше из кода и так ясно - что мы делаем
  14.             такие комментарии - только загромождают код
  15.             пользы от них - маловато)
  16.         */
  17.         tasks.add("t1");
  18.         tasks.edit("t1", "t1_renamed");
  19.         /*
  20.             вот это хорошо
  21.             проверил операцию add
  22.             использовав следующее действие edit
  23.         */
  24.         tasks.assertCounter(1);
  25.         /*
  26.             assertItemsLeft - было бы лучше
  27.             т к эти термины используются на UI -
  28.             т е мы не вводим никаких новых терминов
  29.             а используем самый наглядный вариант
  30.  
  31.             чтобы переименовать метод/класспеременную/параметр
  32.             https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#heading=h.vwuqi54t6fyg
  33.         */
  34.         //- "delete"
  35.         tasks.delete("t1_renamed");
  36.         /*
  37.             из кода и так ясно - что удаляем таску
  38.             не нужно тут комментариев
  39.  
  40.             и delete - отлично справляется с неявной проверкой edit
  41.  
  42.             только вот это очень не экономно)
  43.             лучше уже под финиш удали таску
  44.             так ты на одной таске больше всяких операций проведешь
  45.             и меньше тасок придется создавать
  46.  
  47.         */
  48.         tasks.assertTasksEmpty();
  49.         /*
  50.             верно, а тут проверка - была нужна
  51.             добавление таски никак не проверит удаления предыдущей
  52.         */
  53.         //- "complete"
  54.         tasks.add("t2");
  55.         tasks.toggle("t2");
  56.         /*
  57.             хорошая идея - покрыть тут complete
  58.             если уберешь delete
  59.             то сможешь закомплитить таску t1_renamed
  60.             те - еще и сєкономишь на добавлении таски
  61.  
  62.             про стиль комментариев
  63.             сравни
  64.             //- "complete"
  65.             //complete
  66.             я предпочту более лаконичный вариант
  67.             меньше читать и меньше писать)
  68.             тут и правда - комментарий полезен
  69.             чтобы не размышлять - что в этот раз делает toggle
  70.  
  71.             только стоит такой комментарий добавлять уже непосредственно перед toggle
  72.             перед add - рано, может путать
  73.         */
  74.         tasks.assertCounter(0);
  75.         /*
  76.             писала в прошлый раз
  77.             assertItemsLeft - в рамках этого тест-метода покрываем единожды
  78.             мы уже ранее покрыли его
  79.  
  80.             а использовать assertItemsLeft как проверку закомпличености -
  81.             мы еще не скоро сможем)
  82.         */
  83.         //- "activate"
  84.         tasks.toggle("t2");
  85.         tasks.assertCounter(1);
  86.         //- "complete all"
  87.         tasks.toggleAll();
  88.         tasks.assertCounter(0);
  89.         //- "activate all"
  90.         tasks.toggleAll();
  91.         tasks.assertCounter(1);
  92.         //- "clear completed"
  93.         tasks.toggleAll();
  94.         tasks.clearCompleted();
  95.         tasks.assertTasksEmpty();
  96.         /*
  97.             я так поняла - ты собрался покрыть на каждом из фильтров - все юз кейсы
  98.             перечитай прошлое ревью, строки 82-97
  99.             советую остановиться на complete
  100.             после complete - проверим состояние списка тасок и перейдем на Active
  101.  
  102.             почему именно это - удачный момент, поясню ниже
  103.  
  104.             у нас задача - покрыть ТОЛЬКО высокоприоритетные действия
  105.             и ТОЛЬКО единожды (а не на каждом контексте)
  106.             с добавлением тасок так не выйдет
  107.             но и столько тасок не понадобится - если думать про эффективность
  108.             и кроме того - мы хотим поравномернее распределить действия по фильтрам
  109.             мы уже на all покрыли
  110.                 add
  111.                 edit
  112.                 complete
  113.                 items left
  114.             оставь и для других фильтров что-то)
  115.         */
  116.  
  117.         //- "Active" filter operations. "items left assertCounter" used in each action for verification that action was done correctly
  118.         //- "create", "edit" and "items left assertCounter"
  119.         /*
  120.             комментарий - лишний
  121.         */
  122.         tasks.add("t1");
  123.         /*
  124.             если в процессе теста надо новые таски добавить -
  125.             добавляй с новыми именами
  126.             не важно - что предыдущей таски "t1" нету
  127.             такой сценарий будет путать
  128.             надо будет думать - а что это за "t1"
  129.             та которую мы добавили тогда-то или тогда-то?
  130.             зачем создавать ребусы? )
  131.             и так достаточно вещей, о которых придется думать
  132.  
  133.             в случае, если мы остановимся на complete
  134.             перед tasks.add("t1");
  135.             у нас будет в списке закомпличеная таска "t1_renamed"
  136.  
  137.             для проверки перехода на Active фильтр - ее достаточно
  138.             так что - не торопись добавлять новую таску
  139.             как понадобится - так и добавим
  140.         */
  141.         tasks.switchToActive();
  142.         /*
  143.             верно реализовал метод)
  144.             еще советую изменить название на filterActive
  145.             filter - уже применяется на уровне приложения
  146.             и глагол фильтровать - точнее отражает - что мы делаем
  147.             фильтровать = показывать удовлетворяющее условию и не показывать не удовлетворяющее
  148.  
  149.             переход на другой фильтр - тоже операция
  150.             и ее тоже надо проверить
  151.  
  152.             нам нужно, чтобы состояние списка тасок после перехода на другой фильтр
  153.             было правильным - с точки зрения фильтра
  154.             а также - чтобы состояние фильтра изменилось (чтобы быть уверенным - что переход на фильтр - вообще сработал)
  155.  
  156.             вот тут у нас получится
  157.             было = таска "t1_renamed"
  158.             перешли на эктив
  159.             стало = ни одной видимой таски
  160.  
  161.             стало = правильное + стало отличается от было
  162.             все, фильтеринг проверен достаточно точно
  163.  
  164.             да и закомпличивание "t1_renamed" допроверим как раз
  165.             проверив на олле - что тексты списка тасок = "t1_renamed"
  166.             мы проверим кусок логики - что на all таски отображаются вне зависимости от статуса
  167.             и проверив на active - что видимых тасок нет - мы допроверим - что "t1_renamed" была закомпличена
  168.  
  169.             и вот после этого - уже на active - и добавляй новую таску)
  170.             ведь теперь у нас нету ни одной видимой
  171.             (это если послушался моих советов выше)
  172.         */
  173.         tasks.edit("t1", "t1_renamed");
  174.         tasks.assertCounter(1);
  175.         //- "delete"
  176.         tasks.delete("t1_renamed");
  177.         tasks.assertTasksEmpty();
  178.         /*
  179.            это уже на all покрыто
  180.            тут - не повторяйся
  181.         */
  182.         //- "complete"
  183.         tasks.add("t2");
  184.         tasks.switchToActive();
  185.         tasks.toggle("t2");
  186.         tasks.assertCounter(0);
  187.         /*
  188.             тут ты не подумал)
  189.             ты уже на Active
  190.             зачем тогда switchToActive?
  191.  
  192.             да и complete уже покрыт на All
  193.  
  194.             тут на Active разумнее покрыть complete all
  195.             а перед этим - cancel edit
  196.             писала тебе в прошлый раз - что это тоже высокоприоритетное действие
  197.  
  198.             не забывай про проверки
  199.             пропускаешь)
  200.         */
  201.         //- "complete all"
  202.         /*
  203.             вот ты пишешь такой комментарий
  204.             и далее пассаж с переходами и переоткрытиями
  205.             только запутывает комментарий
  206.  
  207.             комментируй как complete, complete all, activate
  208.             именно строку с вызовом toggle, toggleAll
  209.             иначе - не понятно - к чему этот комментарий
  210.         */
  211.         tasks.switchToCompleted();
  212.         /*
  213.             проверок - не хватает
  214.  
  215.             если на active
  216.                 добавишь задачу
  217.                 отменишь редактирование
  218.                 выполнишь complete all
  219.             то к переходу на Completed фильтр - придешь со списком тасок
  220.             в котором нету ни одной видимой таски
  221.  
  222.             перешел на Completed
  223.             стало = 2 видимые таски
  224.  
  225.             снова сможем тщательно проверить фильтеринг
  226.             и еще останутся не покрытые операции - с тем чтобы их на Completed
  227.             покрыть
  228.         */
  229.         tasks.toggle("t2");
  230.         /*
  231.             насколько я понимаю - это как раз activate
  232.             вот это стоило прокомментировать
  233.  
  234.             а и поверить тоже стоило)
  235.         */
  236.         tasks.switchToActive();
  237.         /*
  238.             switchToActive() - ты уже покрыл
  239.             больше не надо
  240.  
  241.             остался не покрытым переход на all
  242.  
  243.             если прислушался к советам из комментариев
  244.             то осталось не покрыто -
  245.                 переход на all
  246.                 clear completed
  247.                 delete
  248.             и все)
  249.  
  250.             учитывай - что на  all - мы уже много чего покрыли
  251.             постарайся на  Completed фильтре не только  activate покрыть
  252.             но и еще что-то
  253.         */
  254.         tasks.assertCounter(1);
  255.         //- "clear completed"
  256.         tasks.toggle("t2");
  257.         tasks.clearCompleted();
  258.         tasks.assertTasksEmpty();
  259.  
  260.         //- "Completed" filter operations. "items left assertCounter" used in each action for verification that action was done correctly
  261.         //- "delete"
  262.         tasks.add("t1");
  263.         tasks.toggle("t1");
  264.         tasks.switchToCompleted();
  265.         tasks.delete("t1");
  266.         tasks.assertTasksEmpty();
  267.         //- "activate"
  268.         tasks.add("t2");
  269.         tasks.switchToAll();
  270.         tasks.toggle("t2");
  271.         tasks.switchToCompleted();
  272.         tasks.toggle("t2");
  273.         tasks.assertCounter(1);
  274.         tasks.switchToAll();
  275.         //- "activate all"
  276.         tasks.toggle("t2");
  277.         tasks.switchToCompleted();
  278.         tasks.toggleAll();
  279.         tasks.assertCounter(1);
  280.         //- "clear completed"
  281.         tasks.switchToActive();
  282.         tasks.toggle("t2");
  283.         tasks.switchToCompleted();
  284.         tasks.clearCompleted();
  285.         tasks.assertTasksEmpty();
  286.         /*
  287.             весь вот этот "хвост" - даже не буду разбирать
  288.             это все повторения
  289.  
  290.             почитай в прошлом ревью еще раз информацию
  291.             строки 76-162
  292.            
  293.             надеюсь, после построчного разбора кода - станет понятнее о чем я
  294.            
  295.             в пейдж не заглядывала пока даже
  296.             давай решим пока эти вопросы)
  297.         */
  298.     }
  299. }
Advertisement
Add Comment
Please, Sign In to add comment