Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class TodoMVCTest {
- @Test
- public void testTaskLifeCycle() {
- open("https://todomvc4tasj.herokuapp.com/#/");
- add("1");
- editTask("1", "1 edited");
- /*
- да, editTask("1"... - проверит add("1");
- и потому между ними - не нужно проверки - editTask("1" - неявно проверит добавление
- а вот после editTask("1" - идет переход на другой фильтр...
- и эта операция - уже не проверяет предыдущую
- потому - после editTask("1" - нужна проверка
- */
- switchTo("Active");
- /*
- Про этот момент - почитай
- https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#bookmark=id.8bflixemdgfw
- это про то - как лучше реализовать методы переходов по фильтрам
- попробуй применить
- после перехода на этот фильтр - да - у нас единственная таска
- могу согласиться с тем, что cancelEdit("1 edited" - проверяет ее состояние
- потому и проверки после перехода на эктив - не потребовалось)
- но...
- было = в списке "1 edited"
- перешли на эктив
- стало = в списке "1 edited"
- как узнать - это переход на эктив - работает правильно
- или вообще не работает(ведь список вообще не изменился)
- чтобы проверить переход на другой фильтр точно
- надо - чтобы было-стало отличались
- например, если еще на олле - закомплитить таску
- то - было-стало будет разным
- было = "1 edited"
- перешли на эктив
- стало = пусто
- т к состоняние списка разное и правильное при этом - все проверили
- обеспечь точную проверку перехода на эктив фильтр
- */
- cancelEdit("1 edited", "45");
- toggle("1 edited");
- /*
- тут операция toggle("1 edited") - хорошо проверила cancelEdit
- это ок
- а что проверяет операцию toggle("1 edited")?
- */
- add("2");
- /*
- а эту операцию что проверяет?
- */
- toggleAll();
- assertNoVisibleTasks();
- /*
- тут - проверил)
- это правильно)
- */
- switchTo("Completed");
- assertVisibleTasks("1 edited", "2");
- /*
- а тут видишь как удачно
- было - пустой список
- перешли на фильтр комплитед
- стало = "1 edited", "2"
- и закомпличивание проверили
- и переход на фильтр)
- */
- reopen("1 edited");
- /*
- проверка?
- про имя метода reopen - ниже напишу. чтоб пока не отвлекаться
- получается - что на этом фильтре мы только одну операцию проверили
- а лучше - более равномерно во фильтрам распределить операции
- это даст лучшие результаты для отлова такого рода проблем - когда
- на одном из фильтров перестают нормально работать операции над тасками
- сюда безболезненно можно сместить clearCompleted
- не забывай проверки делать - сразу же после действия
- если проверок недостаточно - можно или вообще пропустить ошибку
- или при падении теста - долго угадывать - что есть причиной этого падения
- */
- switchTo("All");
- /*
- было - "2"
- перешли на all
- стало - "1 edited", "2"
- было-стало разные
- это хорошо - хорошо проверили бы фильтеринг
- да только вот проверок нету)
- следующая проверка - ведь не проверяет состояние списка тасок
- */
- assetItemsLeft("1 item left");
- /*
- не надо проверять всю фразу)
- достаточно - проверить количество активных тасок
- т к мы проверяем не UI, не формулировки
- а логику
- логика = счетчик показывает - столько-то(цифра) активных тасок
- т е надо получить вот такой код
- assetItemsLeft(1);
- */
- ***********************************************
- private void toggle(String taskText) {
- tasks.find(exactText(taskText)).$(".toggle").click();
- }
- private void reopen(String taskText) {
- tasks.find(exactText(taskText)).$(".toggle").doubleClick();
- }
- /*
- посмотри на эти 2 метода
- код - один-в-один
- не DRY)
- это раз
- а самое главное - давай вызовем метод reopen для активной таски
- она не переоткроется
- а закомплитится
- а метод -reopen ...
- получается - что такое название метода reopen
- не точно отражает - что мы делаем
- т к еще и от контекста вызова все зависит
- кстати, а почему мы для прошлой работы - метод toggle назвали
- а не complete? Попробуй вспомнить)
- вот это еще почитай
- https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#bookmark=id.tmkuktenqqdi
- */
- ***************************************
- private void assertTasksAre(String... taskTexts) {
- private void assertVisibleTasks(String... taskTexts) {
- private void assertNoTasks() {
- private void assertNoVisibleTasks() {
- /*
- с реализацией - все ок
- не зря советовала расположить их рядом)
- смотри на названия
- assertTasksAre и assertVisibleTasks
- assertNoTasks и assertNoVisibleTasks
- подумай - что надо бы поправить)
- */
- ***********************************************************
- private SelenideElement editTask(String oldTaskText, String newTaskText) {
- tasks.find(exactText(oldTaskText)).doubleClick();
- return tasks.find(cssClass("editing")).find(".edit").setValue("1 edited").pressEnter();
- }
- /*
- вопрос - а зачем возвращает этот метод результат типа SelenideElement?
- как ты это используешь?
- или как можно использовать?
- такое тебе задание на следующий раз)
- используй в тесте такой вызов - editTask("1", "1 edited special for julia");
- я так думаю - будет такая таска в списке - "1 edited special for julia"?
- */
- ***************************************
- private SelenideElement cancelEdit(String taskText, String editText) {
- tasks.find(exactText(taskText)).doubleClick();
- return tasks.find(cssClass("editing")).find(".edit").setValue("45").pressEscape();
- }
- /*
- тут тоже мне расскажи - как ты собрался использовать результат типа SelenideElement
- и тоже - вызови метод вот так cancelEdit("1 edited special for julia", "1 edited special for julia CANCELED");
- как тест будет бегать - обрати внимание - как текст таски меняется )
- */
- *******************************************************
- private void switchTo(String taskTexts) {
- $$("#filters li").find(exactText(taskTexts)).click();
- }
- /*
- оу
- для перехода на такой-то фильтр - ты ждешь текстЫ тасок?
- уверен - что параметр метода - назван верно?
- надеюсь, линка выше тебе помогла)
- (при вызове switchTo("Active"); было)
- тут - на всякий случай еще намек - если еще не переделал
- что более KISS по-твоему и почему
- switchToAll() , switchToActive(), switchToCompleted()
- или
- switchTo("All"), switchTo("Active"), switchTo("Completed")
- ?
- если этого намека оказалось недостаточно и метод switchTo еще не переделал
- попробуй вызвать свой метод switchTo("special for julia")
- что получится?
- такая тебе загадка на подумать)
- еще - почитай все в faq - про KISS & DRY принципы
- может - еще что-то захватишь на эту тему
- но то что в faq - обязательно
- http://joxi.ru/n2YkKaGUjPgzyr
- */
- ***************************************************************
- private void assetItemsLeft(String taskText) {
- $("#todo-count").shouldHave(exactText(taskText));
- }
- /*
- удивительно)
- и тут параметр метода = taskText
- неужели текст таски метод как параметр принимает
- так
- теперь подсказки
- делаем метод с параметром - числом
- т к проверяем - количество тасок
- сверять будем - текст элемента
- но не "#todo-count", а другого, в котором - только цифра
- селектор для него ты уже знаешь - смотри слек
- с точки зрения страницы - и этот элемент - содержит текст
- только это лишь "1" или "10" = строка, содержащая только то, что нам надо проверить
- кондишен нам нужен точный - exactText
- т к нам не подойдет сравнение по вхождению -слишком не точно
- (смотри в слек - обсуждали)
- в качестве параметра - кондишен exactText принимает строковое значение
- а у нас есть - числовое
- значит - надо найти способ преобразования числа в строку
- и полученную строку уже передать в exactText
- чтоб найти такой способ
- гугли что-то такое
- java int to string
- */
Advertisement
Add Comment
Please, Sign In to add comment