Skip to content
This repository was archived by the owner on Jan 26, 2021. It is now read-only.

Migrated test architecture to Page Object Model Design #375

Merged
merged 21 commits into from
Aug 24, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
460 changes: 147 additions & 313 deletions vms/administrator/tests/test_formFields.py

Large diffs are not rendered by default.

117 changes: 39 additions & 78 deletions vms/administrator/tests/test_report.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
from django.contrib.staticfiles.testing import LiveServerTestCase

from django.db import IntegrityError
from selenium.webdriver.support.ui import Select

from pom.locators.administratorReportPageLocators import *
from pom.pages.administratorReportPage import AdministratorReportPage
from pom.pages.authenticationPage import AuthenticationPage

from shift.utils import (
create_admin,
Expand All @@ -24,19 +27,18 @@ class Report(LiveServerTestCase):

@classmethod
def setUpClass(cls):
cls.homepage = '/'
cls.authentication_page = '/authentication/login/'
cls.report_page = '/administrator/report/'
cls.report_shift_summary_path = '//div[2]/div[4]'

cls.driver = webdriver.Firefox()
cls.driver.implicitly_wait(5)
cls.driver.maximize_window()
cls.authentication_page = AuthenticationPage(cls.driver)
cls.report_page = AdministratorReportPage(cls.driver)
cls.elements = AdministratorReportPageLocators()
super(Report, cls).setUpClass()

def setUp(self):
create_admin()
self.login_admin()
self.report_page.go_to_admin_report()

def tearDown(self):
pass
Expand All @@ -47,56 +49,17 @@ def tearDownClass(cls):
super(Report, cls).tearDownClass()

def login_admin(self):
self.login('admin', 'admin')

def login(self, username, password):
self.driver.get(self.live_server_url + self.authentication_page)
self.driver.find_element_by_id('id_login').send_keys(username)
self.driver.find_element_by_id('id_password').send_keys(password)
self.driver.find_element_by_xpath('//form[1]').submit()

def logout(self):
self.driver.find_element_by_link_text('Log Out').click()

def go_to_admin_report(self):
self.driver.find_element_by_link_text('Report').click()

def fill_report_form(self, info):
self.driver.find_element_by_xpath(
'//input[@name = "first_name"]').clear()
self.driver.find_element_by_xpath(
'//input[@name = "last_name"]').clear()
[select1, select2, select3] = self.get_event_job_organization_selectors()

self.driver.find_element_by_xpath(
'//input[@name = "first_name"]').send_keys(info[0])
self.driver.find_element_by_xpath(
'//input[@name = "last_name"]').send_keys(info[1])

"""select1.select_by_visible_text(info[2])
select2.select_by_visible_text(info[3])
select3.select_by_visible_text(info[4])"""

self.driver.find_element_by_xpath('//form[1]').submit()

def get_event_job_organization_selectors(self):
select1 = Select(self.driver.find_element_by_xpath('//select[@name = "event_name"]'))
select2 = Select(self.driver.find_element_by_xpath('//select[@name = "job_name"]'))
select3 = Select(self.driver.find_element_by_xpath('//select[@name = "organization"]'))
return (select1, select2, select3)
self.authentication_page.server_url = self.live_server_url
self.authentication_page.login({ 'username' : 'admin', 'password' : 'admin'})

def verify_shift_details(self, total_shifts, hours):
total_no_of_shifts = self.driver.find_element_by_xpath(
self.report_shift_summary_path).text.split(' ')[10].strip('\nTotal')

total_no_of_hours = self.driver.find_element_by_xpath(
self.report_shift_summary_path).text.split(' ')[-1].strip('\n')

total_no_of_shifts = self.report_page.get_shift_summary().split(' ')[10].strip('\nTotal')
total_no_of_hours = self.report_page.get_shift_summary().split(' ')[-1].strip('\n')
self.assertEqual(total_no_of_shifts, total_shifts)
self.assertEqual(total_no_of_hours, hours)

#Failing test case which has been documented
#Test commented out to prevent travis build failure
#Test commented out to prevent travis build failure - bug #327

"""def test_null_values_with_dataset(self):
# register dataset
Expand All @@ -120,28 +83,28 @@ def verify_shift_details(self, total_shifts, hours):

logged_shift = log_hours_with_details(volunteer, created_shift, "09:00", "12:00")

report_page = self.report_page

# check admin report with null fields, should return the above shift
self.driver.get(self.live_server_url + self.report_page)
self.fill_report_form(['','','','',''])
report_page.fill_report_form(['','','','',''])
self.verify_shift_details('1','3.0')

self.assertEqual(self.driver.find_element_by_xpath(
'//table//tbody//tr[1]//td[1]').text, created_event.name)
self.assertEqual(self.driver.find_element_by_xpath(
'//table//tbody//tr[1]//td[6]').text, 'Aug. 21, 2016')
self.assertEqual(self.driver.find_element_by_xpath(
'//table//tbody//tr[1]//td[7]').text, '9 a.m.')
self.assertEqual(self.driver.find_element_by_xpath(
'//table//tbody//tr[1]//td[8]').text, '12 p.m.')
self.assertEqual(self.driver.find_element_by_xpath(
'//table//tbody//tr[1]//td[9]').text, '3.0')"""
self.assertEqual(report_page.element_by_xpath(
self.elements.NAME).text, created_event.name)
self.assertEqual(report_page.element_by_xpath(
self.elements.DATE).text, 'Aug. 21, 2016')
self.assertEqual(report_page.element_by_xpath(
self.elements.START_TIME).text, '9 a.m.')
self.assertEqual(report_page.element_by_xpath(
self.elements.END_TIME).text, '12 p.m.')
self.assertEqual(report_page.element_by_xpath(
self.elements.HOURS).text, '3.0')"""

def test_null_values_with_empty_dataset(self):
# should return no entries
self.go_to_admin_report()
self.fill_report_form(['','','','',''])
self.assertEqual(self.driver.find_element_by_class_name(
'alert-danger').text, 'Your criteria did not return any results.')
report_page = self.report_page
report_page.fill_report_form(['','','','',''])
self.assertEqual(report_page.get_alert_box_text(),report_page.no_results_message)

def test_only_logged_shifts_are_reported(self):
# register dataset
Expand All @@ -165,47 +128,45 @@ def test_only_logged_shifts_are_reported(self):
# shift is assigned to volunteer-one, but hours have not been logged
volunteer_shift = register_volunteer_for_shift_utility(created_shift, volunteer)

report_page = self.report_page
# check admin report with null fields, should not return the above shift
self.driver.get(self.live_server_url + self.report_page)
self.fill_report_form(['','','','',''])
self.assertEqual(self.driver.find_element_by_class_name(
'alert-danger').text, 'Your criteria did not return any results.')
report_page.fill_report_form(['','','','',''])
self.assertEqual(report_page.get_alert_box_text(),report_page.no_results_message)

#Failing test case which has been documented
#Failing test case which has been documented - bug #327
#Test commented out to prevent travis build failure

"""def test_check_intersection_of_fields(self):

self.create_dataset()

self.login_admin()
self.go_to_admin_report()
report_page = self.report_page

search_parameters_1 = ['tom','','','','']
self.fill_report_form(search_parameters_1)
report_page.fill_report_form(search_parameters_1)

self.verify_shift_details('2','2.0')

search_parameters_2 = ['','','','','org-one']
self.fill_report_form(search_parameters_2)
report_page.fill_report_form(search_parameters_2)

self.verify_shift_details('3','3.0')

search_parameters_3 = ['','','event-four','Two','']
self.fill_report_form(search_parameters_3)
report_page.fill_report_form(search_parameters_3)

# 1 shift of 1:30 hrs
self.verify_shift_details('1','1.5')

search_parameters_4 = ['','','one','','']
self.fill_report_form(search_parameters_4)
report_page.fill_report_form(search_parameters_4)

# 3 shifts of 0:30 hrs, 1:00 hrs, 1:00 hrs
self.verify_shift_details('3','2.5')

# check case-insensitive
search_parameters_5 = ['','sherlock','two','','']
self.fill_report_form(search_parameters_5)
report_page.fill_report_form(search_parameters_5)

self.verify_shift_details('1','2.0')

Expand Down
Loading