Esempio n. 1
0
    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
Esempio n. 2
0
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)
Esempio n. 3
0
    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()
Esempio n. 4
0
    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
Esempio n. 5
0
    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())
Esempio n. 7
0
 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.')
Esempio n. 8
0
 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)
Esempio n. 12
0
 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)
Esempio n. 14
0
 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
Esempio n. 16
0
 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)
Esempio n. 17
0
 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)))
Esempio n. 18
0
    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
Esempio n. 21
0
 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)
Esempio n. 22
0
 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
Esempio n. 24
0
 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
Esempio n. 25
0
 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
Esempio n. 27
0
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)
Esempio n. 28
0
    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()
Esempio n. 29
0
    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()
Esempio n. 30
0
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)