UNPKG

wix-style-react

Version:
115 lines 5.62 kB
import { baseUniDriverFactory } from '../test-utils/utils/unidriver'; import { addItemUniDriverFactory } from '../AddItem/AddItem.uni.driver'; import { DataAttribute, DataHook } from './constants'; export const timeTableDriverFactory = base => { const byHook = dataHook => `[data-hook="${dataHook}"]`; const getElementAt = async (dataHook, index) => (await base.$$(byHook(dataHook))).get(index); async function getColumnByIndex(columnIndex) { const column = await getElementAt(DataHook.Column, columnIndex); if (!(await column.exists())) { throw new Error(`Column with index ${columnIndex} doesn't exist`); } return column; } const getColumnActions = async (columnIndex) => { const column = await getColumnByIndex(columnIndex); await column.hover(); return column.$$(byHook(DataHook.ColumnAction)); }; const getAction = async (columnIndex, actionIndex) => { const actions = await getColumnActions(columnIndex); return actions?.get(actionIndex); }; const getBooleanDataAttribute = async (element, dataAttribute) => (await element.attr(dataAttribute)) === 'true'; const getAllColumnItemElementsAt = async (columnIndex) => { const column = await getColumnByIndex(columnIndex); return column.$$(byHook(DataHook.Item)); }; const getColumnItemElementAt = async (columnIndex, itemIndex) => { const items = await getAllColumnItemElementsAt(columnIndex); return items.get(itemIndex); }; const getAddItemButtonElementAt = async (columnIndex) => { const column = await getColumnByIndex(columnIndex); await column.hover(); return addItemUniDriverFactory(column.$(byHook(DataHook.AddItemButton))); }; return { ...baseUniDriverFactory(base), /** Get column count. */ getColumnCount: async () => { return (await base.$$(byHook(DataHook.Column))).count(); }, /** Get title at column index. */ getTitleAt: async (columnIndex) => { return (await getElementAt(DataHook.Title, columnIndex)).text(); }, /** Get actions count in column with give columnIndex. */ getActionsCount: async (columnIndex) => { const actions = await getColumnActions(columnIndex); return actions.count(); }, /** Clicks at action with given column and action id */ clickActionAt: async (columnIndex, actionIndex) => { const action = await getAction(columnIndex, actionIndex); if ((await action.exists()) === false) { throw new Error(`Action at columnIndex: ${columnIndex}, actionIndex: ${actionIndex} doesn't exist`); } return addItemUniDriverFactory(action).click(); }, /** Hover column by column index. Used to display action buttons */ hoverColumn: async (columnIndex) => { const column = await getColumnByIndex(columnIndex); await column.hover(); }, /** Return label of action by column and action id */ getActionLabelAt: async (columnIndex, actionIndex) => { const action = await getAction(columnIndex, actionIndex); return action.text(); }, /** Get subtitle at column index. */ getSubtitleAt: async (columnIndex) => { return (await getElementAt(DataHook.Subtitle, columnIndex)).text(); }, /** Get active state at column index. */ isColumnActiveAt: async (columnIndex) => { const column = await getColumnByIndex(columnIndex); return getBooleanDataAttribute(column, DataAttribute.ColumnActive); }, /** Get disabled state at column index. */ isColumnDisabledAt: async (columnIndex) => { const column = await getColumnByIndex(columnIndex); return getBooleanDataAttribute(column, DataAttribute.ColumnDisabled); }, /** Get droppable state at column index. */ isColumnDroppableAt: async (columnIndex) => { const column = await getColumnByIndex(columnIndex); return getBooleanDataAttribute(column, DataAttribute.ColumnDroppable); }, /** Get item count at column index. */ getItemCountAt: async (columnIndex) => { return (await getAllColumnItemElementsAt(columnIndex)).count(); }, /** Get item disabled state at column and item index. */ isItemDisabledAt: async (columnIndex, itemIndex) => { const item = await getColumnItemElementAt(columnIndex, itemIndex); return getBooleanDataAttribute(item, DataAttribute.ItemDisabled); }, /** Get item draggable state at column and item index. */ isItemDraggableAt: async (columnIndex, itemIndex) => { const item = await getColumnItemElementAt(columnIndex, itemIndex); return getBooleanDataAttribute(item, DataAttribute.ItemDraggable); }, /** Click on add item button at column index. */ clickOnAddItemButtonAt: async (columnIndex) => { const addItemButton = await getAddItemButtonElementAt(columnIndex); return addItemButton.click(); }, /** Check if add button is shown on hover at column index. */ addItemButtonExistsAt: async (columnIndex) => { const addItemButton = await getAddItemButtonElementAt(columnIndex); return addItemButton.exists(); }, }; }; //# sourceMappingURL=TimeTable.uni.driver.js.map