ptcoffee_django/tests/test_address.py
2023-01-21 14:15:36 -07:00

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/$'
)