/*******************************
NE PAS MODIFIER, FICHIER GENERE
*******************************/

/**
 * Software Name : UUV
 *
 * SPDX-License-Identifier: MIT
 *
 * This software is distributed under the MIT License,
 * see the "LICENSE" file for more details
 *
 * Authors: NJAKO MOLOM Louis Fredice & SERVICAL Stanley
 * Software description: Make test writing fast, understandable by any human
 * understanding English or French.
 */

import { Then, When, } from "@badeball/cypress-cucumber-preprocessor";
import "../../../../../../cypress/commands";
import {
    click,
    findWithRoleAndName,
    findWithRoleAndNameAndAttribute,
    findWithRoleAndNameAndContent,
    findWithRoleAndNameAndContentDisable,
    findWithRoleAndNameAndContentEnable,
    findWithRoleAndNameFocused,
    notFoundWithRoleAndName,
    withinRoleAndName
} from "../../../core-engine";

import { pressKey } from "../../../_.common";

// Begin of General Section

/**
 * Selects the element whose [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and accessible [name](https://russmaxdesign.github.io/html-elements-names/) are specified <br />⚠ remember to deselect the element with <b>[I reset context](#i-reset-context)</b> if you're no longer acting on it
 * */
When(`within a section header named {string}`, function(name: string) {
    withinRoleAndName("sectionhead", name);
});

/**
 * Checks that an Html element exists with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/)
 * */
Then(`I should see a section header named {string}`, function(name: string) {
    findWithRoleAndName("sectionhead", name);
});

/**
 * Checks that an Html element does not exists with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/)
 * */
Then(
    `I should not see a section header named {string}`,
    function(name: string) {
        notFoundWithRoleAndName("sectionhead", name);
    }
);

// End of General Section

// Begin of Type Section

/**
 * Writes the sentence given as a parameter inside the specified field (useful for example to fill in a form field)
 * */
When(`I type the sentence {string} in the section header named {string}`, function(textToType: string, name: string) {
    cy.uuvFindByRole("sectionhead", { name: name }).uuvFoundedElement().type(textToType);
});

/**
 * Writes the sentence given as a parameter inside the specified field (useful for example to fill in a form field)
 * */
When(`I enter the value {string} in the section header named {string}`, function(textToType: string, name: string) {
    cy.uuvFindByRole("sectionhead", { name: name }).uuvFoundedElement().type(textToType);
});

// End of Type Section
// Begin of Content Section

/**
 * Checks that an Html element exists with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types), [name](https://russmaxdesign.github.io/html-elements-names/) and content
 * */
Then(
    `I should see a section header named {string} and containing {string}`,
    function(name: string, expectedTextContent: string) {
        findWithRoleAndNameAndContent("sectionhead", name, expectedTextContent);
    }
);

/**
 * Checks that an Html element exists with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types), [name](https://russmaxdesign.github.io/html-elements-names/) and content, and with the disabled attribute set to true
 * */
Then(
    `I should see a section header named {string} and containing {string} disabled`,
    function(name: string, expectedTextContent: string) {
        findWithRoleAndNameAndContentDisable("sectionhead", name, expectedTextContent);
    }
);

/**
 * Checks that an Html element exists with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types), [name](https://russmaxdesign.github.io/html-elements-names/) and content, and with the disabled attribute set to false
 * */
Then(
    `I should see a section header named {string} and containing {string} enabled`,
    function(name: string, expectedTextContent: string) {
        findWithRoleAndNameAndContentEnable("sectionhead", name, expectedTextContent);
    }
);

// End of Content Section




