import { baseUniDriverFactory } from '../utils/test-utils/unidriver';
import { dataHooks, SKINS, TYPE_POSITIONS_MAP } from './Notification.constants';
export const notificationUniDriverFactory = (base) => {
    const getElementByDataHook = (dataHook) => base.$(`[data-hook="${dataHook}"]`);
    const notificationContent = getElementByDataHook(dataHooks.notificationContent);
    const labelText = getElementByDataHook(dataHooks.notificationLabel);
    const actionButton = getElementByDataHook(dataHooks.notificationCtaButton);
    const closeButton = getElementByDataHook(dataHooks.notificationCloseButton);
    const getSkin = async () => await base.attr('data-skin');
    const getType = async () => await base.attr('data-type');
    return {
        ...baseUniDriverFactory(base),
        visible: () => notificationContent.exists(),
        /** @deprecated use hasSkin with skin prop instead */
        hasTheme: async () => !!(await getSkin()),
        hasSkin: async () => !!(await getSkin()),
        isStandardNotification: async () => (await getSkin()) === SKINS.standard,
        isErrorNotification: async () => (await getSkin()) === SKINS.error,
        isSuccessNotification: async () => (await getSkin()) === SKINS.success,
        isWarningNotification: async () => (await getSkin()) === SKINS.warning,
        isPremiumNotification: async () => (await getSkin()) === SKINS.premium,
        getLabelText: () => labelText.text(),
        hasActionButton: () => actionButton.exists(),
        getActionButtonText: () => actionButton.text(),
        hasCloseButton: () => closeButton.exists(),
        isRelativelyPositioned: async () => (await getType()) === TYPE_POSITIONS_MAP.relative,
        isFixedPositioned: async () => (await getType()) === TYPE_POSITIONS_MAP.fixed,
        isAbsolutePositioned: async () => (await getType()) === TYPE_POSITIONS_MAP.absolute,
        clickOnCloseButton: () => closeButton.click(),
        clickOnActionButton: () => actionButton.click(),
        getZIndex: async () => {
            const style = await base._prop('style');
            return Number(style['z-index']);
        },
    };
};
//# sourceMappingURL=Notification.uni.driver.js.map