Feature: Leave a feedback

    Background:
        Given visit "Home" page
        # clear input fields persistence mechanism (just speeds up the test)
        Given clear browser storages
        When press "Feedback" button at "Page content"
        Then modal of "Some feedback form example" dialog opened


    # Path of success

    Scenario: Fulfill feedback form for user support

        When enter "John Doe" in "Your name" input at "Feedback form"
        * enter "test@example.com" in "Email" input at "Feedback form"
        * choose "User support" in "Section" radio group at "Feedback form"
        * set "Consulting on product" in "Required types of support" checkbox group at "Feedback form"
        * enter "test" in "Message" textarea at "Feedback form"
        Then button "Send" at "Feedback form" is enabled
        When press "Send" button at "Feedback form"
        Then wait for "0.5" seconds
        * modal of "Some feedback form example" dialog closed
        * modal of "Data submitted from the form" dialog opened
        # technical field names are used
        * jsonView field "user_name" contains "John Doe"
        * jsonView field "email" contains "test@example.com"
        * jsonView field "section" contains "users"
        * jsonView field "support_type" contains row "0" => "product"
        * jsonView field "message" contains "test"
        * see "recaptcha" at "jsonView"



    # Validations testing

    Scenario: Feedback form validations

        # prepare state of success
        Given enter "John Doe" in "Your name" input at "Feedback form"
        * enter "test@example.com" in "Email" input at "Feedback form"
        * choose "Partnership" in "Section" radio group at "Feedback form"
        * enter "test" in "Message" textarea at "Feedback form"
        Then button "Send" at "Feedback form" is enabled

        # do not see any error message
        Then not see "Required" at "Error message"
        * not see "Must be a valid email address" at "Error message"
        * not see "Please fill all necessary form fields" at "Error message"

        # Your name
        When enter "" in "Your name" input at "Feedback form"
        Then see "Required" at "Error message"
        * button "Send" at "Feedback form" is disabled
        When enter "Jane Doe" in "Your name" input at "Feedback form"
        Then not see "Required" at "Error message"
        * button "Send" at "Feedback form" is enabled

        # Email
        When enter "" in "Email" input at "Feedback form"
        Then see "Required" at "Error message"
        * button "Send" at "Feedback form" is disabled
        When enter "test" in "Email" input at "Feedback form"
        Then see "Must be a valid email address" at "Error message"
        * button "Send" at "Feedback form" is disabled
        When enter "test@example.com" in "Email" input at "Feedback form"
        Then not see "Must be a valid email address" at "Error message"
        * button "Send" at "Feedback form" is enabled

        # Section (can not be unselected)
        * not see "Required types of support" at "Feedback form"
        When choose "User support" in "Section" radio group at "Feedback form"
        Then see "Required types of support" at "Feedback form"
        * not see "Required" at "Error message"
        * button "Send" at "Feedback form" is disabled

        # Required types of support (visible and required only if Section is User support)
        When set "Consulting on product" in "Required types of support" checkbox group at "Feedback form"
        Then not see "Required" at "Error message"
        * button "Send" at "Feedback form" is enabled

        When unset "Consulting on product" in "Required types of support" checkbox group at "Feedback form"
        Then see "Required" at "Error message"
        * button "Send" at "Feedback form" is disabled

        When set "Technical support" in "Required types of support" checkbox group at "Feedback form"
        Then not see "Required" at "Error message"
        Then button "Send" at "Feedback form" is enabled

        When unset "Technical support" in "Required types of support" checkbox group at "Feedback form"
        Then see "Required" at "Error message"
        * button "Send" at "Feedback form" is disabled

        When set "Legal support" in "Required types of support" checkbox group at "Feedback form"
        Then not see "Required" at "Error message"
        * button "Send" at "Feedback form" is enabled

        When set "Technical support" in "Required types of support" checkbox group at "Feedback form"
        Then not see "Required" at "Error message"
        Then button "Send" at "Feedback form" is enabled

        * set "Consulting on product" in "Required types of support" checkbox group at "Feedback form"
        Then not see "Required" at "Error message"
        Then button "Send" at "Feedback form" is enabled

        When unset "Technical support" in "Required types of support" checkbox group at "Feedback form"
        Then not see "Required" at "Error message"
        * button "Send" at "Feedback form" is enabled

        # Message
        When enter "" in "Message" input at "Feedback form"
        Then see "Required" at "Error message"
        * button "Send" at "Feedback form" is disabled
        When enter "The test message" in "Message" input at "Feedback form"
        Then not see "Required" at "Error message"
        * button "Send" at "Feedback form" is enabled

        # reCaptcha badge replacement warning
        * see "This site is protected by invisible reCAPTCHA and the Google Privacy Policy and Terms of Service apply." at "Feedback form"