Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ArrayList<String> tasks = new ArrayList<String>();
- Collections.addAll(tasks, "task1", "task2", "task3", "task4");
- create(tasks); //експеримент :)
- /*
- экспериментатор))
- в следующем видео - будет про это - как такое грамотнее реализовать
- сразу кусок теории - уже ко второму видео)
- как посмотришь и в целом поймешь - можешь углубить понимание
- http://www.linkex.ru/java/varargs.php
- */
- **************************
- private void create(ArrayList<String> tasks){
- /*
- тебе не таски передают, а их тексты
- я бы советовала переименовать параметр в taskTexts
- из следующего видео - станет ясно - почему
- */
- *******************************
- private void complete(int index){
- if ($("#todo-list li:nth-of-type(" + index + ").completed").exists()){
- $("#todo-list li:nth-of-type(" + index + ") .toggle").click();
- }
- $("#todo-list li:nth-of-type(" + index + ") .toggle").click();
- }
- /*
- ну, я клонила к другому)
- да, теперь твой метод гарантированно закомплитит)
- а может еще для начала и переоткроет)
- да, метод универсальный)
- только вот давай подумаем - как решить - что в тесте мы покрыли
- вызывая такой метод - мы можем покрыть лишь complete
- а можем еще и activate )
- т е - есть проблемы с подсчетом покрытия
- еще момент
- мы - когда пишем тест - мы же знаем - какой результат ожидаем
- мы знаем - что правильная ситуация - когда такая-то таска - активная
- и мы для нее вызываем complete
- и по хорошему - если эта таска не активная - то тест должен упасть -
- раз мы пытаемся сделать то, что сделать не возможно
- а вот такое слишком умное и гибкое поведение скроет от нас - что у нас были проблемы
- состояние таски не соответствовало ожидаемому
- т е - эта умная гибкость мешает понять - правильно ли работает тест
- еще момент
- если неверно отрботает проверка
- или если неверно работает переоткрытие таски
- то мы может так и не увидеть - как работает complete - даже если он работает)
- проверка может сработать неверно - запросто
- exists() - не ждет
- и если что-то на єтот момент не догрузилось - то получим ... ерунду))
- т е - сложная логика может нам навредить - возможны проблемы с выполнением действия complete
- не потому, что оно не работает, а потому, что перед ним мі много сложного наделали
- к чему я клонила)
- в общем случае - нам надо было сделать вот это -
- $("#todo-list li:nth-of-type(" + index + ") .toggle").click();
- но - назвать это complete - некорректно
- т к в одном случае - это complete
- а в другом - вовсе даже reopen
- в зависимости от контекста вызова - в каком статусе таска - к которой это применили
- зато - такое действие - можно назвать - переключить = toggle
- это будет соответствовать действию - в любом из случаев
- в результате - получили максимально простой метод
- с именем - которое отражает в точности - что метод делает
- независимо от контекста вызова
- есть способ написать именно complete )
- вопрос - стоит ли
- но - это реально
- ниже приведу описание этого
- это больше из-за того, что ты товарищ любопытный) и уже докопала до мысли - что можно
- уточниться до complete )
- можно запросто останавливаться на варианте toggle - он прост и для реализации, и для понимания
- это важные его достоинства)
- */
- **************************************
- private void completeAll(){
- $("#toggle-all").click();
- }
- /*
- именно из тех же соображений - и это действие нельзя назвать completeAll
- потому что - если это применить к запомпличеным таскам - они переоткроются
- так что - тут тоже toggleAll - будет лучшим и точным именем
- */
- *********************************************************
- /*
- как реализовать отдельно complete и reopen
- повторюсь - делать это не обязательно
- больше для общего развития
- */
- public void complete(int index) {
- $("#todo-list li:nth-of-type(" + index + ").active .toggle").click();
- }
- public void reopen(int index) {
- $("#todo-list li:nth-of-type(" + index + ").completed .toggle").click();
- }
- /*
- логика проста
- что есть css selector - это фактически маска, по которой мы ижем элементы
- если мы будем искать
- в списке тасок #todo-list li
- такой-то элемент
- у которого есть класс active или completed
- и уже внутри этого элемента - элемент с классом toggle
- то - мы просто не найдем таску - если она будет в не верном состоянии
- и соответственно - на вызове метода complete для уже закомпличеной таски
- тест упадет - т к просто не на чем будет кликать -
- мы по селектору не найдем нужного элемента
- что и требовалось
- методы работают только тогда - когда применяются в правильном контексте
- да, их еще дорабатывать придется)
- и они будут сложнее - чем метод toggle
- это минусы такого решения
- но - такой подход имеет право на жизнь тоже
- т к вызывая complete или reopen - мы еще и косвенно проверим состояние таски
- что тоже неплохо) - это плюсы решения
- */
Advertisement
Add Comment
Please, Sign In to add comment