90 lines
3.5 KiB
Python
90 lines
3.5 KiB
Python
import os
|
|
import time
|
|
|
|
from selenium.webdriver.firefox.webdriver import WebDriver
|
|
from selenium.webdriver.common.keys import Keys
|
|
from selenium.webdriver.support.ui import Select
|
|
from selenium.common.exceptions import WebDriverException
|
|
from selenium.webdriver.common.by import By
|
|
from selenium.webdriver.support.ui import WebDriverWait
|
|
from selenium.webdriver.support import expected_conditions as EC
|
|
from django.contrib.staticfiles.testing import StaticLiveServerTestCase
|
|
|
|
|
|
class AddressTests(StaticLiveServerTestCase):
|
|
fixtures = ['site_settings_and_shipping_rates', 'products.json']
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.browser = WebDriver()
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
cls.browser.quit()
|
|
super().tearDownClass()
|
|
|
|
def test_invalid_address_returns_errorlist(self):
|
|
self.browser.get(self.live_server_url + '/checkout/address/')
|
|
self.assertEqual(
|
|
self.browser.title,
|
|
'Checkout | Port Townsend Roasting Co.'
|
|
)
|
|
|
|
full_name_input = self.browser.find_element(By.NAME, 'full_name')
|
|
full_name_input.send_keys('John Doe')
|
|
email_input = self.browser.find_element(By.ID, 'id_email')
|
|
email_input.send_keys('john@example.com')
|
|
street_address_1_input = self.browser.find_element(By.NAME, 'street_address_1')
|
|
street_address_1_input.send_keys('1579')
|
|
city_input = self.browser.find_element(By.NAME, 'city')
|
|
city_input.send_keys('Logan')
|
|
state_select = select = Select(self.browser.find_element(By.NAME, 'state'))
|
|
state_select.select_by_value('UT')
|
|
postal_code_input = self.browser.find_element(By.NAME, 'postal_code')
|
|
postal_code_input.send_keys('37461')
|
|
self.browser.find_element(By.XPATH, '//input[@value="Continue"]').click()
|
|
# try:
|
|
# WebDriverWait(self.browser, 4).until(
|
|
# EC.presence_of_element_located((By.CLASS_NAME, 'errorlist'))
|
|
# )
|
|
# finally:
|
|
# self.browser.quit()
|
|
|
|
self.assertEqual(
|
|
self.browser.find_element(By.CSS_SELECTOR, '.errorlist li').text,
|
|
'USPS: Address Not Found.'
|
|
)
|
|
|
|
def test_address_is_url_safe(self):
|
|
self.browser.get(self.live_server_url + '/checkout/address/')
|
|
self.assertEqual(
|
|
self.browser.title,
|
|
'Checkout | Port Townsend Roasting Co.'
|
|
)
|
|
|
|
full_name_input = self.browser.find_element(By.NAME, "full_name")
|
|
full_name_input.send_keys('John Doe')
|
|
email_input = self.browser.find_element(By.ID, 'id_email')
|
|
email_input.send_keys('john@example.com')
|
|
street_address_1_input = self.browser.find_element(By.NAME, 'street_address_1')
|
|
street_address_1_input.send_keys('4031 N Douglas HWY #B')
|
|
city_input = self.browser.find_element(By.NAME, 'city')
|
|
city_input.send_keys('Juneau')
|
|
state_select = select = Select(self.browser.find_element(By.NAME, 'state'))
|
|
state_select.select_by_value('AK')
|
|
postal_code_input = self.browser.find_element(By.NAME, 'postal_code')
|
|
postal_code_input.send_keys('99801')
|
|
self.browser.find_element(By.XPATH, '//input[@value="Continue"]').click()
|
|
# try:
|
|
# WebDriverWait(self.browser, 4).until(
|
|
# EC.presence_of_element_located((By.CLASS_NAME, 'errorlist'))
|
|
# )
|
|
# finally:
|
|
# self.browser.quit()
|
|
|
|
self.assertRegex(
|
|
self.browser.current_url,
|
|
'^http://localhost:[0-9]*/checkout/$'
|
|
)
|