import Delete from '@mui/icons-material/Delete';
import { Box } from '@mui/material';
import { IconButton } from '../..';
import { ColumnType } from '../../Listing/models';
import { DataTable } from '.';
const data = Array(5)
.fill(0)
.map((_, idx) => ({
description: `Description ${idx}`,
id: idx,
title: `Entity ${idx}`
}));
const CardActions = (): JSX.Element => {
return (
);
};
const initializeDataTableGrid = ({ hasActions, hasCardAction }): void => {
cy.viewport(1200, 590);
cy.mount({
Component: (
{data.map(({ title, description }) => (
}
description={description}
hasActions={hasActions}
hasCardAction={hasCardAction}
key={title}
title={title}
/>
))}
)
});
};
const initializeDataTableEmpty = (canCreate = false): void => {
cy.viewport(1200, 590);
cy.mount({
Component: (
)
});
};
const initializeDataTableListing = (): void => {
cy.viewport(1200, 590);
cy.mount({
Component: (
row.title,
id: 'title',
label: 'Title',
type: ColumnType.string
},
{
getFormattedString: (row) => row.description,
id: 'description',
label: 'Description',
type: ColumnType.string
}
]}
rows={data}
/>
)
});
};
describe('DataTable: Grid', () => {
it('displays items with title and description only', () => {
initializeDataTableGrid({
hasActions: false,
hasCardAction: false
});
data.forEach(({ title, description }) => {
cy.contains(title).should('be.visible');
cy.contains(description).should('be.visible');
});
cy.makeSnapshot();
});
it('displays items with actions', () => {
initializeDataTableGrid({
hasActions: true,
hasCardAction: false
});
cy.findAllByLabelText('Delete').should('have.length', 5);
cy.makeSnapshot();
});
it('displays items with card action only', () => {
initializeDataTableGrid({
hasActions: false,
hasCardAction: true
});
cy.findAllByLabelText('view').should('have.length', 5);
cy.makeSnapshot();
});
it('displays items with card action and bottom actions', () => {
initializeDataTableGrid({
hasActions: true,
hasCardAction: true
});
cy.findAllByLabelText('view').should('have.length', 5);
cy.findAllByLabelText('Delete').should('have.length', 5);
cy.makeSnapshot();
});
});
describe('DataTable: Empty', () => {
it('displays the title', () => {
initializeDataTableEmpty();
cy.contains('Welcome').should('be.visible');
cy.makeSnapshot();
});
it('displays the title and the action button', () => {
initializeDataTableEmpty(true);
cy.contains('Welcome').should('be.visible');
cy.contains('Create').should('be.visible');
cy.makeSnapshot();
});
});
describe('DataTable: Listing', () => {
it('displays the listing', () => {
initializeDataTableListing();
data.forEach(({ title, description }) => {
cy.contains(title).should('be.visible');
cy.contains(description).should('be.visible');
});
cy.makeSnapshot();
});
});