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 test_should_add_a_new_project_manager_as_ngo_admin(self): self.add_user_page.select_role_as_project_manager() questionnaires = self.add_user_page.select_questionnaires(2) user = generate_user() self.add_user_page.add_user_with(user) message = self.add_user_page.get_success_message() self.assertEqual(message, ADDED_USER_SUCCESS_MSG) self.username = fetch_(USERNAME, user) password = DEFAULT_PASSWORD self.new_user_credential = {USERNAME: self.username, PASSWORD: password} self.driver.go_to(ALL_USERS_URL) questionnaire_list_for_user = self.all_users_page.get_questionnaire_list_for(self.username) role_for_user = self.all_users_page.get_role_for(self.username) self.assertEqual('Project Manager', role_for_user, 'Expected role to be Project Manager but was %s' % role_for_user) self.assertTrue(questionnaires[0] in questionnaire_list_for_user) self.assertTrue(questionnaires[1] in questionnaire_list_for_user) self.assertEqual(2, len(questionnaire_list_for_user), 'Expected the questionnaires length to be 2 but was %s' % len(questionnaire_list_for_user)) self.global_navigation.sign_out() login(self.driver, self.new_user_credential) title = self.driver.get_title() self.assertEqual(title, DASHBOARD_PAGE_TITLE) self.global_navigation.sign_out()
def delete_user(self, username): self.global_navigation.sign_out() login(self.driver, VALID_CREDENTIALS) self.driver.go_to(ALL_USERS_URL) all_users_page = AllUsersPage(self.driver) self.driver.find(by_xpath("//td[contains(.,'%s')]/../td/input" % username)).click() all_users_page.select_delete_action(confirm=True) self.driver.wait_for_element(UI_TEST_TIMEOUT, by_css("span.loading"), True) self.driver.wait_until_modal_dismissed() message = all_users_page.get_message() self.assertEqual(message, SUCCESSFULLY_DELETED_USER_MSG)
def test_should_check_if_org_settings_is_restricted_to_extended_user(self): add_user_page = self.all_users_page.navigate_to_add_user() add_user_page.select_role_as_administrator() user_data = generate_user() add_user_page.add_user_with(user_data) add_user_page.get_success_message() self.global_navigation.sign_out() new_user_credential = {USERNAME: user_data[USERNAME], PASSWORD: "******"} login(self.driver, new_user_credential) self.driver.go_to(ORG_SETTINGS_URL) title = self.driver.get_title() self.assertEqual(title, ACCESS_DENIED_TITLE)
def test_should_create_activity_log_and_submit_data(self): add_user_page = self.all_users_page.navigate_to_add_user() add_user_page.add_user_with(NEW_USER_DATA) self.driver.go_to(LOGOUT) new_user_credential = {USERNAME: NEW_USER_DATA[USERNAME], PASSWORD: "******"} login(self.driver, new_user_credential) self.driver.go_to(DATA_WINNER_ALL_PROJECTS_PAGE) project_name, questionnaire_code = self.create_project() self.send_submission(questionnaire_code) self.delete_user(NEW_USER_DATA[USERNAME]) self.check_sent_submission(project_name) self.check_deleted_user_name_on_activity_log_page(project_name) self.driver.go_to(LOGOUT) login(self.driver, VALID_CREDENTIALS)
def test_should_create_project_and_its_accessible_by_the_creator(self): self.global_navigation_page.sign_out() login(self.driver, USER_RASITEFA_CREDENTIALS) self.project_name = random_string() self.client.logout() self.client.login(username="******", password="******") file_name = 'ft_advanced_questionnaire.xls' form_code = self._verify_questionnaire_creation( self.project_name, file_name) self.assertEqual(len(form_code), 3) all_project_page = self.global_navigation_page.navigate_to_view_all_project_page( ) all_project_page.navigate_to_project_overview_page(self.project_name) self.assertEqual(self.driver.get_title(), u'Questionnaires - Overview')
def test_should_add_a_new_user(self): self.global_navigation = login(self.driver, VALID_CREDENTIALS) self.driver.go_to(ALL_USERS_URL) all_users_page = AllUsersPage(self.driver) add_user_page = all_users_page.navigate_to_add_user() add_user_page.add_user_with(ADD_USER_DATA) message = add_user_page.get_success_message() self.assertEqual(message, ADDED_USER_SUCCESS_MSG) username = fetch_(USERNAME, ADD_USER_DATA) password = DEFAULT_PASSWORD new_user_credential = {USERNAME: username, PASSWORD: password} self.global_navigation.sign_out() login(self.driver, new_user_credential) title = self.driver.get_title() self.assertEqual(title, DASHBOARD_PAGE_TITLE)
def go_to_reminder_page(self, project, credentials): global_navigation = login(self.driver, credentials) all_project_page = global_navigation.navigate_to_view_all_project_page( ) overview_page = all_project_page.navigate_to_project_overview_page( project) return overview_page.navigate_to_reminder_page()
def setUpClass(cls): HeadlessRunnerTest.setUpClass() login(cls.driver) cls.all_datasenders_page = AllDataSendersPage( TestAllDataSenders.driver) cls.datasender_id_with_web_access = cls.register_datasender( VALID_DATASENDER_WITH_WEB_ACCESS, id=TestAllDataSenders._create_id_for_data_sender()) cls.datasender_id_without_web_access = cls.register_datasender( VALID_DATASENDER_WITHOUT_WEB_ACCESS, id=TestAllDataSenders._create_id_for_data_sender()) cls.user_mobile_number = TestAllDataSenders.add_new_user(NEW_USER_DATA) cls.driver.go_to(DATA_WINNER_ALL_DATA_SENDERS_PAGE) cls.all_datasenders_page.wait_for_table_to_load() cls.all_datasenders_page.search_with(cls.user_mobile_number) cls.user_ID = cls.all_datasenders_page.get_cell_value(1, 7)
def test_should_change_a_project_manager_to_extended_user(self): self.global_navigation = login(self.driver, VALID_CREDENTIALS) self.driver.go_to(ALL_USERS_URL) all_users_page = AllUsersPage(self.driver) add_user_page = all_users_page.navigate_to_add_user() user = generate_user() add_user_page.select_role_as_project_manager() add_user_page.select_questionnaires(2, 4) add_user_page.add_user_with(user) message = add_user_page.get_success_message() self.assertEqual(message, ADDED_USER_SUCCESS_MSG) self.driver.go_to(ALL_USERS_URL) self.all_users_page = AllUsersPage(self.driver) username = fetch_(USERNAME, user) self.assertTrue( self.all_users_page.is_editable(username), '%s user was expected to be editable but was not editable') self.all_users_page.select_user_with_username(username) edit_user_page = self.all_users_page.select_edit_action() self.assertTrue(edit_user_page.is_user_name_is_prefetched(username)) self.assertTrue(edit_user_page.is_role_project_manager()) edit_user_page.select_role_as_administrator() edit_user_page.save_changes() edit_user_page.get_success_message() self.driver.go_to(ALL_USERS_URL) self.assertEqual('Administrator', self.all_users_page.get_role_for(username)) self.assertEqual( 'All', self.all_users_page.get_questionnaire_list_for(username)[0]) self.global_navigation.sign_out()
def test_export(self): self.client.login(username='******', password='******') self.global_navigation_page = login(self.driver, VALID_CREDENTIALS) questionnaire_code = self._verify_questionnaire_creation( self.project_name) temporary_project_name = navigate_and_verify_web_submission_page_is_loaded( self.driver, self.global_navigation_page, self.project_name) # Make 2 submissions self._do_web_submission(temporary_project_name, questionnaire_code, '*****@*****.**', 'tester150411') self._do_web_submission(temporary_project_name, questionnaire_code, '*****@*****.**', 'tester150411') resp = self.client.post( '/project/export/log?type=all', { 'project_name': self.project_name, 'search_filters': "{\"search_text\":\"\",\"dateQuestionFilters\":{}}", 'questionnaire_code': questionnaire_code }) xlfile_fd, xlfile_name = tempfile.mkstemp(".xlsx") os.write(xlfile_fd, resp.content) os.close(xlfile_fd) workbook = xlrd.open_workbook(xlfile_name) self.assertEquals(workbook.sheet_names(), [ u'main', u'rep_group1', u'my_repeat1_group1', u'my_outer_repeat1' ]) self._verify_main_sheet(workbook) self._verify_second_sheet(workbook) self._verify_third_sheet(workbook) self._verify_fourth_sheet(workbook)
def setUpClass(cls): cls.organization = DatabaseManager().get_organization_by_email(fetch_(from_(USERNAME), VALID_CREDENTIALS)) cls.organization.account_type = "Pro" cls.organization.save() HeadlessRunnerTest.setUpClass() cls.global_navigation = login(cls.driver) cls.dbm = get_db_manager('hni_testorg_slx364903')
def setUpClass(cls): cls.driver = setup_driver("phantom") cls.test_data = os.path.join(DIR, 'testdata') cls.admin_email_id = '*****@*****.**' cls.global_navigation_page = login(cls.driver, VALID_CREDENTIALS) cls.client = Client() cls.client.login(username=cls.admin_email_id, password='******')
def go_to_analysis_page(self, credentials, project_name): global_navigation = login(self.driver, credentials) all_data_page = global_navigation.navigate_to_all_data_page() analysis_page = all_data_page.navigate_to_data_analysis_page( project_name) analysis_page.wait_for_table_data_to_load() return analysis_page
def _setUp(self): self.test_data = os.path.join(DIR, 'testdata') self.admin_email_id = '*****@*****.**' self.global_navigation_page = login(self.driver, VALID_CREDENTIALS) self.client = Client() self.client.login(username=self.admin_email_id, password='******')
def test_should_add_a_new_extended_user_as_ngo_admin(self): self.add_user_page.select_role_as_administrator() user = generate_user() self.add_user_page.add_user_with(user) message = self.add_user_page.get_success_message() self.assertEqual(message, ADDED_USER_SUCCESS_MSG) self.username = fetch_(USERNAME, user) password = DEFAULT_PASSWORD self.new_user_credential = {USERNAME: self.username, PASSWORD: password} self.driver.go_to(ALL_USERS_URL) role_for_user = self.all_users_page.get_role_for(self.username) self.assertEqual('Administrator', role_for_user, 'Expected role to be Administrator but was %s' % role_for_user) self.global_navigation.sign_out() login(self.driver, self.new_user_credential) title = self.driver.get_title() self.assertEqual(title, DASHBOARD_PAGE_TITLE)
def test_should_check_if_account_settings_is_restricted_to_project_manager(self): add_user_page = self.all_users_page.navigate_to_add_user() add_user_page.select_role_as_project_manager() add_user_page.select_questionnaires(2) new_user_data = generate_user() add_user_page.add_user_with(new_user_data) add_user_page.get_success_message() self.global_navigation.sign_out() new_user_credential = {USERNAME: new_user_data[USERNAME], PASSWORD: "******"} login(self.driver, new_user_credential) self.driver.go_to(ORG_SETTINGS_URL) title = self.driver.get_title() self.assertEqual(title, ACCESS_DENIED_TITLE) self.driver.go_to(ALL_USERS_URL) title = self.driver.get_title() self.assertEqual(title, ACCESS_DENIED_TITLE)
def _create_extended_user(self, user): self.global_navigation = login(self.driver, VALID_CREDENTIALS) self.driver.go_to(ALL_USERS_URL) self.all_users_page = AllUsersPage(self.driver) self.add_user_page = self.all_users_page.navigate_to_add_user() self.add_user_page.select_role_as_administrator() self.add_user_page.add_user_with(user) self.add_user_page.get_success_message()
def test_should_create_activity_log_and_submit_data(self): add_user_page = self.all_users_page.navigate_to_add_user() user_data = generate_user() add_user_page.select_role_as_administrator() add_user_page.add_user_with(user_data) add_user_page.get_success_message() self.global_navigation.sign_out() new_user_credential = {USERNAME: user_data[USERNAME], PASSWORD: "******"} self.global_navigation = login(self.driver, new_user_credential) self.driver.go_to(DATA_WINNER_ALL_PROJECTS_PAGE) project_name, questionnaire_code = self.create_project() self.send_submission(user_data[MOBILE_PHONE], questionnaire_code) self.delete_user(user_data[USERNAME]) self.check_sent_submission(project_name) self.check_deleted_user_name_on_activity_log_page(project_name) self.global_navigation.sign_out() self.global_navigation = login(self.driver, VALID_CREDENTIALS)
def setUpClass(cls): HeadlessRunnerTest.setUpClass() cls.message_tracker = MessageTracker() cls.message_tracker.organization_id = 'YDC120930' cls.message_tracker.sms_api_usage_count = 20 cls.message_tracker.sms_registration_count = 10 cls.message_tracker.outgoing_sms_count = 50 cls.message_tracker.incoming_sms_count = 50 cls.message_tracker.sent_reminders_count = 0 cls.message_tracker.send_message_count = 0 cls.message_tracker.incoming_sp_count = 160 cls.message_tracker.incoming_web_count = 800 cls.message_tracker.month = datetime.strftime(datetime.today(), "%Y-%m-01") cls.message_tracker.save() # doing successful login with valid credentials login(cls.driver, VALID_CREDENTIALS)
def setUpClass(cls): HeadlessRunnerTest.setUpClass() cls.global_navigation = login(cls.driver) dashboard_page = cls.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( )
def test_should_create_project_when_xlsform_is_uploaded(self): self.setUpFirefox() self.project_name = random_string() file_name = 'ft_advanced_questionnaire.xls' form_code = self._verify_questionnaire_creation( self.project_name, file_name) project_temp_name, web_submission_page = navigate_and_verify_web_submission_page_is_loaded( self.driver, self.global_navigation_page, self.project_name) self._verify_datawinners_university() web_submission_page.navigate_to_datasenders_page() self._verify_datawinners_university() datasender_page = ProjectDataSendersPage(self.driver) datasender_page.search_with("1234123413").\ select_a_data_sender_by_mobile_number("1234123413").perform_datasender_action(by_css(".remove")) datasender_page.refresh() datasender_page.navigate_to_analysis_page() self._verify_datawinners_university() DataAnalysisPage(self.driver).navigate_to_web_submission_tab() web_submission_page = AdvancedWebSubmissionPage(self.driver) self._do_web_submission('submission_data.xml', project_temp_name, form_code, self.admin_email_id, 'tester150411') self._verify_submission_log_page(web_submission_page) datasender_rep_id, ds_email = self._register_datasender() self._verify_datawinners_university() self.driver.wait_for_page_with_title(UI_TEST_TIMEOUT, "Data Submission") datasender_page = DataSenderPage(self.driver) datasender_page.send_in_data() verify_advanced_web_submission_page_is_loaded(self.driver) self._verify_datawinners_university() self._do_web_submission('submission_data.xml', project_temp_name, form_code, ds_email, NEW_PASSWORD) self.global_navigation_page.sign_out() self.global_navigation_page = login(self.driver, VALID_CREDENTIALS) submission_log_page = self.global_navigation_page.navigate_to_all_data_page( ).navigate_to_submission_log_page( self.project_name).wait_for_table_data_to_load() self._verify_datawinners_university() self.assertEqual(submission_log_page.get_total_number_of_records(), 2) self._verify_date_filters(submission_log_page) submission_log_page.search(datasender_rep_id) submission_log_page.check_submission_by_row_number( 1).click_action_button().choose_on_dropdown_action(EDIT_BUTTON) verify_advanced_web_submission_page_is_loaded(self.driver) self._edit_and_verify_submission(datasender_rep_id, project_temp_name, True) self._verify_edit_of_questionnaire(file_name) self._verify_datawinners_university()
def setUpClass(cls): cls.test_passed = True cls.driver = setup_driver("firefox") cls.admin_email_id = '*****@*****.**' cls.global_navigation_page = login(cls.driver, VALID_CREDENTIALS) cls.client = Client() cls.client.login(username=cls.admin_email_id, password='******') cls.testdata = os.path.join(DIR, 'testdata') cls.user = User.objects.get(username=VALID_CREDENTIALS.get('username'))
def setUpClass(cls): HeadlessRunnerTest.setUpClass() languages_page = login(cls.driver).navigate_to_languages_page() languages_page.select_language('English') languages_page.update_message_for_selector( SUBMISSION_WITH_INCORRECT_NUMBER_OF_RESPONSES_LOCATOR, 'Updated') languages_page.save_changes() assert languages_page.get_success_message( ) == 'Changes saved successfully.'
def _create_project_manager(self, user): self.global_navigation = login(self.driver, VALID_CREDENTIALS) self.driver.go_to(ALL_USERS_URL) self.all_users_page = AllUsersPage(self.driver) self.add_user_page = self.all_users_page.navigate_to_add_user() self.add_user_page.select_role_as_project_manager() self.add_user_page.select_questionnaires(1, 0) self.add_user_page.add_user_with(user) self.add_user_page.get_success_message()
def test_should_add_a_new_project_manager_as_extended_user(self): self.add_user_page.select_role_as_administrator() user = generate_user() self.add_user_page.add_user_with(user) message = self.add_user_page.get_success_message() self.assertEqual(message, ADDED_USER_SUCCESS_MSG) self.username = fetch_(USERNAME, user) password = DEFAULT_PASSWORD self.new_user_credential = {USERNAME: self.username, PASSWORD: password} self.global_navigation.sign_out() login(self.driver, self.new_user_credential) title = self.driver.get_title() self.assertEqual(title, DASHBOARD_PAGE_TITLE) self.driver.go_to(ALL_USERS_URL) self.all_users_page = AllUsersPage(self.driver) self.add_user_page = self.all_users_page.navigate_to_add_user() self.assertFalse(self.add_user_page.is_administrator_role_visible(), 'Expected Administrator Role not to be present but it was present') questionnaires = self.add_user_page.select_questionnaires(2) user = generate_user() self.add_user_page.add_user_with(user) message = self.add_user_page.get_success_message() self.assertEqual(message, ADDED_USER_SUCCESS_MSG) self.username = fetch_(USERNAME, user) password = DEFAULT_PASSWORD self.new_user_credential = {USERNAME: self.username, PASSWORD: password} self.driver.go_to(ALL_USERS_URL) questionnaire_list_for_user = self.all_users_page.get_questionnaire_list_for(self.username) role_for_user = self.all_users_page.get_role_for(self.username) self.assertEqual('Project Manager', role_for_user, 'Expected role to be Project Manager but was %s' % role_for_user) if not questionnaires[0] in questionnaire_list_for_user: self.driver.create_screenshot("debug-ft-qre-not-in-list") raise Exception("%s not in [%s] for user %s" % (questionnaires[0], ", ".join(questionnaire_list_for_user), self.username)) self.assertTrue(questionnaires[0] in questionnaire_list_for_user) self.assertTrue(questionnaires[1] in questionnaire_list_for_user) self.assertEqual(2, len(questionnaire_list_for_user), 'Expected the questionnaires length to be 2 but was %s' % len(questionnaire_list_for_user)) self.global_navigation.sign_out() login(self.driver, self.new_user_credential) title = self.driver.get_title() self.assertEqual(title, DASHBOARD_PAGE_TITLE)
def dissociate_all_datasenders_from_clinic3_project(self): global_navigation = login(self.driver, VALID_CREDENTIALS) all_project_page = global_navigation.navigate_to_view_all_project_page() overview_page = all_project_page.navigate_to_project_overview_page("clinic3 test project") ds_page = overview_page.navigate_to_datasenders_page() ds_page.click_checkall_checkbox() number = ds_page.get_number_of_selected_datasenders() if number != 0 : ds_page.perform_datasender_action(by_css(".remove")) self.driver.wait_for_page_load() self.driver.go_to(LOGOUT)
def setUpClass(cls): HeadlessRunnerTest.setUpClass() cls.message_tracker = MessageTracker() cls.message_tracker.organization_id = 'YDC120930' cls.message_tracker.sms_api_usage_count = 20 cls.message_tracker.sms_registration_count = 10 cls.message_tracker.outgoing_sms_count = 50 cls.message_tracker.incoming_sms_count = 50 cls.message_tracker.sent_reminders_count = 0 cls.message_tracker.send_message_count = 0 cls.message_tracker.incoming_sp_count = 160 cls.message_tracker.incoming_web_count = 800 cls.message_tracker.month = datetime.strftime(datetime.today(), "%Y-%m-01") cls.message_tracker.save() # doing successful login with valid credentials from datawinners.accountmanagement.models import Organization org = Organization.objects.get(org_id="YDC120930") org.active_date = datetime.now() org.status_changed_datetime = datetime.now() org.save() login(cls.driver, VALID_CREDENTIALS)
def test_should_show_warning_when_trying_to_leave_page_without_saving( self): self.global_navigation = login(self.driver, VALID_CREDENTIALS) self.driver.go_to(ALL_USERS_URL) all_users_page = AllUsersPage(self.driver) all_users_page.select_user_with_username("*****@*****.**") edit_user_page = all_users_page.select_edit_action() edit_user_page.select_role_as_administrator() self.driver.refresh() expected_msg = u'This page is asking you to confirm that you want to leave - data you have entered may not be saved.' alert = self.driver.switch_to_alert() self.assertEqual(alert.text, expected_msg)
def test_should_add_question_successfully(self): login(self.driver, VALID_CREDENTIALS) self.driver.go_to(url("/entity/subjects/")) add_subject_type_page = AddSubjectTypePage(self.driver) add_subject_type_page.click_on_accordian_link() entity_type = VALID_ENTITY[ENTITY_TYPE] + generateId() add_subject_type_page.successfully_add_entity_type_with(entity_type) self.driver.go_to(url("/entity/subject/create/" + entity_type)) subjects_page = ProjectSubjectsPage(self.driver) subjects_page.click_edit_form_link_and_continue() subjects_page.click_add_question_link() subjects_page.type_question_name('New Question') subjects_page.choose_question_type('text') self.assertEqual("New Question", subjects_page.get_selected_question_label()) existing_question_count = subjects_page.get_existing_questions_count() subjects_page.click_submit_button() self.assertTrue(subjects_page.is_success_message_tip_show()) subjects_page.refresh() self.assertEqual(subjects_page.get_existing_questions_count(), existing_question_count, "Newly added question should be persisted")