Skip to content

Instantly share code, notes, and snippets.

@rafalf
Last active November 3, 2017 10:06
Show Gist options
  • Save rafalf/af458fbc761ef05913e73fb93f653064 to your computer and use it in GitHub Desktop.
Save rafalf/af458fbc761ef05913e73fb93f653064 to your computer and use it in GitHub Desktop.
pytest test example for show&tell
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pytest
from pages.imports import *
from config import BASE_URL, SIGNUP_RETAILER_URL
EAT = "proofing-012@test.com"
INVITE_EMAILS = [
'proofing-020@test.com',
'proofing-021@test.com',
'proofing-022@test.com',
]
def test_admin_add_delete_employees(driver, logger):
# register
# add employees ( w/ names, w/t names, managers)
# ensure business admin cannot be deleted
# delete an employee
# test out password on verification form
# enter valid password for employee which an invitation got cancelled
# employee successfully logs in but cant access employee page ( not a manager any longer )
signup = LoginSignup(logger, driver)
home = Home(logger, driver)
signup_url = SIGNUP_RETAILER_URL
home.open_url(signup_url)
email_address = EAT
password = '123456789'
image = 'gift1.jpg'
logger.info('test_admin_add_delete_employees: open: {}'.format(signup_url))
logger.info('test_admin_add_delete_employees: email: {}'.format(email_address))
signup.signup(email_address, password)
logger.info('test_admin_add_delete_employees: registered: {} ok'.format(email_address))
business = Business(logger, driver)
business.upload_business_image(image)
logger.info('test_admin_add_delete_employees: image uploaded: {}'.format(image))
business.ensure_no_error()
store = business.register_store()
business.click_btn_complete_profile()
admin = AdminManagement(logger, driver)
st = admin.get_store_name()
assert st == store['store_name']
admin.select_employee_sidebar()
employees = AdminEmployees(logger, driver)
e = employees.get_all_employees()
assert len(e) == 1
m = employees.get_all_managers()
assert len(m) == 1
employee_url = employees.get_current_url
employees.click_btn_add_new_employee()
employees.enter_email('invite@dev')
employees.click_btn_save()
err = admin.get_error_message()
assert err == u'Ungültige Email Adresse.'
employees.enter_email('invite1@dev.')
employees.click_btn_save()
err = admin.get_error_message()
assert err == u'Ungültige Email Adresse.'
# fix email and submit
employees.enter_email(INVITE_EMAILS[0])
employees.click_btn_save(True)
e = employees.get_all_employees()
assert len(e) == 2
m = employees.get_all_managers()
assert len(m) == 1
# add employee with names
employees.click_btn_add_new_employee()
employees.enter_email(INVITE_EMAILS[1])
employees.enter_first_name('fname')
employees.enter_last_name('lname')
employees.click_btn_save(True)
e = employees.get_all_employees()
assert len(e) == 3
m = employees.get_all_managers()
assert len(m) == 1
# add employee with names
# select chck box - manager
employees.click_btn_add_new_employee()
employees.enter_email(INVITE_EMAILS[2])
employees.enter_first_name('fname')
employees.enter_last_name('lname')
employees.click_chck_manager()
employees.click_btn_save(True)
e = employees.get_all_employees()
assert len(e) == 4
m = employees.get_all_managers()
assert len(m) == 2
# re invite as a manager
employees.click_btn_add_new_employee()
employees.enter_email(INVITE_EMAILS[1])
employees.enter_first_name('fname')
employees.enter_last_name('lname')
employees.click_chck_manager()
employees.click_btn_save(True)
e = employees.get_all_employees()
assert len(e) == 4
m = employees.get_all_managers()
assert len(m) == 3
# row-1: business manager, owner ( 1 out of 4 )
# INVITE_EMAILS[0]
employees.click_chevron_down(1)
b = employees.is_delete_button()
assert b is None
# row-2: modal closes ( 2 out of 4 )
employees.click_chevron_down(2)
employees.click_btn_delete()
employees.click_x_close_modal()
# row-3: employee with names, manager ( 3 out of 4 )
# INVITE_EMAILS[1]
employees.click_chevron_down(3)
b = employees.is_delete_button()
assert b is not None
# incorrect text
employees.click_btn_delete()
employees.enter_delete_employee('DELETE1')
employees.click_btn_delete_now()
err = signup.get_error_message()
assert err == u'Bitte schreibe \'DELETE\' in das eingabefeld.'
# whitespace
employees.enter_delete_employee(' ')
employees.click_btn_delete_now()
err = signup.get_error_message()
assert err == u'Bitte schreibe \'DELETE\' in das eingabefeld.'
# delete successful
employees.enter_delete_employee('DELETE')
employees.click_btn_delete_now(True)
e = employees.get_all_employees()
assert len(e) == 3
m = employees.get_all_managers()
assert len(m) == 2
# row-4: employee with names, manager ( 3 out of 3 )
# INVITE_EMAILS[2]
employees.click_chevron_down(3)
b = employees.is_delete_button()
assert b is not None
# verify email => password validation
# ---------------------------------
login = LoginSignup(logger, driver)
api = HelperApi()
verification_url = api.get_verification_url(INVITE_EMAILS[2])
home.open_url(verification_url)
home.ensure_success_check_circle()
# 1. validation - existent invite
login.enter_password('short')
login.enter_confirm_password('short')
login.click_btn_form_submit()
err = login.get_error_message()
assert err == u'Dein Passwort muss mindestens 8 Zeichen lang sein.'
login.enter_password('123456789')
login.enter_confirm_password('123456789-')
login.click_btn_form_submit()
err = login.get_error_message()
assert err == u'Deine Passwörter stimmen nicht überein.'
login.enter_password(' ')
login.enter_confirm_password(' ')
login.click_btn_form_submit()
err = login.get_error_message()
assert err == u'Bitte gib dein Passwort ein.'
login.enter_password('123456789')
login.enter_confirm_password(' ')
login.click_btn_form_submit()
err = login.get_error_message()
assert err == u'Bitte wiederhole dein Passwort.'
# clean up browser
login.delete_all_cookies()
login.clean_browser_storage()
# 2. - deleted invite
verification_url = api.get_verification_url(INVITE_EMAILS[1])
home.open_url(verification_url)
home.ensure_success_check_circle()
login.enter_password('123456789')
login.enter_confirm_password('123456789')
login.click_btn_form_submit()
login.ensure_no_error()
login.click_btn_login_on_verification()
login.enter_email_address(INVITE_EMAILS[1])
login.enter_password('123456789')
login.click_btn_login()
# logged in
login.click_my_data_lnk_menu()
# manager forbidden - invite cancelled
login.open_url(employee_url)
t = employees.get_403_zerrpage_text()
assert t == u'Du bist kein Manager für diesen Händler'
def teardown_module(module):
api = HelperApi()
if not api.get_delete_user(EAT, True):
pytest.fail('test_admin_add_delete_employees: teardown failed for test: test_sample.py')
for email in INVITE_EMAILS:
api.get_delete_user(email, False)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment