mangroveorg/datawinners

View on GitHub
func_tests/pages/AutomaticReplySmsPage/automatic_reply_sms_page.py

Summary

Maintainability
A
1 hr
Test Coverage
import time
from selenium.common.exceptions import NoSuchElementException
from framework.utils.common_utils import by_css, by_id
from framework.utils.drop_down_web_element import DropDown
from pages.AutomaticReplySmsPage.automatic_reply_sms_page_locators import AVAILABLE_LANGUAGES_DROPDOWN_ID, PROJECT_LANGUAGE_PAGE_SAVE_BUTTON, PROJECT_LANGUAGE_PAGE_SUCCESS_MESSAGE_BOX, NEW_LANGUAGE_CREATE_SELECTOR
from pages.languagespage.customized_languages_page import CustomizedLanguagePage
from pages.page import Page
from pages.projectoverviewpage.project_overview_locator import TEST_QUESTIONNAIRE_LINK
from pages.smstesterlightbox.sms_tester_light_box_page import SMSTesterLightBoxPage
from tests.testsettings import UI_TEST_TIMEOUT


class AutomaticReplySmsPage(Page):
    def __init__(self, driver):
        Page.__init__(self, driver)
        self.driver.wait_for_element(UI_TEST_TIMEOUT, AVAILABLE_LANGUAGES_DROPDOWN_ID,)
        self.language_drop_down = DropDown(self.driver.find(AVAILABLE_LANGUAGES_DROPDOWN_ID))


    def choose_automatic_reply_language(self, language):
        if language == 'new':
            self.driver.find(NEW_LANGUAGE_CREATE_SELECTOR).click()
            self.driver.wait_for_page_with_title(UI_TEST_TIMEOUT, 'Languages')
            return CustomizedLanguagePage(self.driver)
        self.language_drop_down.set_selected_by_text(language)

    def save_changes(self):
        self.driver.find(PROJECT_LANGUAGE_PAGE_SAVE_BUTTON).click()
        self.driver.wait_for_element(UI_TEST_TIMEOUT, by_css('.success-message-box'), True)

    def get_success_message(self):
        return self.driver.find(PROJECT_LANGUAGE_PAGE_SUCCESS_MESSAGE_BOX).text

    def turn_off_reply_messages(self):
        try:
            on_off_switch = self.driver.find_visible_element(by_css('.onoffswitch-checked'))
            on_off_switch.click()
        except Exception:
            pass
        self.save_changes()
        time.sleep(2)
        self.driver.wait_for_page_load()

    def turn_on_reply_messages(self):
        try:
            self.driver.find_visible_element(by_css('.onoffswitch-checked'))
        except Exception:
            self.driver.find_visible_element(by_css('.onoffswitch')).click()
        self.save_changes()

    def is_language_selection_enabled(self):
        return self.driver.find(AVAILABLE_LANGUAGES_DROPDOWN_ID).is_enabled()

    def get_reply_messages_switch_status(self):
        try:
            self.driver.find_visible_element(by_css('.onoffswitch-checked'))
            return True
        except Exception:
            return False

    def open_sms_tester_light_box(self):
        self.driver.wait_for_element(UI_TEST_TIMEOUT,TEST_QUESTIONNAIRE_LINK,True)
        self.driver.find(TEST_QUESTIONNAIRE_LINK).click()
        self.driver.wait_for_element(UI_TEST_TIMEOUT, by_css('.mobile'), True)
        return SMSTesterLightBoxPage(self.driver)