#####
##### This file is part of Mail-in-a-Box-LDAP which is released under the
##### terms of the GNU Affero General Public License as published by the
##### Free Software Foundation, either version 3 of the License, or (at
##### your option) any later version. See file LICENSE or go to
##### https://github.com/downtownallday/mailinabox-ldap for full license
##### details.
#####


class RoundcubeAutomation(object):
    def __init__(self, d):
        ''' `d` is a browser.automation TestDriver object '''
        self.d = d
        
    def wait_for_login_screen(self, secs=5):
        d = self.d
        d.say("Wait for login screen")
        d.wait_for_el('#rcmloginuser', secs=secs)

    def login(self, login, pw):
        d = self.d
        d.say("Login %s to roundcube", login)
        d.find_el('#rcmloginuser').send_text(login)
        d.find_el('#rcmloginpwd').send_text(pw)
        d.find_el('#rcmloginsubmit').click()
        
    def logout(self):
        d = self.d
        d.say("Logout of roundcube")
        el = d.wait_for_el('a.logout', must_be_enabled=True).click()

    def open_inbox(self):
        d = self.d
        d.say("Open inbox")
        d.find_el('a.mail').click()
        
    def wait_for_inbox(self, secs=10):
        d = self.d
        d.say("Wait for inbox")
        d.wait_for_el('body.task-mail')
        d.wait_for_el('a.logout', must_be_enabled=True, secs=secs)

    def open_settings(self):
        d = self.d
        d.say("Open settings")
        d.find_el('a.settings').click()

    def wait_for_settings(self, secs=10):
        d = self.d
        d.say("Wait for settings")
        d.wait_for_el('body.task-settings', secs=secs)

    def open_contacts(self):
        d = self.d
        d.say("Open contacts")
        d.find_el('a.contacts').click()

    def wait_for_contacts(self, secs=10):
        d = self.d
        d.say("Wait for contacts")
        d.wait_for_el('body.task-addressbook', secs=secs)