def test_dirty_dialog_behavior_for_add_new_language(self): self.change_reply_messages() self.language_page.select_add_new_language_option() self.assertTrue(self.is_warning_dialog_present()) self.language_page.click_revert_changes_button() self.driver.wait_for_element(UI_TEST_TIMEOUT, by_id("add_new_language_pop")) self.language_page.save_new_language("new_lang"+random_string(4)) self.assertEquals("Your language has been added successfully. Please translate the suggested automatic reply SMS text.", self.language_page.get_success_message()) self.driver.wait_until_element_is_not_present(UI_TEST_TIMEOUT, by_css(".success-message-box")) self.assertFalse(self.is_warning_dialog_present()) self.language_page.select_language("English", True) self.assertFalse(self.is_warning_dialog_present()) self.check_for_default_en_messages() self.language_page = CustomizedLanguagePage(self.driver) self.change_reply_messages() self.language_page.select_add_new_language_option() self.assertTrue(self.is_warning_dialog_present()) self.language_page.click_save_changes_button() self.driver.wait_until_element_is_not_present(UI_TEST_TIMEOUT, by_css(".success-message-box")) self.driver.wait_for_element(UI_TEST_TIMEOUT, by_id("add_new_language_pop")) self.language_page.save_new_language("new_lang"+random_string(4)) self.assertEquals("Your language has been added successfully. Please translate the suggested automatic reply SMS text.", self.language_page.get_success_message()) self.language_page.select_language("English", True) self.assertListEqual([msg + "new message" for msg in default_en_messages], self.language_page.get_all_customized_reply_messages())
def test_edit_submisssion(self): self.project_name = random_string() self.setUpFirefox() form_code = self._verify_questionnaire_creation( self.project_name, 'multiple-choices.xlsx') project_temp_name, web_submission_page = navigate_and_verify_web_submission_page_is_loaded( self.driver, self.global_navigation_page, self.project_name) self._do_web_submission( 'edit_submission_ft-check-multiple-choices.xml', project_temp_name, form_code, self.admin_email_id, 'tester150411') 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.driver.create_screenshot("debug-ft-sub-log-edit-nth-sub") web_submission_page = submission_log_page.edit_nth_submission(1) sleep(5) data = self.driver.execute_script("return dataStrToEdit;") self.driver.create_screenshot("debug-ft-edit-sub-page") expected = "<idnr>food pet rhinitis</idnr><enfant><naissance_enfant>no</naissance_enfant><poids_enfant>16</poids_enfant><nom_enfant>John</nom_enfant><date_enfant>2016-12-01</date_enfant><text>Setra</text><select_enfant>trad other</select_enfant><age_enfant>3</age_enfant></enfant><form_code>%s</form_code>" % form_code self.assertIn(expected, data) self.driver.wait_for_page_load() self.driver.create_screenshot( "debug-ft-edit-adv-submission-before-change") text_answer_locator = by_css('input[name="/' + project_temp_name + '/enfant/nom_enfant"]') web_submission_page.update_text_input(text_answer_locator, "a") self.driver.create_screenshot( "debug-ft-edit-adv-submission-after-change") self.assertFalse(web_submission_page.is_warning_dialog_displayed()) web_submission_page.navigate_to_submission_log() sleep(1) self.assertTrue(web_submission_page.is_warning_dialog_displayed()) warning_dialog = WarningDialog( self.driver, cancel_link=by_css( 'div.ui-dialog[style*="block"] > div.ui-dialog-content > div > a.dialog_cancel_link' )) warning_dialog.cancel(True) self.driver.create_screenshot( "debug-ft-edit-adv-submission-after-cancel-dialog") web_submission_page.submit(True) web_submission_page.wait_until_modal_dismissed() self.assertTrue(web_submission_page.is_success_message_tip_shown()) web_submission_page.update_text_input(text_answer_locator, "b") sleep(5) web_submission_page.navigate_to_submission_log() sleep(1) self.assertTrue(web_submission_page.is_warning_dialog_displayed()) warning_dialog.confirm() sleep(5) self.driver.wait_for_page_load() self.assertEqual(self.driver.get_title(), "Submission Log")
def test_delete_subject_type(self): subject_type = random_string(5) subject_type_page = self.page response = subject_type_page.add_subject_type(subject_type) subject_type_page.refresh() subject_page = subject_type_page.select_subject_type(subject_type) subject_page.wait_for_processing() add_subjects_page = subject_page.navigate_to_register_subject_page() add_subjects_page.add_subject_with(SUBJECT_DATA_WITHOUT_UNIQUE_ID) add_subjects_page.submit_subject() add_subjects_page.navigate_to_all_subjects() subject_type_page.click_subject_type(subject_type) subject_type_page.select_delete_action(confirm=True) self.driver.wait_until_element_is_not_present( 5, by_css("#type_message .ajax_loader_small")) message = subject_type_page.get_message() self.assertEqual(message, SUCCESSFULLY_DELETED_SUBJECT_TYPE_MSG) self.assertNotIn(subject_type, self.get_all_subjects_types()) self._verify_entity_action(subject_type) response = subject_type_page.add_subject_type(subject_type) subject_type_page.refresh() subject_page = subject_type_page.select_subject_type(subject_type) subject_page.wait_for_processing() self.assertTrue(subject_page.empty_table_text_visible())
def generate_user(): return { TITLE: "Developer", NAME: "Mino Rakoto", USERNAME: random_string(7)+"@mailinator.com", MOBILE_PHONE: random_number(9) }
def generate_user_with_existing_phone_number(): return { TITLE: "Developer", NAME: "Mino Rakoto", USERNAME: random_string(7) + "@mailinator.com", MOBILE_PHONE: 2619875 }
def test_export(self): self.setUpFirefox() self.project_name = random_string() client = Client() client.login(username=self.admin_email_id, password='******') form_code = self._verify_questionnaire_creation( self.project_name, 'image.xlsx') project_temp_name, web_submission_page = navigate_and_verify_web_submission_page_is_loaded( self.driver, self.global_navigation_page, self.project_name) self._do_web_submission('submission_data_image.xml', project_temp_name, form_code, self.admin_email_id, 'tester150411', image_upload=True) self.driver.find(by_id('submission_log_link')).click() self.driver.find_visible_element(by_id('ignore_changes')).click() self._verify_submission_log_page_images(web_submission_page) self._do_web_submission('submission_data_image.xml', project_temp_name, form_code, self.admin_email_id, 'tester150411', image_upload=True) self._verify_submission_log_page_image_2(web_submission_page) self._verify_without_media(form_code) self._verify_with_media(form_code)
def create_project_with_multiple_unique_id_of_same_type( client, questionnaire_code=random_string()): #Project with multiple same unique id questions. return create_project(client, questionnaire_code, [ clinic_unique_id_question, second_clinic_uid_question, waterpoint_unique_id_question ])
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 test_add_duplicate_subjectType(self): self.driver.go_to(url("/entity/subjects/")) subjects_page = AddSubjectTypePage(self.driver) subject_type_name = SUBJECT_TYPE + random_string(3) response = subjects_page.add_subject_type(subject_type_name) self.driver.go_to(url("/entity/subjects/")) self.validate_subject_type(subject_type_name) response = subjects_page.add_subject_type(subject_type_name) self.assertEqual(response['message'], subject_type_name+" already exists.")
def setUpClass(cls): cls.client = Client() cls.client.login(username="******", password="******") cls.unique_id = random_string() cls.project_id = create_multiple_unique_id_project( cls.client, cls.unique_id) cls.client.set_authorization('*****@*****.**', 'tester150411', method="Digest") cls.register_people_one(cls.client)
def test_should_verify_add_and_remove_question(self): self.setUpPhantom() self.project_name = random_string() self.client.login(username="******", password="******") form_code = self._verify_questionnaire_creation( self.project_name, 'simple_advance_questionnaire.xls') 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') project_temp_name, web_submission_page = navigate_and_verify_advanced_web_submission_page_is_loaded( self.driver, self.global_navigation_page, self.project_name) self._do_web_submission('submission_test_data.xml', project_temp_name, form_code, self.admin_email_id, 'tester150411', image_upload=True) self.assertEquals(11, web_submission_page.question_count()) self._verify_edit_of_questionnaire( file_name='simple_advance_questionnaire_add_qn.xls', edit_flag=True) project_temp_name, web_submission_page = navigate_and_verify_advanced_web_submission_page_is_loaded( self.driver, self.global_navigation_page, self.project_name) self.assertEquals(12, web_submission_page.question_count()) self.assertTrue(web_submission_page.has_choice(9, "Tamilnadu")) web_submission_page.select_choice(9, 0) self.assertTrue(web_submission_page.has_choice(10, "Chennai")) self.global_navigation_page.navigate_to_all_data_page() SubmissionModifiedDialog(self.driver).ignore_changes() self._do_web_submission('submission_test_data.xml', project_temp_name, form_code, self.admin_email_id, 'tester150411', image_upload=True) self._verify_edit_of_questionnaire( file_name='simple_advance_questionnaire.xls', edit_flag=True) project_temp_name, web_submission_page = navigate_and_verify_advanced_web_submission_page_is_loaded( self.driver, self.global_navigation_page, self.project_name) self.assertEquals(11, web_submission_page.question_count()) self.assertTrue(web_submission_page.has_choice(9, "Bomi")) web_submission_page.select_choice(9, 0) self.assertTrue(web_submission_page.has_choice(10, "Klay"))
def register_people_one(cls, client): cls.people_one_id = random_string() client.post('/entity/subject/create/people/', data={ "form_code": "peo", "q1": "First", "q2": "Last", "q3": "bangalore", "q4": "73,12", "q5": "1231231231", "q6": cls.people_one_id, "t": "people" })
def test_should_revert_to_original_text_based_on_system_language_for_new_languages( self): new_language = "TestLang" + random_string(4) self.language_page.add_new_language(new_language) self.driver.find(FRENCH_SYSTEM_LANGUAGE_LOCATOR).click() self.language_page = CustomizedLanguagePage(self.driver) self.language_page.select_language(new_language, True) self.language_page.revert_to_original() self.assertListEqual( default_fr_messages, self.language_page.get_all_customized_reply_messages()) self.language_page.save_changes() self.driver.find(ENGLISH_SYSTEM_LANGUAGE_LOCATOR).click()
def test_project_reply_sms_language(self): languages_page = self.automatic_reply_sms_page.choose_automatic_reply_language('new') new_language = 'kannada' + random_string(4) languages_page.add_new_language(new_language) self.assertEqual(languages_page.get_success_message(), 'Your language has been added successfully. Please translate the suggested automatic reply SMS text.') languages_page.wait_till_success_message_box_disappears() languages_page.append_custom_message_for(SUCCESS_SUBMISSION_MESSAGE_LOCATOR, 'Dhanyawaadagalu') languages_page.append_custom_message_for(SUBMISSION_WITH_ERROR_MESSAGE_LOCATOR, 'Tappu uttara') languages_page.append_custom_message_for(SUBMISSION_WITH_INCORRECT_NUMBER_OF_RESPONSES_LOCATOR, 'Tappada sankhyeya uttaragalu') languages_page.append_custom_message_for(SUBMISSION_WITH_INCORRECT_UNIQUE_ID, 'daakhaleyalli illa') languages_page.append_custom_message_for(RESPONSE_ERROR_MESSAGE_FROM_UNAUTHORIZED_SOURCE_LOCATOR, 'Nimage anumathi illa') languages_page.save_changes() self.assertEqual(languages_page.get_success_message(), 'Changes saved successfully.') time.sleep(2) self.change_project_language(new_language, self.project_name) self.driver.go_to(FAILED_SUBMISSIONS_PAGE) time.sleep(2) failed_submission_entry_count = FailedSubmissionsPage(self.driver).get_total_number_of_entries() self.driver.go_to(DATA_WINNER_SMS_TESTER_PAGE) sms_tester_page = SMSTesterPage(self.driver) sms_data = get_success_sms_data_with_questionnaire_code(self.questionnaire_code) sms_tester_page.send_sms_with(sms_data) message = sms_tester_page.get_response_message() self.assertIn('Dhanyawaadagalu', message) sms_data = get_error_sms_data_with_questionnaire_code(self.questionnaire_code) sms_tester_page.send_sms_with(sms_data) self.assertIn('Tappu uttara', sms_tester_page.get_response_message()) sms_with_incorrect_number_of_answers = get_error_sms_data_with_incorrect_number_of_answers(self.questionnaire_code) sms_tester_page.send_sms_with(sms_with_incorrect_number_of_answers) time.sleep(2) self.assertIn('Tappada sankhyeya uttaragalu', sms_tester_page.get_response_message()) sms_data = get_error_sms_data_with_incorrect_unique_id(self.questionnaire_code) sms_tester_page.send_sms_with(sms_data) self.assertIn('daakhaleyalli illa', sms_tester_page.get_response_message()) self.driver.go_to(FAILED_SUBMISSIONS_PAGE) failed_submissions_page = FailedSubmissionsPage(self.driver) current_failed_submission_entry_count = failed_submissions_page.get_total_number_of_entries() self.assertEqual(current_failed_submission_entry_count, failed_submission_entry_count+1) self.assertEqual(sms_with_incorrect_number_of_answers[SMS], failed_submissions_page.get_entry_for_row_number(1)['message'])
def test_should_delete_only_success_submissions_given_delete_all_flag_true_and_submission_type_success(self): unique_text = random_string() self.create_success_submissions(2, unique_text) self.create_errorred_submissions(1, unique_text) self.assertEqual(len(self.get_submissions('success', unique_text)), 2) resp = self.client.post('/project/' + self.form_model.id + '/submissions/delete/', {'all_selected': 'true', 'submission_type': 'success', 'search_filters': json.dumps({'search_text': unique_text, "dateQuestionFilters":{}})}) self.assertEqual(json.loads(resp.content)['success'], True) self.assertEqual(len(self.get_submissions('success', unique_text)), 0) self.assertEqual(len(self.get_submissions('error', unique_text)), 1)
def test_xlsform_with_inexesistent_question_name(self): self.project_name = random_string() file_name = 'ft_advanced_questionnaire_with_inexistent_question_name.xls' response = self.client.post(path='/xlsform/upload/?pname=' + self.project_name + '&qqfile=' + file_name, data=open( os.path.join(self.test_data, file_name), 'r').read(), content_type='application/octet-stream') self.assertEquals(response.status_code, 200) response = json.loads(response._container[0]) self.assertFalse(response.get('success')) expected_error_message = u"There is no question with name my_int1 for relevant in the question my_string" self.assertEquals(response.get('error_msg')[0], expected_error_message)
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_create_project_from_template(self): dashboard_page = self.global_navigation.navigate_to_dashboard_page() create_questionnaire_options_page = dashboard_page.navigate_to_create_project_page() create_questionnaire_options_page.select_create_questionnaire_by_template_option() self.assertEqual(create_questionnaire_options_page.get_template_name(), SELECTED_TEMPLATE_NAME) self.assertListEqual(create_questionnaire_options_page.get_template_questions(), SELECTED_TEMPLATE_QUESTIONS) create_questionnaire_page = create_questionnaire_options_page.continue_to_questionnaire_page() create_questionnaire_page.type_project_name(NEW_PROJECT_DATA) self.assertEqual(create_questionnaire_page.get_existing_questions(), SELECTED_TEMPLATE_QUESTIONS) self.driver.find(by_css("#questionnaire-code")).send_keys(random_string(5)) project_overview_page = create_questionnaire_page.save_and_create_project_successfully() self.assertIsNotNone(project_overview_page.get_project_title()) is_outgoing_sms_enabled = project_overview_page.navigate_send_message_tab().navigate_to_automatic_reply_sms_page().get_reply_messages_switch_status() self.assertTrue(is_outgoing_sms_enabled)
def test_filter_submissions_with_unique_id_filters(self): form_code = random_string(4) create_project_with_multiple_unique_id_of_same_type(self.client, form_code) answers = ["cid001 cid002 wp01", "cid003 cid004 wp03", "cid004 cid005 wp02"] for answer in answers: send_valid_sms_with({SENDER: '1234123413', RECEIVER: '919880734937', SMS: "%s %s" % (form_code, answer)}) request = {"search_filters": '{"submissionDatePicker":"All Dates", "search_text":"", "uniqueIdFilters":{"clinic":"cid001", "waterpoint":""}}', 'iDisplayStart':0,'iDisplayLength':25,'iSortCol_0':2 } res = self.client.post("/project/submissions/%s?type=analysis" % form_code, request) self.assertEqual(1, len(json.loads(res.content).get('data')), res.content) request = {"search_filters": '{"submissionDatePicker":"All Dates", "search_text":"", "uniqueIdFilters":{"clinic":"cid004", "waterpoint":""}}', 'iDisplayStart':0,'iDisplayLength':25,'iSortCol_0':2 } res = self.client.post("/project/submissions/%s?type=analysis" % form_code, request) self.assertEqual(2, len(json.loads(res.content).get('data')), res.content)
def test_should_edit_via_builder(self): self.setUpFirefox() self.project_name = random_string() self.client.login(username="******", password="******") form_code = self._verify_questionnaire_creation( self.project_name, 'simple_advance_questionnaire.xls') self.assertEqual(len(form_code), 3) projects_page = self.global_navigation_page.navigate_to_view_all_project_page( ) overview_page = projects_page.navigate_to_project_overview_page( self.project_name) questionnaire_tab_page = overview_page.navigate_to_questionnaire_tab() sleep(3) questionnaire_tab_page.select_question_in_builder(3) questionnaire_tab_page.set_question_label_in_builder( 0, 'New Text Widget') questionnaire_tab_page.set_question_hint_in_builder( 0, 'New Hint for Text Widget') questionnaire_tab_page.add_question_in_builder_at(11) questionnaire_tab_page.select_question_in_builder(11) questionnaire_tab_page.select_question_type_in_builder(1) questionnaire_tab_page.select_choice_for_question_in_builder(14, 2) questionnaire_tab_page.set_question_label_in_builder( 1, 'New Integer Widget') questionnaire_tab_page.set_question_name_in_builder(1, 'new_integer') questionnaire_tab_page.save_questionnaire_in_builder() success_message = questionnaire_tab_page.get_save_success_message() self.assertEqual(success_message, "Successfully updated", "Saving failed") questionnaire_tab_page.close_save_success_message() project_temp_name, web_submission_page = navigate_and_verify_advanced_web_submission_page_is_loaded( self.driver, self.global_navigation_page, self.project_name) self.assertEquals("New Text Widget", web_submission_page.get_label(1)) self.assertEquals("New Hint for Text Widget", web_submission_page.get_hint(1)) self.assertEquals("New Integer Widget", web_submission_page.get_label(11))
def test_should_delete_submission_when_editflag_is_false(self): self.project_name = random_string() self.client.login(username="******", password="******") file_name = 'simple_advance_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') self._verify_edit_of_questionnaire(file_name=file_name, edit_flag=False) 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.assertTrue(submission_log_page.get_total_number_of_records() == 0) self.assertEquals("Text widget", submission_log_page.get_header_text(6))
def create_unique_id_project(client, questionnaire_code=random_string()): return create_project(client, questionnaire_code, [clinic_unique_id_question])
CLINIC_PROJECT1_NAME = "clinic test project1" PROJECT_DETAILS = { PROJECT_NAME: "Waterpoint morondava", GEN_RANDOM: True, PROJECT_BACKGROUND: "This project is created by functional automation suite.", SUBJECT: "waterpoint", REPORT_TYPE: 'other subject', DEVICES: "sms", PAGE_TITLE: "Subjects" } QUESTIONNAIRE_DATA_WITH_MULTIPLE_SUBJECTS = { QUESTIONNAIRE_CODE: random_string(5), GEN_RANDOM: False, QUESTIONS: [ { QUESTION: u"Unique Id question", TYPE: UNIQUE_ID, NEW_UNIQUE_ID_TYPE: 'gaming ' + random_string(3), EXISTING_UNIQUE_ID_TYPE: '' }, { QUESTION: u"Unique Id question 2", TYPE: UNIQUE_ID, NEW_UNIQUE_ID_TYPE: 'school ' + random_string(3), EXISTING_UNIQUE_ID_TYPE: '' },
def test_should_change_label(self): self.project_name = random_string() self.client.login(username="******", password="******") form_code = self._verify_questionnaire_creation( self.project_name, 'simple_advance_questionnaire.xls') 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') project_temp_name, web_submission_page = navigate_and_verify_advanced_web_submission_page_is_loaded( self.driver, self.global_navigation_page, self.project_name) self._do_web_submission('submission_test_data.xml', project_temp_name, form_code, self.admin_email_id, 'tester150411', image_upload=True) self.assertEquals(11, web_submission_page.question_count()) self._verify_edit_of_questionnaire( file_name='simple_advance_questionnaire_label_change.xls', edit_flag=True) 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.assertFalse( submission_log_page.get_total_number_of_records() == 0) self.assertEquals("Updated Text widget", submission_log_page.get_header_text(6)) project_temp_name, web_submission_page = navigate_and_verify_advanced_web_submission_page_is_loaded( self.driver, self.global_navigation_page, self.project_name) self.assertEquals("No damn note to show", web_submission_page.get_note(0)) self.assertEquals("Updated Text widget", web_submission_page.get_label(1)) self.assertEquals( "Updated Can be short or long but always one line (type = text)", web_submission_page.get_hint(1)) web_submission_page.set_input(3, 16) self.assertEquals("Updated Requires a number less than 10", web_submission_page.get_constraint_msg(3)) web_submission_page.set_input(3, 12) self.assertFalse(web_submission_page.constraint_msg_visible(3)) web_submission_page.set_input(3, 16) self.assertTrue(web_submission_page.constraint_msg_visible(3)) self.assertFalse(web_submission_page.text_area_present(2)) self.assertTrue(web_submission_page.input_present(2)) self.assertEquals(11, web_submission_page.question_count()) self.assertTrue("new_field" in web_submission_page.get_input_name(5)) self.assertFalse( web_submission_page.input_with_name_present("my_distress")) self.assertTrue("20.31" in web_submission_page.get_input_value(4)) web_submission_page.select_choice(6, 0) self.assertFalse(web_submission_page.is_question_visible(7)) web_submission_page.select_choice(6, 1) self.assertTrue(web_submission_page.is_question_visible(7)) self.assertFalse(web_submission_page.has_choice(8, "USD")) self.assertFalse(web_submission_page.has_choice(8, "Local currency")) self.assertTrue(web_submission_page.has_choice(8, "Dollar")) self.assertTrue(web_submission_page.has_choice(8, "Rupee")) self.assertFalse(web_submission_page.has_choice(9, "Gbarpolu")) self.assertTrue(web_submission_page.has_choice(9, "Golu")) web_submission_page.select_choice(9, 0) self.assertFalse(web_submission_page.has_choice(10, "Klay")) self.assertTrue(web_submission_page.has_choice(10, "Clay"))
def test_successful_questionnaire_editing(self): """ Function to test the successful editing of a Questionnaire with given details """ create_questionnaire_page = self.create_or_navigate_to_project_questionnaire_page( ) new_questionnaire_code = "code" + random_string(3) self.verify_questions(create_questionnaire_page) def verify_warning_for_deleting_an_option_in_multi_choice_question(): create_questionnaire_page.select_question_link(5) create_questionnaire_page.delete_option_for_multiple_choice_question( 2) return self._expect_redistribute_dialog_to_be_shown( create_questionnaire_page) def verify_warning_for_adding_an_option_to_multi_choice_question(): create_questionnaire_page.select_question_link(5) create_questionnaire_page.add_option_to_a_multiple_choice_question( "new option") return self._expect_redistribute_dialog_to_be_shown( create_questionnaire_page) def verify_warning_for_numeric_range_modification(): create_questionnaire_page.select_question_link(2) create_questionnaire_page.change_number_question_limit( max_value=30, min_value=5) return self._expect_redistribute_dialog_to_be_shown( create_questionnaire_page) def verify_warning_for_word_type_for_character_length_change(): create_questionnaire_page.select_question_link(1) create_questionnaire_page.set_word_question_max_length(25) return self._expect_redistribute_dialog_to_be_shown( create_questionnaire_page) def verify_warning_for_date_format_change(): create_questionnaire_page.select_question_link(3) create_questionnaire_page.change_date_type_question(MM_DD_YYYY) return self._expect_redistribute_dialog_to_be_shown( create_questionnaire_page) def verify_warning_for_addintion_of_new_question(): new_question = { "question": "newly added question", "code": "grades", "type": "number", "min": "1", "max": "100" } time.sleep(2) create_questionnaire_page.add_question(new_question) return self._expect_redistribute_dialog_to_be_shown( create_questionnaire_page) def verify_warning_for_change_in_questionnaire_code(): create_questionnaire_page.set_questionnaire_code( new_questionnaire_code) #to get the focus out create_questionnaire_page.select_question_link(3) return self._expect_redistribute_dialog_to_be_shown( create_questionnaire_page) def verify_warning_for_change_in_question_text(): create_questionnaire_page.change_question_text( 3, "question number 3") return self._expect_redistribute_dialog_to_be_shown( create_questionnaire_page) verify_on_edit_project_page( verify_warning_for_adding_an_option_to_multi_choice_question) verify_on_edit_project_page( verify_warning_for_deleting_an_option_in_multi_choice_question) verify_on_edit_project_page( verify_warning_for_numeric_range_modification) verify_on_edit_project_page( verify_warning_for_word_type_for_character_length_change) verify_on_edit_project_page(verify_warning_for_date_format_change) verify_on_edit_project_page( verify_warning_for_addintion_of_new_question) verify_on_edit_project_page( verify_warning_for_change_in_questionnaire_code) verify_on_edit_project_page(verify_warning_for_change_in_question_text) self.sms_preview_of_questionnaire_on_the_questionnaire_tab( self.project_name) self.web_preview_of_questionnaire_on_the_questionnaire_tab() self.smart_phone_preview_of_questionnaire_on_the_questionnaire_tab() self.verify_sms_submission_after_edit(new_questionnaire_code)
import json import unittest from nose.plugins.attrib import attr from django.test import Client from framework.utils.common_utils import random_string from testdata.constants import SENDER, RECEIVER, SMS from tests.submissionlogtests.submission_log_tests import send_valid_sms_with from tests.testdatasetup.project import create_multi_choice_project form_code = random_string() VALID_SMS_BLOOD_A = { SENDER: '1234123413', RECEIVER: '919880734937', SMS: "%s a" % form_code, } @attr('functional_test') class TestAnalysisStats(unittest.TestCase): @classmethod def setUpClass(cls): cls.client = Client() cls.client.login(username='******', password='******') create_multi_choice_project(cls.client, form_code) for answer in [ "a 12.03.2014 01.2015", "b 10.05.2014 01.2015", "d 10.05.2015 03.2015", "a 10.03.2014 04.2015" ]: send_valid_sms_with({
'35' ] EXPECTED_FA_SORTED = [ '24', '27', '28', '28', '30', '32', '34', '34', '34', '34', '34', '35', '36', '37', '37', '38', '38', '38', '43', '45', '45', '45', '47', '47', '48' ] MOBILE_NUMBER_RANDOM = random_number(9) DATASENDER_DETAILS = { NAME: "Dookudu", MOBILE_NUMBER: MOBILE_NUMBER_RANDOM, COMMUNE: "MAHAVELO,AMBOTAKA,MANAKARA ATSIMO,VATOVAVY FITOVINANY", EMAIL_ADDRESS: random_string(5) + '@' + random_string(3) + '.com', GPS: "-21.7622088847 48.0690991394", SUCCESS_MSG: "Registration successful. ID is: rep" } VALID_DATA = { SENDER: MOBILE_NUMBER_RANDOM, RECEIVER: '919880734937', SMS: "cli001 .EID cid003 .NA Mr. Tessy .FA 38 .RD 17.01.2012 .BG b .SY ade .GPS 27.178057 -78.007789 .RM a", SUCCESS_MESSAGE: "Thank you" } unique_text = random_string() VALID_DATA_FOR_DELETE = { SENDER: '919049008976',
def test_should_edit_a_project_manager_as_extended_user(self): user = { TITLE: "Developer", NAME: random_string(7), USERNAME: random_string(7) + "@mailinator.com", MOBILE_PHONE: random_number(9) } new_user = { TITLE: "Developer", NAME: random_string(7), USERNAME: random_string(7) + "@mailinator.com", MOBILE_PHONE: random_number(9) } # create extended user self._create_extended_user(user) username = fetch_(USERNAME, user) password = DEFAULT_PASSWORD extended_user_credentials = {USERNAME: username, PASSWORD: password} self.global_navigation.sign_out() # Login with extended user and create project manager login(self.driver, extended_user_credentials) self.driver.wait_for_page_with_title(UI_TEST_TIMEOUT, "Dashboard") self.assertEqual("Dashboard", self.driver.get_title()) self.driver.go_to(ALL_USERS_URL) self.all_users_page = AllUsersPage(self.driver) self.assertEqual( 0, self.all_users_page.number_of_editable_users_for_role( 'Administrator'), 'Expected Administrators to be non-editable but was editable') self.assertEqual( 0, self.all_users_page.number_of_editable_users_for_role( 'Super Admin'), 'Expected Super Admin to be non-editable but was editable') self.add_user_page = self.all_users_page.navigate_to_add_user() self.add_user_page.select_questionnaires(2) self.add_user_page.add_user_with(new_user) self.add_user_page.get_success_message() username = fetch_(USERNAME, new_user) self.driver.go_to(ALL_USERS_URL) self.assertGreater( 1, self.all_users_page.number_of_editable_users_for_role( 'Super Admin'), 'Expected Super Admin to be non-editable but was editable') self.assertTrue( self.all_users_page.is_editable(username), '%s user was expected to be editable but was not editable') questionnaire_list_for_user = self.all_users_page.get_questionnaire_list_for( username) time.sleep(10) 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()) qre_pre_selected = edit_user_page.are_questionnaires_preselected( questionnaire_list_for_user, True) self.assertTrue(qre_pre_selected) selected_questionnaires = edit_user_page.select_questionnaires(3) edit_user_page.save_changes({ "mobile_phone": random_number(9), "full_name": 'New User Name' }) success_message = edit_user_page.get_success_message() self.assertEqual( USER_EDITED_SUCCESS_MESSAGE, success_message, 'Expected "User has been updated successfully" message but was not found' ) self.driver.go_to(ALL_USERS_URL) self.assertEqual('New User Name', self.all_users_page.get_full_name_for(username)) self.assertEqual( 3, len(selected_questionnaires), 'Expected the questionnaires length to be 3 but was %s' % len(selected_questionnaires))
COMMUNE: "MAHAVELO,AMBOTAKA,MANAKARA ATSIMO,VATOVAVY FITOVINANY", GPS: "-21.7622088847 48.0690991394"} ALL_DS_TO_DELETE_ARE_USER_MSG = u'You cannot delete the following Data Senders as they are DataWinners users:' NOTIFICATION_WHILE_DELETING_USER = "******" ALL_USERS_URL = url("/account/users/") TITLE = "title" FIRST_NAME = "full_name" USERNAME = "******" MOBILE_PHONE = "mobile_phone" NEW_USER_DATA = { TITLE: "Developer", FIRST_NAME: "AllDSDelete user", USERNAME: random_string(4) + "@mailinator.com", MOBILE_PHONE: random_number(9) } QUESTIONNAIRE_CODE = "questionnaire_code" GEN_RANDOM = "gen_random" DEFAULT_QUESTION = "default_question" QUESTION = "question" QUESTIONS = "questions" CODE = "code" TYPE = "type" DATE = "date" DD_MM_YYYY = "dd.mm.yyyy" DATE_FORMAT = "date_format"
def test_add_duplicate_subjectType(self): self.driver.go_to(url("/entity/subjects/")) subject_type_name = SUBJECT_TYPE + random_string(3) self.add_subject_type(subject_type_name) self.validate_subject_type(subject_type_name) self.add_subject_type(subject_type_name)