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")
Beispiel #3
0
    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())
Beispiel #4
0
def generate_user():
    return {
        TITLE: "Developer",
        NAME: "Mino Rakoto",
        USERNAME: random_string(7)+"@mailinator.com",
        MOBILE_PHONE: random_number(9)
    }
Beispiel #5
0
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)
Beispiel #7
0
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()
Beispiel #9
0
 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.")
Beispiel #10
0
 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"))
Beispiel #12
0
 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"
                 })
Beispiel #13
0
 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()
Beispiel #14
0
    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'])
Beispiel #15
0
    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)
Beispiel #16
0
    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)
Beispiel #17
0
 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')
Beispiel #18
0
    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)
Beispiel #19
0
    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))
Beispiel #21
0
    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))
Beispiel #22
0
def create_unique_id_project(client, questionnaire_code=random_string()):
    return create_project(client, questionnaire_code,
                          [clinic_unique_id_question])
Beispiel #23
0
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)
Beispiel #26
0
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',
Beispiel #28
0
    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)