Fakultas Ilmu Komputer UI

Commit 8e407b41 authored by Muhammad Ilham Peruzzi's avatar Muhammad Ilham Peruzzi
Browse files

first-cut FT

parent 42217bc8
......@@ -9,8 +9,7 @@ from django.contrib.staticfiles.testing import StaticLiveServerTestCase
from unittest import skip
class FunctionalTest(StaticLiveServerTestCase):
MAX_WAIT = 10
def setUp(self):
chrome_options = Options()
......@@ -28,6 +27,7 @@ class FunctionalTest(StaticLiveServerTestCase):
self.browser.quit()
def wait_for_row_in_list_table(self, row_text):
MAX_WAIT = 10
start_time = time.time()
while True:
try:
......@@ -38,4 +38,15 @@ class FunctionalTest(StaticLiveServerTestCase):
except (AssertionError, WebDriverException) as e:
if time.time() - start_time > MAX_WAIT:
raise e
time.sleep(0.5)
def wait_for(self, fn):
start_time = time.time()
MAX_WAIT = 10
while True:
try:
return fn()
except (AssertionError, WebDriverException) as e:
if time.time() - start_time > MAX_WAIT:
raise e
time.sleep(0.5)
\ No newline at end of file
......@@ -14,15 +14,32 @@ class ItemValidationTest(FunctionalTest):
def test_cannot_add_empty_list_items(self):
# Edith goes to the home page and accidentally tries to submit
# an empty list item. She hits Enter on the empty input box
self.browser.get(self.live_server_url)
self.browser.find_element_by_id('id_new_item').send_keys(Keys.ENTER)
# The home page refreshes, and there is an error message saying
# that list items cannot be blank
self.wait_for(lambda: self.assertEqual(
self.browser.find_element_by_css_selector('.has-error').text,
"You can't have an empty list item"
))
# She tries again with some text for the item, which now works
self.browser.find_element_by_id('id_new_item').send_keys('Buy milk')
self.browser.find_element_by_id('id_new_item').send_keys(Keys.ENTER)
self.wait_for_row_in_list_table('1: Buy milk')
# Perversely, she now decides to submit a second blank list item
self.browser.find_element_by_id('id_new_item').send_keys(Keys.ENTER)
# She receives a similar warning on the list page
self.wait_for(lambda: self.assertEqual(
self.browser.find_element_by_css_selector('.has-error').text,
"You can't have an empty list item"
))
# And she can correct it by filling some text in
self.fail('write me!')
\ No newline at end of file
self.browser.find_element_by_id('id_new_item').send_keys('Make tea')
self.browser.find_element_by_id('id_new_item').send_keys(Keys.ENTER)
self.wait_for_row_in_list_table('1: Buy milk')
self.wait_for_row_in_list_table('2: Make tea')
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment