Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from selene import config
- from selene.support import by
- from selene.support.conditions import be
- from selene.support.conditions import have
- from selene.tools import visit, s, ss, wait_to
- def test_filters_tasks():
- # ім'я неправильно... ми пишемо не тест що перевіряє фільтрацію... то на відео ми фільтрацію тестували, у тебе інша задача
- config.browser_name = 'chrome'
- visit('https://todomvc4tasj.herokuapp.com/')
- wait_to(have.js_returned_true(
- "return $._data($('#clear-completed').get(0), 'events').hasOwnProperty('click')"), config.timeout * 2)
- # ще такий нюанс.... ми зазвичай створюємо змінні (чи методи) для того щоб перевикористовувати який код...
- # щоб двічі одне і те ж не писати
- # і потім щоб якщо треба щось поміняти - то міняти тільки в одному місці
- # але не тільки для цього, а і для того щоб зробити код більш читабельним (так само як ти з методами зробив)
- # вище от цей вейт доволі складний... з першого погляду не ясно чого він чекає,
- # тому краще винести от той скрипт в тексті в свою змінну
- # wait_to(have.js_returned_true(clear_completed_js_loaded), config.timeout * 2)
- # там десь на відео це доречі мало бути ;)
- add('task1', 'task2', 'task3', 'task4')
- should_be_tasks('task1', 'task2', 'task3', 'task4')
- # правильний порядок відповідно англійській граматиці мав би бути: tasks_should_be
- destroy('task2')
- toggle('task4')
- filter_completed()
- should_be_tasks('task4')
- # я ніби мав писати раніше... що у нас в сценарії немає фільтерінга... ми його тут зараз не тестуємо
- # в даному випадку достатньо перевірити результат дії clear_completed
- # - адже закліеритись мають тільки ті задачі які були затуглені...
- # це такий типу трюк з "неявними перевірками" в "довгих тестах типу нашого"
- # (ще є інший стиль тестів - атомарні чи "фіче тести як я їх іноді називаю") - там би такий трюк не пройшов
- # десь в шушпанчиках я мав про це розповідати
- filter_all()
- should_be_tasks('task1', 'task3', 'task4')
- clear_completed()
- should_be_tasks('task1', 'task3')
- toggle_all()
- filter_completed()
- should_be_tasks('task1', 'task3')
- clear_completed()
- should_be_tasks()
- tasks = ss('#todo-list li')
- def add(*texts):
- for text in texts:
- s('#new-todo').set(text).press_enter()
- def destroy(task_text):
- tasks.element_by(have.exact_text(task_text)).click().element('.destroy').click()
- def toggle(task_text):
- tasks.element_by(have.exact_text(task_text)).element('.toggle').click()
- def toggle_all():
- s('#toggle-all').click()
- def clear_completed():
- s('#clear-completed').click()
- def filter_active():
- s(by.link_text('Active')).click()
- def filter_completed():
- s(by.link_text('Completed')).click()
- def filter_all():
- s(by.link_text('All')).click()
- def should_be_tasks(*text):
- tasks.filtered_by(be.visible).should(have.exact_texts(*text))
Advertisement
Add Comment
Please, Sign In to add comment