Skip to content

Commit

Permalink
test(@leav/ui): add LinkField test
Browse files Browse the repository at this point in the history
  • Loading branch information
Delmotte-Vincent committed Apr 5, 2024
1 parent f6f7a47 commit f566bd0
Showing 1 changed file with 75 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,15 @@ describe('LinkField', () => {
beforeEach(() => jest.clearAllMocks());

test('Display list of values', async () => {
_renderLinkField({element: mockFormElementLink});
_renderLinkField({
element: {
...mockFormElementLink,
attribute: {
...mockFormElementLink.attribute,
multiple_values: true
}
}
});

expect(screen.getByRole('table')).toBeInTheDocument();
expect(screen.getAllByRole('row')).toHaveLength(1);
Expand Down Expand Up @@ -171,7 +179,16 @@ describe('LinkField', () => {
}
];

_renderLinkField({element: {...mockFormElementLinkWithColumns, values: recordValuesWithColumns}});
_renderLinkField({
element: {
...mockFormElementLinkWithColumns,
values: recordValuesWithColumns,
attribute: {
...mockFormElementLink.attribute,
multiple_values: true
}
}
});

expect(screen.getByRole('table')).toBeInTheDocument();
expect(screen.getAllByRole('cell')).toHaveLength(3);
Expand All @@ -180,22 +197,43 @@ describe('LinkField', () => {
});

test('If no value, display a button to add a value', async () => {
_renderLinkField({element: {...mockFormElementLink, values: []}});
_renderLinkField({
element: {
...mockFormElementLink,
values: [],
attribute: {
...mockFormElementLink.attribute,
multiple_values: true
}
}
});

expect(screen.getAllByRole('table').length).toBeGreaterThanOrEqual(1);
expect(screen.getByRole('button', {name: /add/, hidden: true})).toBeInTheDocument();
});

test('If no value and cannot add, display a message', async () => {
_renderLinkField({
element: {...mockFormElementLink, attribute: {...mockFormElementLink.attribute, readonly: true}, values: []}
element: {
...mockFormElementLink,
attribute: {...mockFormElementLink.attribute, readonly: true, multiple_values: true},
values: []
}
});

expect(screen.getByText('record_edition.no_value')).toBeInTheDocument();
});

test('Can edit and delete linked record', async () => {
_renderLinkField({element: {...mockFormElementLink}});
_renderLinkField({
element: {
...mockFormElementLink,
attribute: {
...mockFormElementLink.attribute,
multiple_values: true
}
}
});

const row = screen.getByRole('row', {name: /record/});
userEvent.hover(row);
Expand All @@ -205,7 +243,15 @@ describe('LinkField', () => {
});

test('Can delete all values', async () => {
_renderLinkField({element: {...mockFormElementLink}});
_renderLinkField({
element: {
...mockFormElementLink,
attribute: {
...mockFormElementLink.attribute,
multiple_values: true
}
}
});

const deleteAllValuesButton = screen.getByRole('button', {name: /delete-all-values/, hidden: true});
expect(deleteAllValuesButton).toBeInTheDocument();
Expand Down Expand Up @@ -245,7 +291,15 @@ describe('LinkField', () => {
});

test('Can display value details', async () => {
_renderLinkField({element: {...mockFormElementLink}});
_renderLinkField({
element: {
...mockFormElementLink,
attribute: {
...mockFormElementLink.attribute,
multiple_values: true
}
}
});

const valueDetailsButtons = screen.getAllByRole('button', {name: /info/, hidden: true});
expect(valueDetailsButtons).toHaveLength(2);
Expand All @@ -255,6 +309,20 @@ describe('LinkField', () => {
expect(mockEditRecordDispatch.mock.calls[0][0].type).toBe(EditRecordReducerActionsTypes.SET_ACTIVE_VALUE);
});

it('should render MonoValueSelect', () => {
const mockFormElementLinkNoMultivalue: FormElement<{}> = {
...mockFormElementLink,
attribute: {
...mockFormElementLink.attribute,
multiple_values: false
}
};

_renderLinkField({element: {...mockFormElementLinkNoMultivalue}});

expect(screen.getByRole('combobox')).toBeVisible();
});

describe('Values list', () => {
const mockFormElementLinkMultivalue: FormElement<{}> = {
...mockFormElementLink,
Expand Down

0 comments on commit f566bd0

Please sign in to comment.