def _create_project(cls, project_data, questionnaire_data): global_navigation = GlobalNavigationPage(cls.driver) dashboard_page = global_navigation.navigate_to_dashboard_page() create_questionnaire_options_page = dashboard_page.navigate_to_create_project_page( ) cls.create_questionnaire_page = create_questionnaire_options_page.select_blank_questionnaire_creation_option( ) cls.create_questionnaire_page.create_questionnaire_with( project_data, questionnaire_data) questionnaire_code = cls.create_questionnaire_page.get_questionnaire_code( ) overview_page = cls.create_questionnaire_page.save_and_create_project_successfully( ) reminder_setting_page = ProjectOverviewPage( cls.driver).navigate_to_reminder_page() reminder_setting_page.set_frequency("Week") reminder_setting_page.set_week_day("Friday") reminder_setting_page.enable_before_deadline_reminder() reminder_setting_page.save_reminders() cls.driver.wait_for_element(UI_TEST_TIMEOUT, by_css('.success-message-box'), want_visible=True) automatic_reply_sms_page = reminder_setting_page.navigate_to_automatic_reply_sms_page( ) automatic_reply_sms_page.turn_off_reply_messages() cls.questionnaire_tab_page = overview_page.navigate_to_questionnaire_tab( ) cls.driver.wait_for_page_with_title(UI_TEST_TIMEOUT, 'Questionnaire') return overview_page.get_project_title(), questionnaire_code
class TestAllData(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = setup_driver() def setUp(self): self.global_navigation = GlobalNavigationPage(self.driver) @classmethod def tearDownClass(cls): teardown_driver(cls.driver) def tearDown(self): self.global_navigation.sign_out() def login_with(self, credential): self.driver.go_to(DATA_WINNER_LOGIN_PAGE) login_page = LoginPage(self.driver) login_page.login_with(credential) @attr('functional_test') def test_should_not_display_all_failed_submission_link_for_a_simple_datasender( self): self.login_with(DATA_SENDER_CREDENTIALS) all_data_page = AllDataPage(self.driver) link_exists = all_data_page.has_all_failed_submission_link() self.assertFalse(link_exists) @attr('functional_test') def test_should_display_all_failed_submission_link_for_an_user_account( self): self.login_with(VALID_CREDENTIALS) all_data_page = self.global_navigation.navigate_to_all_data_page() link_exists = all_data_page.has_all_failed_submission_link() self.assertTrue(link_exists)
def test_should_check_if_deleted_questionnaires_and_poll_not_be_in_questionnaires_list( self): self.driver.go_to(LOGOUT) self.driver.go_to(DATA_WINNER_LOGIN_PAGE) login_page = LoginPage(self.driver) login_page.do_successful_login_with(USER_RASITEFA_CREDENTIALS) self.driver.go_to(DATA_WINNER_DASHBOARD_PAGE) dashboard_page = DashboardPage(self.driver) self.assertEqual(len(dashboard_page.get_projects_list()), 3) create_questionnaire_options_page = dashboard_page.navigate_to_create_project_page( ) create_questionnaire_page = create_questionnaire_options_page.select_blank_questionnaire_creation_option( ) create_questionnaire_page.create_questionnaire_with( NEW_PROJECT, QUESTIONNAIRE_DATA) global_navigation = GlobalNavigationPage(self.driver) project_overview_page = create_questionnaire_page.save_and_create_project_successfully( ) project_name = project_overview_page.get_project_title() all_projects_page = global_navigation.navigate_to_view_all_project_page( ) all_projects_page.delete_project(project_name) self.driver.go_to(DATA_WINNER_DASHBOARD_PAGE) dashboard_page = DashboardPage(self.driver) all_projects_page = ProjectsPage(self.driver) self.assertEqual(len(dashboard_page.get_projects_list()), 3) self.assertFalse(all_projects_page.is_project_present(project_name)) self.global_navigation.sign_out()
def add_edit_datasender(self): global_navigation = GlobalNavigationPage(self.driver) all_data_sender_page = global_navigation.navigate_to_all_data_sender_page( ) add_data_sender_page = all_data_sender_page.navigate_to_add_a_data_sender_page( ) email = generate_random_email_id() add_data_sender_page.enter_data_sender_details_from( VALID_DATA_WITH_EMAIL, email=email) success_msg = add_data_sender_page.get_success_message() self.assertIn(fetch_(SUCCESS_MESSAGE, from_(VALID_DATA_WITH_EMAIL)), success_msg) add_data_sender_page.navigate_to_datasender_page() all_data_sender_page = AllDataSendersPage(self.driver) rep_id = success_msg.replace(VALID_DATA_WITH_EMAIL[SUCCESS_MESSAGE], '') all_data_sender_page.select_a_data_sender_by_id(rep_id) all_data_sender_page.select_edit_action() time.sleep(2) edit_datasender_page = AddDataSenderPage(self.driver) edit_datasender_page.enter_data_sender_details_from( VALID_DATA_WITH_EMAIL_FOR_EDIT) self.assertRegexpMatches( edit_datasender_page.get_success_message(), fetch_(SUCCESS_MSG, from_(VALID_DATA_WITH_EMAIL_FOR_EDIT))) edit_datasender_page.navigate_to_datasender_page() all_data_sender_page = AllDataSendersPage(self.driver) all_data_sender_page.associate_datasender_to_projects( rep_id, [self.project_name]) return email
def delete_project(self): global_navigation = GlobalNavigationPage(self.driver) project_page = global_navigation.navigate_to_view_all_project_page() self.assertTrue(project_page.is_project_present(self.project_name)) project_page.delete_project(self.project_name) self.assertFalse(project_page.is_project_present(self.project_name))
def test_should_disable_checkall_cb_if_there_is_no_subjects(self): global_navigation_page = GlobalNavigationPage(self.driver) all_project_page = global_navigation_page.navigate_to_view_all_project_page( ) my_subjects_page = self.goto_my_subjects_page( all_project_page, "project having people as subject") my_subjects_page.navigate_to_my_subjects_list_tab() self.assertTrue(my_subjects_page.is_checkall_disabled())
def change_project_language(self, new_language, project_name): global_navigation = GlobalNavigationPage(self.driver) all_projects_page = global_navigation.navigate_to_view_all_project_page() project_overview_page = all_projects_page.navigate_to_project_overview_page(project_name) broadcast_message_page = project_overview_page.navigate_send_message_tab() automatic_reply_sms_page = broadcast_message_page.navigate_to_automatic_reply_sms_page() automatic_reply_sms_page.choose_automatic_reply_language(new_language) automatic_reply_sms_page.save_changes() self.assertEqual(automatic_reply_sms_page.get_success_message(), 'Your changes have been saved.')
def login_with_created_datasenders_account(self, email): global_navigation = GlobalNavigationPage(self.driver) global_navigation.sign_out() self.driver.go_to(DATA_WINNER_LOGIN_PAGE) data_sender_credentials = {USERNAME: email, PASSWORD: "******"} login_page = LoginPage(self.driver) login_page.login_with(data_sender_credentials) message = global_navigation.welcome_message() return message
def verify_project_activation(self): global_navigation = GlobalNavigationPage(self.driver) all_projects_page = global_navigation.navigate_to_view_all_project_page( ) project_overview_page = all_projects_page.navigate_to_project_overview_page( self.project_name) project_overview_page.activate_project() self.assertEqual(project_overview_page.get_status_of_the_project(), "Active")
def add_subject(self): global_navigation = GlobalNavigationPage(self.driver) global_navigation.navigate_to_all_subject_page() all_subject_type_page = AllSubjectTypePage(self.driver) add_subject_page = all_subject_type_page.select_subject_type( 'Waterpoint').navigate_to_register_subject_page() add_subject_page.add_subject_with(VALID_DATA_FOR_SUBJECT) add_subject_page.submit_subject() self.assertIn(fetch_(SUCCESS_MESSAGE, from_(VALID_DATA_FOR_SUBJECT)), add_subject_page.get_flash_message())
def test_should_not_import_bad_data_senders(self): file_name, file_path, workbook = self._prepare_fake_workbook() workbook.save(file_path) global_navigation = GlobalNavigationPage(self.driver) all_datasender_page = global_navigation.navigate_to_all_data_sender_page( ) current_ds = all_datasender_page.get_datasenders_count() self._upload_imported_datasender(file_name, file_path) self.assertEqual(all_datasender_page.get_datasenders_count(), current_ds)
def verify_submission(self, sms_log, project_name): global_navigation = GlobalNavigationPage(self.driver) view_all_project_page = global_navigation.navigate_to_view_all_project_page( ) project_overview_project = view_all_project_page.navigate_to_project_overview_page( project_name) data_page = project_overview_project.navigate_to_data_page() submission_log_page = data_page.navigate_to_all_data_record_page() self.assertRegexpMatches( submission_log_page.get_submission_message(sms_log), fetch_(SUBMISSION, from_(sms_log)))
def verify_individual_report_project_creation(self): global_navigation = GlobalNavigationPage(self.driver) dashboard_page = global_navigation.navigate_to_dashboard_page() create_project_page = dashboard_page.navigate_to_create_project_page() create_project_page.select_report_type(VALID_DATA_FOR_PROJECT) self.add_subject_type(create_project_page, VALID_SUBJECT_TYPE2[ENTITY_TYPE]) self.add_subject_type(create_project_page, VALID_SUBJECT_TYPE1[ENTITY_TYPE]) create_questionnaire_page = self.create_project(create_project_page) self.project_name = self.create_questionnaire( create_questionnaire_page)
def _create_project_and_go_to_automatic_reply_sms_page(cls, project_data, questionnaire_data): global_navigation = GlobalNavigationPage(cls.driver) dashboard_page = global_navigation.navigate_to_dashboard_page() create_questionnaire_options_page = dashboard_page.navigate_to_create_project_page() cls.create_questionnaire_page = create_questionnaire_options_page.select_blank_questionnaire_creation_option() cls.create_questionnaire_page.create_questionnaire_with(project_data, questionnaire_data) questionnaire_code = cls.create_questionnaire_page.get_questionnaire_code() overview_page = cls.create_questionnaire_page.save_and_create_project_successfully() cls.project_name = overview_page.get_project_title() cls.questionnaire_code = questionnaire_code broadcast_message_page = overview_page.navigate_send_message_tab() return broadcast_message_page.navigate_to_automatic_reply_sms_page()
def login_with_created_datasenders_account(self): self.driver.go_to(DATA_WINNER_ALL_DATA_SENDERS_PAGE) all_data_senders_page = AllDataSendersPage(self.driver) email = all_data_senders_page.get_data_sender_email_by_mobile_number(VALID_DATA_WITH_EMAIL[MOBILE_NUMBER_WITHOUT_HYPHENS]) global_navigation = GlobalNavigationPage(self.driver) global_navigation.sign_out() self.driver.go_to(DATA_WINNER_LOGIN_PAGE) data_sender_crendentials = {USERNAME: email, PASSWORD: "******"} login_page = LoginPage(self.driver) login_page.login_with(data_sender_crendentials) message = global_navigation.welcome_message() return email, message
def register_new_subject_of_type(self, subject_type, subject_data): global_navigation = GlobalNavigationPage(self.driver) global_navigation.navigate_to_all_subject_page() all_subject_type_page = AllSubjectTypePage(self.driver) add_subject_page = all_subject_type_page.select_subject_type( subject_type).navigate_to_register_subject_page() add_subject_page.add_subject_with(subject_data) add_subject_page.submit_subject() flash_message = add_subject_page.get_flash_message() message = fetch_( SUCCESS_MESSAGE, from_(subject_data)) % get_subject_short_code(flash_message) self.assertIn(message, flash_message)
def verify_admin_present_in_my_datasenders_page(self): global_navigation = GlobalNavigationPage(self.driver) all_project_page = global_navigation.navigate_to_view_all_project_page( ) project_overview_page = all_project_page.navigate_to_project_overview_page( self.project_name) my_datasenders_page = project_overview_page.navigate_to_datasenders_page( ) my_datasenders_page.search_with(self.email) self.assertTrue( self.driver.is_element_present( my_datasenders_page.get_checkbox_selector_for_datasender_row( 1)))
def add_trial_organization_with_data_sender(self): registration_confirmation_page, email = register_and_get_email_for_trial(self.driver) self.emails.append(email) activate_account(self.driver, email) global_navigation_page = GlobalNavigationPage(self.driver) create_project_page = global_navigation_page.navigate_to_dashboard_page().navigate_to_create_project_page() questionnaire_page = create_project_page.select_blank_questionnaire_creation_option() questionnaire_page.create_questionnaire_with(VALID_DATA_FOR_PROJECT, QUESTIONNAIRE_DATA) questionnaire_page.save_and_create_project_successfully() add_data_sender_page = global_navigation_page.navigate_to_all_data_sender_page().navigate_to_add_a_data_sender_page() add_data_sender_page.enter_data_sender_details_from(VALID_DATA_FOR_DATA_SENDER1) return add_data_sender_page
def test_should_import_more_than_one_data_sender(self): file_name, file_path, workbook = self._prepare_workbook() workbook.save(file_path) global_navigation = GlobalNavigationPage(self.driver) all_datasender_page = global_navigation.navigate_to_all_data_sender_page( ) self._upload_imported_datasender(file_name, file_path) self._assert_datasender_uploaded(all_datasender_page, workbook_row1) self._assert_datasender_uploaded(all_datasender_page, workbook_row2)
def verify_summary_report_project_creation(self): self.driver.wait_for_element(UI_TEST_TIMEOUT, by_css('#global_dashboard_link')) global_navigation_page = GlobalNavigationPage(self.driver) dashboard_page = global_navigation_page.navigate_to_dashboard_page() create_project_page = dashboard_page.navigate_to_create_project_page() create_project_page.create_project_with(VALID_SUMMARY_REPORT_DATA) create_project_page.continue_create_project() questionnaire_page = CreateQuestionnairePage(self.driver) overview_page = questionnaire_page.save_and_create_project_successfully( ) self.summary_project_name = overview_page.get_project_title() self.summary_project_questionnaire_code = overview_page.get_questionnaire_code( ) return overview_page
def add_subject(self, subject_type, subject_data): global_navigation = GlobalNavigationPage(self.driver) global_navigation.navigate_to_all_subject_page() add_subject_page = AddSubjectTypePage(self.driver).add_subject_type( subject_type, username=self.email, password=REGISTRATION_PASSWORD) add_subject_page = AddSubjectPage(self.driver) add_subject_page.refresh() AllSubjectTypePage(self.driver).select_subject_type( subject_type).navigate_to_register_subject_page() add_subject_page.add_subject_with(subject_data) add_subject_page.submit_subject() flash_message = add_subject_page.get_flash_message() message = fetch_( SUCCESS_MESSAGE, from_(subject_data)) % get_subject_short_code(flash_message) self.assertIn(message, flash_message)
def setUpClass(cls): HeadlessRunnerTest.setUpClass() login(cls.driver) cls.global_navigation = GlobalNavigationPage(cls.driver) cls.all_contacts_page = cls.global_navigation.navigate_to_all_data_sender_page( ) cls.unique_id = "rep" + random_number(3)
def _create_project(cls, project_data, questionnaire_data): global_navigation = GlobalNavigationPage(cls.driver) dashboard_page = global_navigation.navigate_to_dashboard_page() create_questionnaire_options_page = dashboard_page.navigate_to_create_project_page( ) cls.create_questionnaire_page = create_questionnaire_options_page.select_blank_questionnaire_creation_option( ) cls.create_questionnaire_page.create_questionnaire_with( project_data, questionnaire_data) questionnaire_code = cls.create_questionnaire_page.get_questionnaire_code( ) overview_page = cls.create_questionnaire_page.save_and_create_project_successfully( ) cls.questionnaire_tab_page = overview_page.navigate_to_questionnaire_tab( ) return overview_page.get_project_title(), questionnaire_code
def setUpClass(cls): cls.driver = setup_driver() cls.driver.go_to(DATA_WINNER_LOGIN_PAGE) login_page = LoginPage(cls.driver) login_page.do_successful_login_with(VALID_CREDENTIALS) cls.global_navigation_page = GlobalNavigationPage(cls.driver) cls.project_title = cls.create_new_project() cls.email = None
def verify_setting_customized_error_messages_for_languages(self): global_navigation = GlobalNavigationPage(self.driver) languages_page = global_navigation.navigate_to_languages_page() self.assertEquals("English", languages_page.get_selected_language()) appended_message = "ok!" languages_page.append_custom_message_for( SUCCESS_SUBMISSION_MESSAGE_LOCATOR, appended_message) languages_page.save_changes() self.assertEquals("Changes saved successfully.", languages_page.get_success_message()) #Reload english to check if changes saved languages_page.select_language("French", wait_for_load=True) languages_page.select_language("English", wait_for_load=True) self.assertIn( appended_message, languages_page.get_custom_message_for( SUCCESS_SUBMISSION_MESSAGE_LOCATOR))
def _create_project(cls, project_data, questionnaire_data): global_navigation = GlobalNavigationPage(cls.driver) dashboard_page = global_navigation.navigate_to_dashboard_page() create_questionnaire_options_page = dashboard_page.navigate_to_create_project_page() cls.create_questionnaire_page = create_questionnaire_options_page.select_blank_questionnaire_creation_option() cls.create_questionnaire_page.create_questionnaire_with(project_data, questionnaire_data) questionnaire_code = cls.create_questionnaire_page.get_questionnaire_code() cls.create_questionnaire_page.set_questionnaire_language("French") overview_page = cls.create_questionnaire_page.save_and_create_project_successfully() reminder_setting_page = ProjectOverviewPage(cls.driver).navigate_to_reminder_page()\ .click_reminder_settings_tab() reminder_setting_page.set_frequency("Week") reminder_setting_page.set_deadline_type_for_week("Same week") reminder_setting_page.set_week_day("Friday") reminder_setting_page.enable_before_deadline_reminder() reminder_setting_page.save_reminders() cls.questionnaire_tab_page = overview_page.navigate_to_questionnaire_tab() return overview_page.get_project_title(), questionnaire_code
def login(driver, credential=VALID_CREDENTIALS, landing_page=None): LoginPage(driver).load(landing_page).login_with(credential) if not landing_page: try: driver.wait_for_page_with_title(UI_TEST_TIMEOUT, "Dashboard") except Exception as e: if not driver.get_title() == "Data Submission": raise e return GlobalNavigationPage(driver)
def verify_project_creation(self): global_navigation = GlobalNavigationPage(self.driver) dashboard_page = global_navigation.navigate_to_dashboard_page() create_questionnaire_options_page = dashboard_page.navigate_to_create_project_page( ) create_questionnaire_page = create_questionnaire_options_page.select_blank_questionnaire_creation_option( ) create_questionnaire_page.create_questionnaire_with( VALID_DATA_FOR_PROJECT, QUESTIONNAIRE_DATA) index = 1 for question in fetch_(QUESTIONS, from_(QUESTIONNAIRE_DATA)): question_link_text = fetch_(QUESTION, from_(question)) self.assertEquals( create_questionnaire_page.get_question_link_text(index), question_link_text) index += 1 project_overview_page = create_questionnaire_page.save_and_create_project_successfully( ) self.project_name = project_overview_page.get_project_title()
def test_delete_data_sender_and_re_register(self): all_data_sender_page = self.page self.delete_ds(all_data_sender_page) self.assertEqual(all_data_sender_page.get_delete_success_message(), DELETE_SUCCESS_TEXT) global_navigation = GlobalNavigationPage(self.driver) global_navigation.sign_out() sms_tester_page = SMSTesterPage(self.driver) self.send_sms(VALID_SMS, sms_tester_page) self.assertEqual(sms_tester_page.get_response_message(), SMS_ERROR_MESSAGE) self.login() self.driver.go_to(DATA_WINNER_CREATE_DATA_SENDERS) add_data_sender_page = AddDataSenderPage(self.driver) add_data_sender_page.enter_data_sender_details_from(VALID_DATA) message = add_data_sender_page.get_success_message() self.assertRegexpMatches(message, fetch_(SUCCESS_MSG, from_(VALID_DATA))) self.assertNotEqual(message.split()[-1], fetch_(UID, from_(DELETE_DATA_SENDER))) self.driver.wait_until_modal_dismissed(10) global_navigation.sign_out() self.send_sms(VALID_SMS, sms_tester_page) self.assertEqual(sms_tester_page.get_response_message(), fetch_(SUCCESS_MESSAGE, from_(VALID_SMS))) self.login()
class TestAllData(HeadlessRunnerTest): def setUp(self): self.global_navigation = GlobalNavigationPage(self.driver) def tearDown(self): self.global_navigation.sign_out() @attr('functional_test') def test_should_not_display_all_failed_submission_link_for_a_simple_datasender( self): login(self.driver, DATA_SENDER_CREDENTIALS) all_data_page = AllDataPage(self.driver) link_exists = all_data_page.has_all_failed_submission_link() self.assertFalse(link_exists) @attr('functional_test') def test_should_display_all_failed_submission_link_for_an_user_account( self): login(self.driver, VALID_CREDENTIALS) all_data_page = self.global_navigation.navigate_to_all_data_page() link_exists = all_data_page.has_all_failed_submission_link() self.assertTrue(link_exists)