def test_verify_all_checkboxes(self, app, enrollment):
     with pytest.allure.step('Assert all checkboxes'):
         is_state_checked = is_checkbox_checked(app.enrollments_main_page.find_checkbox_is_state())
         is_contract_checked = is_checkbox_checked(app.enrollments_main_page.find_checkbox_is_contract())
         is_privilege_checked = is_checkbox_checked(app.enrollments_main_page.find_checkbox_is_privilege())
         is_hostel_checked = is_checkbox_checked(app.enrollments_main_page.find_checkbox_is_hostel())
         document_is_original = is_checkbox_checked(app.enrollments_main_page.checkbox_document_is_original)
         try:
             assert enrollment.checkbox_is_state == is_state_checked
             assert enrollment.checkbox_is_contract == is_contract_checked
             assert enrollment.checkbox_is_privilege == is_privilege_checked
             assert enrollment.checkbox_is_hostel == is_hostel_checked
             assert enrollment.checkbox_document_is_original == document_is_original
         except AssertionError:
             allure.attach('screenshot', app.enrollments_page.driver.get_screenshot_as_png(), type=AttachmentType.PNG)
             raise
    def fill_in_address_page(self, person):
        """
        Method fill in data on the address persons page
        :param person: persons model in Person format
        :return:
        """
        self.is_this_page()
        for i in range(0, len(person.burn_place)):
            self.select_birth_place(person.burn_place[i], i)

        for i in range(0, len(person.registration_place["area"])):
            self.select_registration_address(person.registration_place["area"][i], i)

        self.set_zip_code(person.registration_place["index"])
        self.reg_address_type_select(person.registration_place["type"])
        self.set_street(person.registration_place["street"])
        self.set_house(person.registration_place["house"])
        self.set_apartment(person.registration_place["apartment"])
        self.check_is_reg_and_post_addresses_the_same(person.registration_place["is_addresses_match"])
        if not is_checkbox_checked(self.driver.find_element(*self.IS_ADDRESSES_MATCH)):

            for i in range(0, len(person.post_registration_place["area"])):
                self.select_post_registration_address(person.registration_place["area"][i], i)

            self.set_post_zip_code(person.post_registration_place["index"])
            self.post_address_type_select(person.post_registration_place["type"])
            self.set_street_for_post_address(person.post_registration_place["street"])
            self.set_house_for_post_address(person.post_registration_place["house"])
            self.set_apartment_for_post_address(person.post_registration_place["apartment"])
 def test_view_enrollment(self, logout_login, enrollment, screenshot):
     with pytest.allure.step('Authorize to the application and view enrollment page'):
         app = logout_login
         app.internal_page.enrollments_page_link.click()
         app.enrollments_page.is_this_page()
     with pytest.allure.step('Search enrollment which was added'):
         actual_search = app.enrollments_page.search_enrollment(app.enrollments_page.SEARCH_METHOD["document_number"], str(enrollment.number_statements))
     with pytest.allure.step('Assert document number is the same document number which was added'):
         screenshot.assert_and_get_screenshot(app, str(enrollment.number_statements) == actual_search[0])
     with pytest.allure.step('View added enrollment'):
         app.enrollments_page.edit_button_on_first_row_click()
     with pytest.allure.step('Assert series of enrollment is the same as from input data'):
         screenshot.assert_and_get_screenshot(app, app.enrollments_main_page.find_series_of_statements().get_attribute("value") == enrollment.series_of_statements)
     with pytest.allure.step('Assert number of enrollment is the same as from input data'):
         screenshot.assert_and_get_screenshot(app, app.enrollments_main_page.find_number_statements().get_attribute("value") == str(enrollment.number_statements))
     with pytest.allure.step('Assert "is state" checkbox of enrollment is the same as from input data'):
         screenshot.assert_and_get_screenshot(app, is_checkbox_checked(app.enrollments_main_page.find_checkbox_is_state()) == enrollment.checkbox_is_state)
     with pytest.allure.step('Assert "is contract" checkbox is the same as from input data'):
         screenshot.assert_and_get_screenshot(app, is_checkbox_checked(app.enrollments_main_page.find_checkbox_is_contract()) == enrollment.checkbox_is_contract)
         assert is_checkbox_checked(app.enrollments_main_page.find_checkbox_is_contract()) == enrollment.checkbox_is_contract
     with pytest.allure.step('Assert "is privilege" checkbox is the same as from input data'):
         screenshot.assert_and_get_screenshot(app, is_checkbox_checked(app.enrollments_main_page.find_checkbox_is_contract()) == enrollment.checkbox_is_contract)
     with pytest.allure.step('Assert "is hostel" checkbox is the same as from input data'):
         screenshot.assert_and_get_screenshot(app, is_checkbox_checked(app.enrollments_main_page.find_checkbox_is_hostel()) == enrollment.checkbox_is_hostel)
         assert is_checkbox_checked(app.enrollments_main_page.find_checkbox_is_hostel()) == enrollment.checkbox_is_hostel
     with pytest.allure.step('Assert total score is the same as from input data'):
         screenshot.assert_and_get_screenshot(app, app.enrollments_main_page.find_total_score().get_attribute("value") == str(enrollment.total_score))
 def read_in_extra_person_page(self, person_new):
     """
     Method read the data on the extra persons page
     :param person_new: persons model in Person format
     :return:
     """
     common_methods = CommonMethods(self.driver)
     self.is_this_page
     person_new.birth_day = common_methods.get_value_from_text_field(
         self.driver.find_element(*self.ACTIVATE_BIRTH_DAY_CHOOSER))
     person_new.sex = self.sex_types_select().text
     person_new.marital_status = self.marital_status_select().text
     person_new.nationality = self.nationality_select().text
     person_new.private_case_chars = common_methods.get_value_from_text_field(
         self.driver.find_element(*self.PRIVATE_CASE_CHARS_INPUT)).encode('cp1251')
     person_new.private_case_number = common_methods.get_value_from_text_field(
         self.driver.find_element(*self.PRIVATE_CASE_NUMBER_INPUT))
     person_new.is_outlander = is_checkbox_checked(
         self.driver.find_element(*self.IS_A_OUTLANDER_CHECKER))
     person_new.reservist = is_checkbox_checked(
         self.driver.find_element(*self.IS_A_OUTLANDER_CHECKER))
     person_new.hostel_need = is_checkbox_checked(
         self.driver.find_element(*self.IS_A_OUTLANDER_CHECKER))
     return person_new
    def read_in_document_page(self, person_new):
        """
        Method read the data on the papers persons page
        :param person_new: persons model in Person format
        :return: person_new
        """
        common_methods = CommonMethods(self.driver)
        self.is_this_page()
        self.wait_until_page_generate()
        for index in range(1, self.get_number_of_person_documents() + 1):
            self.click_on_edit_document(index)
            document = []
            self.wait_until_page_generate()
            for web_element in self.list_with_all_visible_element_in_document():
                value_of_webelement_by_js = common_methods.get_value_from_web_element(web_element)
                document.append(value_of_webelement_by_js)

            document.append(
                is_checkbox_checked(self.driver.find_element(*self.DOCUMENT_IS_ORIGINAL)))
            document.append(
                is_checkbox_checked(self.driver.find_element(*self.DOCUMENT_IS_FOREIGN)))
            person_new.documents.append(document)

        return person_new
    def read_in_address_page(self, person_new):
        """
        Method read the data on the address persons page
        :param person_new: persons model in Person format
        :return:
        """
        common_methods = CommonMethods(self.driver)
        self.is_this_page
        self.wait_until_page_generate()

        # reading birth place
        for place in self.driver.find_elements(*self.FULL_BIRTH_PLACE_TEXT):
            person_new.burn_place.append(place.text)

        # reading registration address
        for place in self.driver.find_elements(*self.FULL_BIRTH_REGISTRATION_TEXT):
            person_new.registration_place["area"].append(place.text)

        person_new.registration_place["index"] = common_methods.get_value_from_text_field(self.driver.find_element(*self.INDEX_INPUT))
        person_new.registration_place["type"] = self.address_type_chooser().text
        person_new.registration_place["street"] = common_methods.get_value_from_text_field(self.driver.find_element(*self.STREET_INPUT)).encode('cp1251')
        person_new.registration_place["house"] = common_methods.get_value_from_text_field(self.driver.find_element(*self.HOUSE_INPUT))
        person_new.registration_place["apartment"] = common_methods.get_value_from_text_field(self.driver.find_element(*self.APARTMENT_INPUT))
        person_new.registration_place["is_addresses_match"] = is_checkbox_checked(
            self.driver.find_element(*self.IS_ADDRESSES_MATCH))

        if person_new.registration_place["is_addresses_match"]:
            person_new.post_registration_place["index"] = person_new.registration_place["index"]
            person_new.post_registration_place["type"] = person_new.registration_place["type"]
            person_new.post_registration_place["street"] = person_new.registration_place["street"]
            person_new.post_registration_place["house"] = person_new.registration_place["house"]
            person_new.post_registration_place["apartment"] = person_new.registration_place["apartment"]
            return person_new

        # reading post address
        for place in self.driver.find_elements(*self.FULL_BIRTH_POST_REGISTRATION_TEXT):
            person_new.post_registration_place["area"].append(place.text)

        person_new.post_registration_place["index"] = common_methods.get_value_from_text_field(self.driver.find_element(*self.INDEX_POST_INPUT))
        person_new.post_registration_place["type"] = common_methods.get_value_from_select(self.driver.find_element(*self.ADDRESS_TYPE_POST_CHOOSER)).encode('cp1251')
        person_new.post_registration_place["street"] = common_methods.get_value_from_text_field(self.driver.find_element(*self.STREET_POST_INPUT)).encode('cp1251')
        person_new.post_registration_place["house"] = common_methods.get_value_from_text_field(self.driver.find_element(*self.HOUSE_POST_INPUT)).encode('cp1251')
        person_new.post_registration_place["apartment"] = common_methods.get_value_from_text_field(self.driver.find_element(*self.APARTMENT_POST_INPUT))
        return person_new