Skip to content

Commit

Permalink
fix(database): Handle String errors in DatabaseModal (#21709)
Browse files Browse the repository at this point in the history
  • Loading branch information
Antonio-RiveroMartnez authored Oct 6, 2022
1 parent eb2a134 commit 97273f5
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {
cleanup,
act,
} from 'spec/helpers/testing-library';
import * as hooks from 'src/views/CRUD/hooks';
import DatabaseModal from './index';

const dbProps = {
Expand Down Expand Up @@ -1269,4 +1270,94 @@ describe('DatabaseModal', () => {
expect(schemasForFileUploadText).not.toBeInTheDocument();
});
});

describe('DatabaseModal w errors as objects', () => {
jest.mock('src/views/CRUD/hooks', () => ({
...jest.requireActual('src/views/CRUD/hooks'),
useSingleViewResource: jest.fn(),
}));
const useSingleViewResourceMock = jest.spyOn(
hooks,
'useSingleViewResource',
);

useSingleViewResourceMock.mockReturnValue({
state: {
loading: false,
resource: null,
error: { _schema: 'Test Error With Object' },
},
fetchResource: jest.fn(),
createResource: jest.fn(),
updateResource: jest.fn(),
clearError: jest.fn(),
});

const renderAndWait = async () => {
const mounted = act(async () => {
render(<DatabaseModal {...dbProps} dbEngine="PostgreSQL" />, {
useRedux: true,
});
});

return mounted;
};

beforeEach(async () => {
await renderAndWait();
});

test('Error displays when it is an object', async () => {
const step2of3text = screen.getByText(/step 2 of 3/i);
const errorSection = screen.getByText(/Database Creation Error/i);
expect(step2of3text).toBeVisible();
expect(errorSection).toBeVisible();
});
});

describe('DatabaseModal w errors as strings', () => {
jest.mock('src/views/CRUD/hooks', () => ({
...jest.requireActual('src/views/CRUD/hooks'),
useSingleViewResource: jest.fn(),
}));
const useSingleViewResourceMock = jest.spyOn(
hooks,
'useSingleViewResource',
);

useSingleViewResourceMock.mockReturnValue({
state: {
loading: false,
resource: null,
error: 'Test Error With String',
},
fetchResource: jest.fn(),
createResource: jest.fn(),
updateResource: jest.fn(),
clearError: jest.fn(),
});

const renderAndWait = async () => {
const mounted = act(async () => {
render(<DatabaseModal {...dbProps} dbEngine="PostgreSQL" />, {
useRedux: true,
});
});

return mounted;
};

beforeEach(async () => {
await renderAndWait();
});

test('Error displays when it is a string', async () => {
const step2of3text = screen.getByText(/step 2 of 3/i);
const errorTitleMessage = screen.getByText(/Database Creation Error/i);
const errorMessage = screen.getByText(/Test Error With String/i);
expect(step2of3text).toBeVisible();
expect(errorTitleMessage).toBeVisible();
expect(errorMessage).toBeVisible();
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -1144,7 +1144,12 @@ const DatabaseModal: FunctionComponent<DatabaseModalProps> = ({
const errorAlert = () => {
let alertErrors: string[] = [];
if (!isEmpty(dbErrors)) {
alertErrors = typeof dbErrors === 'object' ? Object.values(dbErrors) : [];
alertErrors =
typeof dbErrors === 'object'
? Object.values(dbErrors)
: typeof dbErrors === 'string'
? [dbErrors]
: [];
} else if (!isEmpty(validationErrors)) {
alertErrors =
validationErrors?.error_type === 'GENERIC_DB_ENGINE_ERROR'
Expand Down

0 comments on commit 97273f5

Please sign in to comment.