civicrm-update-tester/civicrm_tester/steeringcommittee_print_lab...

63 lines
2.4 KiB
Python

import io
from pdfminer.high_level import extract_text
from selenium.webdriver.common.keys import Keys
from .base import SearchExportTester
class SteeringCommitteePrintLabels(SearchExportTester):
"""Tests the pdf labels for the SteeringCommitee show all contacts names"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.title("Steering Committee Print Labels")
self.desc(
"Testing the pdf labels for the SteeringCommittee show all contacts names"
)
self.group_dropdown = "s2id_autogen2"
self.search_button = "_qf_Basic_refresh"
self.mail_label_option = "select2-result-label-19"
# Using this to count amount of people in the exported pdf
# This will fail if someone is added that doesn't have a UK adddress
self.pdf_search_string = "UNITED KINGDOM"
def _test(self):
self.browser.get(self.search_url)
group_dropdown = self.find_element_by_id(self.group_dropdown)
group_dropdown.click()
group_dropdown.send_keys("Steering Committee" + Keys.ENTER)
self.find_element_by_id(self.search_button).click()
self._wait_for_search_to_load()
result_no = self._get_contact_search_number()
self.debug("exporting results using the magic dropdown")
self._select_option_from_magic_dropdown(self.mail_label_option)
# By omitting the field, we are effectively disabling the do not mail filter
data = {
"_qf_default": "Label:submit",
# Smallest labels, will show 24 contacts on one page
"label_name": "3475",
"location_type_id": "",
"_qf_Label_submit": "Make+Mailing+Labels"
}
res = self.download_export(data)
pdf_text = extract_text(io.BytesIO(res.content))
label_count = pdf_text.count(self.pdf_search_string)
if result_no == label_count:
self.passed(
"no missing mailing labels from pdf export. Expected: %d, Actual %d"
% (result_no, label_count)
)
else:
self.failed(
"missing mailing labels from the pdf export. Expected: %d, Actual %d"
% (result_no, label_count)
)
def test(self):
try:
self.login()
self._test()
finally:
self.logout()
self.browser.close()