Last active
November 3, 2017 10:06
-
-
Save rafalf/af458fbc761ef05913e73fb93f653064 to your computer and use it in GitHub Desktop.
pytest test example for show&tell
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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