Exemplo n.º 1
0
class SSUIBaseLoggedInPage(View):
    """This page should be subclassed by any page that models any other page that is available as
    logged in.
    """
    flash = View.nested(FlashMessages)
    # TODO don't use `help` here, its a built-in
    help = SSUIHelpNavDropdown()
    navigation = SSUIVerticalNavigation('//ul[@class="list-group"]')
    domain_switcher = Button(id="domain-switcher")
    shopping_cart = Text('.//li/a[@title="Shopping cart"]')
    settings = SSUISettingsNavDropdown()

    @property
    def is_displayed(self):
        return self.logged_in_as_current_user

    def logged_in_as_user(self, user):
        if self.logged_out:
            return False
        return user.name == self.current_fullname

    @property
    def logged_in_as_current_user(self):
        return self.logged_in_as_user(self.extra.appliance.user)

    # TODO remove this property, it is erroneous. View properties should be returning data from UI
    @property
    def current_username(self):
        try:
            return self.extra.appliance.user.principal
        except AttributeError:
            return None

    @property
    def current_fullname(self):
        return self.settings.text

    @property
    def logged_in(self):
        return (self.settings.is_displayed and self.shopping_cart.is_displayed)

    @property
    def logged_out(self):
        return not self.logged_in

    def logout(self):
        self.settings.select_item('Logout')
        self.browser.handle_alert(wait=None)
        self.extra.appliance.user = None
Exemplo n.º 2
0
class SSUIBaseLoggedInPage(View):
    """This page should be subclassed by any page that models any other page that is available as
    logged in.
    """
    flash = FlashMessages('div#flash_text_div')
    help = NavDropdown('.//li[./a[@id="dropdownMenu1"]]')
    navigation = SSUIVerticalNavigation('//ul[@class="list-group"]')
    domain_switcher = Button(id="domain-switcher")
    shopping_cart = Text('.//li/a[@title="Shopping cart"]')

    @ParametrizedView.nested
    class settings(ParametrizedView):  # noqa
        PARAMETERS = ("user_name",)
        setting = NavDropdown(ParametrizedLocator('.//li[./a[@title={user_name|quote}]]'))

        def text(self):
            return self.setting.text

        def is_displayed(self):
            return self.setting.is_displayed

        def select_item(self, option):
            return self.setting.select_item(option)

    @property
    def is_displayed(self):
        return self.logged_in_as_current_user

    def logged_in_as_user(self, user):
        if self.logged_out:
            return False
        return user.name == self.current_fullname

    @property
    def logged_in_as_current_user(self):
        return self.logged_in_as_user(self.extra.appliance.user)

    @property
    def current_username(self):
        try:
            return self.extra.appliance.user.principal
        except AttributeError:
            return None

    @property
    def current_fullname(self):
        return self.settings(self.extra.appliance.user.credential.principal).text()

    @property
    def logged_in(self):
        return (
            self.settings(self.extra.appliance.user.credential.principal).is_displayed() and
            self.shopping_cart.is_displayed)

    @property
    def logged_out(self):
        return not self.logged_in

    def logout(self):
        self.settings(self.extra.appliance.user.credential.principal).select_item('Logout')
        self.browser.handle_alert(wait=None)
        self.extra.appliance.user = None