def prepare_subject_type(cls): cls.driver.go_to(DATA_WINNER_ALL_SUBJECT) add_subject_type_page = AddSubjectTypePage(cls.driver) add_subject_type_page.click_on_accordian_link() cls.subject_type = SUBJECT_TYPE + generateId() cls.subject_type = cls.subject_type.strip() add_subject_type_page.add_entity_type_with(cls.subject_type)
def successful_registration_with(self, registration_data): registration_data = dict(registration_data) # create a copy so we don't modify in place email = registration_data[EMAIL] + generateId() + "@ngo.com" registration_data[EMAIL] = email registration_data[ADMIN_MOBILE_NUMBER] = str(get_epoch_last_ten_digit()) self.register_with(registration_data) return RegistrationConfirmationPage(self.driver), email
def successful_registration_with(self, registration_data): self.driver.find_text_box(ORGANIZATION_NAME_TB).enter_text( fetch_(ORGANIZATION_NAME, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_SECTOR_DD).enter_text( fetch_(ORGANIZATION_SECTOR, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_ADDRESS_TB).enter_text( fetch_(ORGANIZATION_ADDRESS, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_CITY_TB).enter_text( fetch_(ORGANIZATION_CITY, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_STATE_TB).enter_text( fetch_(ORGANIZATION_STATE, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_COUNTRY_TB).enter_text( fetch_(ORGANIZATION_COUNTRY, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_ZIPCODE_TB).enter_text( fetch_(ORGANIZATION_ZIPCODE, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_OFFICE_PHONE_TB).enter_text( fetch_(ORGANIZATION_OFFICE_PHONE, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_WEBSITE_TB).enter_text( fetch_(ORGANIZATION_WEBSITE, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_TITLE_TB).enter_text( fetch_(TITLE, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_FIRST_NAME_TB).enter_text( fetch_(FIRST_NAME, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_LAST_NAME_TB).enter_text( fetch_(LAST_NAME, from_(registration_data))) email = fetch_(EMAIL, from_(registration_data)) + generateId() + "@ngo.com" self.driver.find_text_box(ORGANIZATION_EMAIL_TB).enter_text(email) self.driver.find_text_box(ORGANIZATION_PASSWORD_TB).enter_text( fetch_(REGISTRATION_PASSWORD, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_CONFIRM_PASSWORD_TB).enter_text( fetch_(REGISTRATION_CONFIRM_PASSWORD, from_(registration_data))) self.driver.find(ORGANIZATION_REGISTER_BTN).click() return (RegistrationConfirmationPage(self.driver), email)
def test_add_new_subject_type(self): add_subject_type_page = self.page entity_type = VALID_ENTITY[ENTITY_TYPE] + generateId() response = add_subject_type_page.add_subject_type(entity_type) add_subject_type_page.refresh() self.assertTrue( add_subject_type_page.check_subject_type_on_page(entity_type))
def successful_registration_with(self, registration_data): self.driver.find_text_box(ORGANIZATION_NAME_TB).enter_text( fetch_(ORGANIZATION_NAME, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_SECTOR_DD).enter_text( fetch_(ORGANIZATION_SECTOR, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_ADDRESS_TB).enter_text( fetch_(ORGANIZATION_ADDRESS, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_CITY_TB).enter_text( fetch_(ORGANIZATION_CITY, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_STATE_TB).enter_text( fetch_(ORGANIZATION_STATE, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_COUNTRY_TB).enter_text( fetch_(ORGANIZATION_COUNTRY, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_ZIPCODE_TB).enter_text( fetch_(ORGANIZATION_ZIPCODE, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_OFFICE_PHONE_TB).enter_text( fetch_(ORGANIZATION_OFFICE_PHONE, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_WEBSITE_TB).enter_text( fetch_(ORGANIZATION_WEBSITE, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_TITLE_TB).enter_text( fetch_(TITLE, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_FIRST_NAME_TB).enter_text( fetch_(FIRST_NAME, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_LAST_NAME_TB).enter_text( fetch_(LAST_NAME, from_(registration_data))) email = fetch_(EMAIL, from_(registration_data)) + generateId() + "@ngo.com" self.driver.find_text_box(ORGANIZATION_EMAIL_TB).enter_text(email) self.driver.find_text_box(ORGANIZATION_PASSWORD_TB).enter_text( fetch_(REGISTRATION_PASSWORD, from_(registration_data))) self.driver.find_text_box(ORGANIZATION_CONFIRM_PASSWORD_TB).enter_text( fetch_(REGISTRATION_CONFIRM_PASSWORD, from_(registration_data))) self.driver.find(ORGANIZATION_REGISTER_BTN).click() return (RegistrationConfirmationPage(self.driver), email)
def successfully_register_subject_with(self, registration_data): """ Function to fill data with random short name and submit on register a subject page Args: registration_data is data to fill in the different fields like short name, location, Geo Code, description and mobile number Return flash message """ entity_type = fetch_(ENTITY_TYPE, from_(registration_data)) self.driver.find(ENTITY_TYPE_DD).click() self.driver.find(by_css(DROP_DOWN_OPTION_CSS % entity_type)).click() self.driver.find_text_box(NAME_TB).enter_text(fetch_(NAME, from_(registration_data))) short_name = fetch_(SHORT_NAME, from_(registration_data)) if not fetch_(AUTO_GENERATE, from_(registration_data)): self.driver.find(AUTO_GENERATE_CB).click() short_name = short_name + generateId() time.sleep(3) self.driver.find_text_box(SHORT_NAME_ENABLED_TB).enter_text(short_name) self.driver.find_text_box(LOCATION_TB).enter_text( fetch_(LOCATION, from_(registration_data))) self.driver.find_text_box(GEO_CODE_TB).enter_text( fetch_(GPS, from_(registration_data))) self.driver.find_text_box(DESCRIPTION_TB).enter_text( fetch_(DESCRIPTION, from_(registration_data))) self.driver.find_text_box(MOBILE_NUMBER_TB).enter_text( fetch_(MOBILE_NUMBER, from_(registration_data))) self.driver.find(ADD_BTN).click() return fetch_(SUCCESS_MSG, from_(registration_data)) + short_name
def add_subject_with(self, addition_data): """ Function to fill addition_data with random short name and submit on add a subject page Args: registration_data is addition_data to fill in the different fields like short name, location, Geo Code, description and mobile number Return flash message """ short_name = fetch_(SUB_UNIQUE_ID, from_(addition_data)) if short_name is not None: self.driver.find(AUTO_GENERATE_CB).click() short_name = short_name + generateId() self.driver.find_text_box(UNIQUE_ID_TB).enter_text(short_name) self.driver.find_text_box(FNAME_TB).enter_text( fetch_(SUB_FIRST_NAME, from_(addition_data))) self.driver.find_text_box(LNAME_TB).enter_text( fetch_(SUB_LAST_NAME, from_(addition_data))) self.driver.find_text_box(LOCATION_TB).enter_text( fetch_(LOCATION, from_(addition_data))) self.driver.find_text_box(GEO_CODE_TB).enter_text( fetch_(GPS, from_(addition_data))) self.driver.find_text_box(MOBILE_NUMBER_TB).enter_text( fetch_(MOBILE_NUMBER, from_(addition_data)))
def successfully_create_project_with(self, project_data): """ Function to enter and save the data on set up project page Args: registration_data is data to fill in the different fields like first name, last name, telephone number and commune Return self """ project_name = fetch_(PROJECT_NAME, from_(project_data)) gen_ramdom = fetch_(GEN_RANDOM, from_(project_data)) if gen_ramdom: project_name = project_name + generateId() self.driver.find_text_box(PROJECT_NAME_TB).enter_text(project_name) self.driver.find_text_box(PROJECT_BACKGROUND_TB).enter_text( fetch_(PROJECT_BACKGROUND, from_(project_data))) # Selecting radio button according to given option project_type = fetch_(PROJECT_TYPE, from_(project_data)) if project_type == "survey": self.driver.find(SURVEY_PROJECT_RB).click() elif project_type == "public information": self.driver.find(PUBLIC_INFORMATION_RB).click() report_type = fetch_(REPORT_TYPE, from_(project_data)) if report_type == "data sender work": self.driver.find(DATA_SENDER_RB).click() elif report_type == "other subject": self.driver.find(OTHER_SUBJECT_RB).click() subject = fetch_(SUBJECT, from_(project_data)) if len(subject) != 0: self.driver.execute_script( "document.getElementById('id_entity_type').value = '" + subject + "';") # Selecting check box according to given options devices = fetch_(DEVICES, from_(project_data)).split(",") comm_utils = CommonUtilities(self.driver) # Selecting and Deselecting SMS checkbox for devices as per given option if "sms" in devices: if not (comm_utils.is_element_present(SMS_CB_CHECKED)): self.driver.find(SMS_CB).toggle() elif comm_utils.is_element_present(SMS_CB_CHECKED): self.driver.find(SMS_CB).toggle() # Selecting and Deselecting Smart phone checkbox for devices as per # given option # if "smartphone" in devices: # if not(comm_utils.is_element_present(SMART_PHONE_CB_CHECKED)): # self.driver.find(SMART_PHONE_CB).toggle() # elif comm_utils.is_element_present(SMART_PHONE_CB_CHECKED): # self.driver.find(SMART_PHONE_CB).toggle() # #Selecting and Deselecting Web checkbox for devices as per given option # if "web" in devices: # if not(comm_utils.is_element_present(WEB_CB_CHECKED)): # self.driver.find(WEB_CB).toggle() # elif comm_utils.is_element_present(WEB_CB_CHECKED): # self.driver.find(WEB_CB).toggle() self.driver.find(SAVE_CHANGES_BTN).click() return CreateSubjectQuestionnairePage(self.driver)
def test_add_new_subject_type(self): add_subject_type_page = self.page add_subject_type_page.click_on_accordian_link() entity_type = VALID_ENTITY[ENTITY_TYPE] + generateId() all_subject_page = add_subject_type_page.successfully_add_entity_type_with( entity_type) self.assertTrue( all_subject_page.check_subject_type_on_page(entity_type))
def type_project_name(self, project_data): project_name = fetch_(PROJECT_NAME, from_(project_data)) try: gen_random = fetch_(GEN_RANDOM, from_(project_data)) except KeyError: gen_random = False if gen_random: project_name += generateId() self.driver.find_text_box(PROJECT_NAME_TB).enter_text(project_name)
def successfully_create_project_with(self, project_data): """ Function to enter and save the data on set up project page Args: registration_data is data to fill in the different fields like first name, last name, telephone number and commune Return self """ project_name = fetch_(PROJECT_NAME, from_(project_data)) gen_ramdom = fetch_(GEN_RANDOM, from_(project_data)) if gen_ramdom: project_name = project_name + generateId() self.driver.find_text_box(PROJECT_NAME_TB).enter_text(project_name) self.driver.find_text_box(PROJECT_BACKGROUND_TB).enter_text( fetch_(PROJECT_BACKGROUND, from_(project_data))) # Selecting radio button according to given option project_type = fetch_(PROJECT_TYPE, from_(project_data)) if project_type == "survey": self.driver.find(SURVEY_PROJECT_RB).click() elif project_type == "public information": self.driver.find(PUBLIC_INFORMATION_RB).click() report_type = fetch_(REPORT_TYPE, from_(project_data)) if report_type == "data sender work": self.driver.find(DATA_SENDER_RB).click() elif report_type == "other subject": self.driver.find(OTHER_SUBJECT_RB).click() subject = fetch_(SUBJECT, from_(project_data)) if len(subject) != 0: self.driver.execute_script("document.getElementById('id_entity_type').value = '" + subject + "';") # Selecting check box according to given options devices = fetch_(DEVICES, from_(project_data)).split(",") comm_utils = CommonUtilities(self.driver) # Selecting and Deselecting SMS checkbox for devices as per given option if "sms" in devices: if not(comm_utils.is_element_present(SMS_CB_CHECKED)): self.driver.find(SMS_CB).toggle() elif comm_utils.is_element_present(SMS_CB_CHECKED): self.driver.find(SMS_CB).toggle() # Selecting and Deselecting Smart phone checkbox for devices as per # given option # if "smartphone" in devices: # if not(comm_utils.is_element_present(SMART_PHONE_CB_CHECKED)): # self.driver.find(SMART_PHONE_CB).toggle() # elif comm_utils.is_element_present(SMART_PHONE_CB_CHECKED): # self.driver.find(SMART_PHONE_CB).toggle() # #Selecting and Deselecting Web checkbox for devices as per given option # if "web" in devices: # if not(comm_utils.is_element_present(WEB_CB_CHECKED)): # self.driver.find(WEB_CB).toggle() # elif comm_utils.is_element_present(WEB_CB_CHECKED): # self.driver.find(WEB_CB).toggle() self.driver.find(SAVE_CHANGES_BTN).click() return CreateSubjectQuestionnairePage(self.driver)
def successfully_add_entity_type_with(self, entity_data): """ Function to enter randomly generated entity type in the text box and click on the Add button . Args: 'entity_data' is entity name Return self """ entity_type = fetch_(ENTITY_TYPE, from_(entity_data)) + generateId() self.driver.find_text_box(NEW_SUBJECT_TB).enter_text(entity_type) self.driver.find(ADD_BTN).click() return self
def successfully_add_entity_type_with(self, entity_data): """ Function to enter randomly generated entity type in the text box and click on the Add button . Args: 'entity_data' is entity name Return self """ entity_type = fetch_(ENTITY_TYPE, from_(entity_data)) + generateId() self.driver.find_text_box(NEW_SUBJECT_TB).enter_text(entity_type) self.driver.find(ADD_BTN).click() return self
def test_should_add_question_successfully(self): login(self.driver) 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() self.assertEqual("Question", subjects_page.get_selected_question_label()) subjects_page.click_submit_button() self.assertTrue(subjects_page.is_success_message_tip_show())
def create_questionnaire_to_work_performed_subjects_with(self, questionnaire_data): """ Function to create a questionnaire on the 'create questionnaire' page Args: questionnaire_data is data to fill in the different fields of the questionnaire page Return self """ questionnaire_code = fetch_(QUESTIONNAIRE_CODE, from_(questionnaire_data)) gen_ramdom = fetch_(GEN_RANDOM, from_(questionnaire_data)) if gen_ramdom: questionnaire_code = questionnaire_code + generateId() self.driver.find_text_box(QUESTIONNAIRE_CODE_TB).enter_text(questionnaire_code) for question in fetch_(QUESTIONS, from_(questionnaire_data)): self.add_question(question) return self
def create_questionnaire_with(self, project_data, questionnaire_data): """ Function to create a questionnaire on the 'create questionnaire' page Args: questionnaire_data is data to fill in the different fields of the questionnaire page Return self """ self.type_project_name(project_data) questionnaire_code = fetch_(QUESTIONNAIRE_CODE, from_(questionnaire_data)) gen_ramdom = fetch_(GEN_RANDOM, from_(questionnaire_data)) if gen_ramdom: questionnaire_code = questionnaire_code + generateId() if fetch_(QUESTIONNAIRE_CODE, from_(questionnaire_data)): self.driver.find_text_box(QUESTIONNAIRE_CODE_TB).enter_text(questionnaire_code) self.add_questions(questionnaire_data) return self
def create_questionnaire_with(self, questionnaire_data): """ Function to create a questionnaire on the 'create questionnaire' page Args: questionnaire_data is data to fill in the different fields of the questionnaire page Return self """ questionnaire_code = fetch_(QUESTIONNAIRE_CODE, from_(questionnaire_data)) gen_ramdom = fetch_(GEN_RANDOM, from_(questionnaire_data)) if gen_ramdom: questionnaire_code = questionnaire_code + generateId() self.driver.find_text_box(QUESTIONNAIRE_CODE_TB).enter_text(questionnaire_code) self.create_default_question(questionnaire_data[DEFAULT_QUESTION], DEFAULT_QUESTION_LINK) for question in fetch_(QUESTIONS, from_(questionnaire_data)): self.driver.find(ADD_A_QUESTION_LINK).click() self.fill_question_and_code_tb(question) self.SELECT_FUNC[fetch_(TYPE, from_(question))](question) return self
def test_successfully_giving_web_access_to_newly_registered_data_sender( self): data_sender_mobile_number = VALID_DATA_FOR_ADDING_DATASENDER.get( MOBILE_NUMBER) all_project_page = self.all_projects_page() project_overview_page = all_project_page.navigate_to_project_overview_page( fetch_(PROJECT_NAME, from_(VALID_DATA))) project_datasenders_page = project_overview_page.navigate_to_datasenders_page( ) add_data_sender_page = project_datasenders_page.navigate_to_add_a_data_sender_page( ) add_data_sender_page.enter_data_sender_details_from( VALID_DATA_FOR_ADDING_DATASENDER, UNIQUE_ID) self.driver.wait_until_modal_dismissed() success_message = add_data_sender_page.get_success_message() self.assertEqual(success_message, SUCCESS_MSG_ADDED_DS) project_datasenders_page = project_overview_page.navigate_to_datasenders_page( ) self.assertEqual( "--", project_datasenders_page.get_data_sender_email_by_mobile_number( data_sender_mobile_number)) project_datasenders_page.select_a_data_sender_by_mobile_number( data_sender_mobile_number) unique_email = "mickey" + generateId() + "@duck.com" project_datasenders_page.give_web_access(unique_email) self.driver.wait_until_modal_dismissed(25) assigned_email = project_datasenders_page.get_data_sender_email_by_mobile_number( data_sender_mobile_number) self.assertEqual(unique_email, assigned_email) account_page = project_datasenders_page.navigate_to_account_page() account_page.select_user_tab() self.assertFalse(account_page.is_user_present(unique_email))
def test_should_add_question_successfully(self): 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")
def create_questionnaire_with(self, questionnaire_data): """ Function to create a questionnaire on the 'create questionnaire' page Args: questionnaire_data is data to fill in the different fields of the questionnaire page Return self """ questionnaire_code = fetch_(QUESTIONNAIRE_CODE, from_(questionnaire_data)) gen_ramdom = fetch_(GEN_RANDOM, from_(questionnaire_data)) if gen_ramdom: questionnaire_code = questionnaire_code + generateId() self.driver.find_text_box(QUESTIONNAIRE_CODE_TB).enter_text( questionnaire_code) self.create_default_question(questionnaire_data[DEFAULT_QUESTION], DEFAULT_QUESTION_LINK) for question in fetch_(QUESTIONS, from_(questionnaire_data)): self.driver.find(ADD_A_QUESTION_LINK).click() self.fill_question_and_code_tb(question) self.SELECT_FUNC[fetch_(TYPE, from_(question))](question) return self
def enter_sms_text(self): self.driver.find_text_box(SMS_TEXTBOX).enter_text("what" + generateId() + "?")
def set_questionnaire_title(self, title, generate_random=False): questionnaire_title = title + generateId( ) if generate_random else title self.driver.find_text_box( by_css(".questionnaire_title")).enter_text(questionnaire_title) return questionnaire_title
def enter_email(self, registration_data): email_address_prefix = fetch_(EMAIL_ADDRESS, from_(registration_data)) generated_email_address = email_address_prefix + generateId() + "@abc.com" self.driver.find_text_box(EMAIL_TB).enter_text(generated_email_address)
def set_poll_questionnaire_title(self, title, generate_random=False): poll_title = title + generateId() if generate_random else title self.driver.wait_for_element(UI_TEST_TIMEOUT, by_id("poll_title"), True) self.driver.find_text_box(by_id("poll_title")).enter_text(poll_title) return poll_title