#!/usr/bin/python3

# checkpoint:
# 1. export blueprint package list (copy)
# 2. blueprint description edit/update
# 3. hostname setting
# 4. user setting
import composerlib
import testlib


@testlib.nondestructive
class TestCustom(composerlib.ComposerCase):

    def testDescription(self):
        b = self.browser
        m = self.machine

        self.login_and_go("/composer")
        b.wait_visible("#main")

        # go to blueprint openssh-server
        b.click("#openssh-server-name")

        # update description (cancel first)
        updated_description = "edit ssh server image description"
        with b.wait_timeout(300):
            b.click("a:contains('ssh server image')")
        b.wait_visible("#cmpsr-modal-edit-description")
        b.set_input_text("#textInput-modal-markup", updated_description)
        b.click("#cmpsr-modal-edit-description button:contains('Cancel')")
        b.wait_not_present("#cmpsr-modal-edit-description")
        b.wait_visible("a:contains('ssh server image')")

        # update description
        actions_drop_down_sel = ".pf-c-dropdown__toggle"
        b.click(actions_drop_down_sel)
        b.wait_attr(actions_drop_down_sel, "aria-expanded", "true")
        b.click("a:contains('Edit description')")
        b.wait_visible("#cmpsr-modal-edit-description")
        b.set_input_text("#textInput-modal-markup", updated_description)
        b.click("#cmpsr-modal-edit-description button:contains('Save')")
        b.wait_not_present("#cmpsr-modal-edit-description")
        b.wait_visible("a:contains('{}')".format(updated_description))
        # backend got updated as well
        desc = m.execute("""
            composer-cli blueprints show openssh-server | grep description | \
            awk -F '"' '{print $2}'
            """).rstrip()
        self.assertEqual(desc, updated_description)

        # collect code coverage result
        self.check_coverage()


if __name__ == '__main__':
    testlib.test_main()
