"use strict";
// The require scope
var __webpack_require__ = {};
/************************************************************************/ // webpack/runtime/compat_get_default_export
(()=>{
    // getDefaultExport function for compatibility with non-ESM modules
    __webpack_require__.n = function(module) {
        var getter = module && module.__esModule ? function() {
            return module['default'];
        } : function() {
            return module;
        };
        __webpack_require__.d(getter, {
            a: getter
        });
        return getter;
    };
})();
// webpack/runtime/define_property_getters
(()=>{
    __webpack_require__.d = function(exports1, definition) {
        for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
            enumerable: true,
            get: definition[key]
        });
    };
})();
// webpack/runtime/has_own_property
(()=>{
    __webpack_require__.o = function(obj, prop) {
        return Object.prototype.hasOwnProperty.call(obj, prop);
    };
})();
/************************************************************************/ var __webpack_exports__ = {};
const react_namespaceObject = require("@chakra-ui/react");
const external_testing_library_react_namespaceObject = require("@testing-library/react");
const test_utils_namespaceObject = require("react-dom/test-utils");
const external_FormField_js_namespaceObject = require("./FormField.js");
var external_FormField_js_default = /*#__PURE__*/ __webpack_require__.n(external_FormField_js_namespaceObject);
describe('FormField', ()=>{
    test('should render field with a label', ()=>{
        (0, external_testing_library_react_namespaceObject.render)(/*#__PURE__*/ React.createElement(external_FormField_js_default(), {
            label: "Text input"
        }, /*#__PURE__*/ React.createElement(react_namespaceObject.Input, {
            "data-testid": "input",
            name: "text",
            type: "text",
            placeholder: "Enter text"
        })));
        const label = external_testing_library_react_namespaceObject.screen.getByText('Text input');
        const input = external_testing_library_react_namespaceObject.screen.getByTestId('input');
        expect(label).toBeVisible();
        expect(input).toBeVisible();
    });
    test('should render field with a ReactNode (JSX) label', ()=>{
        (0, external_testing_library_react_namespaceObject.render)(/*#__PURE__*/ React.createElement(external_FormField_js_default(), {
            label: /*#__PURE__*/ React.createElement("span", {
                "data-testid": "jsx-label"
            }, "Text ", /*#__PURE__*/ React.createElement("em", null, "input"), " with ", /*#__PURE__*/ React.createElement(react_namespaceObject.Link, {
                href: "#"
            }, "link"))
        }, /*#__PURE__*/ React.createElement(react_namespaceObject.Input, {
            "data-testid": "input",
            name: "text",
            type: "text",
            placeholder: "Enter text"
        })));
        const label = external_testing_library_react_namespaceObject.screen.getByTestId('jsx-label');
        const link = external_testing_library_react_namespaceObject.screen.getByRole('link', {
            name: /link/i
        });
        const input = external_testing_library_react_namespaceObject.screen.getByTestId('input');
        expect(label).toBeVisible();
        expect(link).toBeInTheDocument();
        expect(input).toBeVisible();
    });
    test('should show helpText if prop is present', ()=>{
        (0, external_testing_library_react_namespaceObject.render)(/*#__PURE__*/ React.createElement(external_FormField_js_default(), {
            label: "Text input",
            helpText: "Help text"
        }, /*#__PURE__*/ React.createElement(react_namespaceObject.Input, {
            "data-testid": "input",
            name: "text",
            type: "text",
            placeholder: "Enter text"
        })));
        expect(external_testing_library_react_namespaceObject.screen.getByText('Help text')).toBeVisible();
    });
    test('should show errorText if isInvalid=true', ()=>{
        (0, external_testing_library_react_namespaceObject.render)(/*#__PURE__*/ React.createElement(external_FormField_js_default(), {
            label: "Text input",
            helpText: "Help text",
            isInvalid: true,
            errorText: "Error message"
        }, /*#__PURE__*/ React.createElement(react_namespaceObject.Input, {
            "data-testid": "input",
            name: "text",
            type: "text",
            placeholder: "Enter text"
        })));
        expect(external_testing_library_react_namespaceObject.screen.getByText('Error message')).toBeVisible();
    });
    test('should prevent focus and onClick when isDisabled=true', ()=>{
        const mockOnClick = jest.fn();
        (0, external_testing_library_react_namespaceObject.render)(/*#__PURE__*/ React.createElement(external_FormField_js_default(), {
            label: "Text input",
            helpText: "Help text",
            isDisabled: true
        }, /*#__PURE__*/ React.createElement(react_namespaceObject.Input, {
            "data-testid": "input",
            name: "text",
            type: "text",
            placeholder: "Enter text",
            onClick: mockOnClick
        })));
        const input = external_testing_library_react_namespaceObject.screen.getByTestId('input');
        // Try to focus
        (0, test_utils_namespaceObject.act)(()=>input.focus());
        expect(input).not.toHaveFocus();
        // Try to change the value
        external_testing_library_react_namespaceObject.fireEvent.input(input, {
            target: {
                value: 'text'
            }
        });
        expect(mockOnClick).not.toHaveBeenCalled();
    });
});
var __webpack_export_target__ = exports;
for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
    value: true
});
