chore: reworking

Signed-off-by: blam <ben@blam.sh>

Signed-off-by: blam <ben@blam.sh>
This commit is contained in:
blam
2022-05-18 13:57:46 +02:00
parent a3ea2f4d4e
commit 1826f15069
4 changed files with 145 additions and 97 deletions
@@ -13,6 +13,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
jest.mock('./dom', () => ({
...jest.requireActual('./dom'),
useTechDocsReaderDom: jest.fn(),
}));
jest.mock('../useReaderState', () => ({
...jest.requireActual('../useReaderState'),
useReaderState: jest.fn(),
}));
import React from 'react';
import { act, waitFor } from '@testing-library/react';
@@ -25,18 +35,8 @@ import {
TechDocsReaderPageProvider,
} from '@backstage/plugin-techdocs-react';
import { renderInTestApp, TestApiProvider } from '@backstage/test-utils';
const useTechDocsReaderDom = jest.fn();
jest.mock('./dom', () => ({
...jest.requireActual('./dom'),
useTechDocsReaderDom,
}));
const useReaderState = jest.fn();
jest.mock('../useReaderState', () => ({
...jest.requireActual('../useReaderState'),
useReaderState,
}));
import { useTechDocsReaderDom } from './dom';
import { useReaderState } from '../useReaderState';
import { TechDocsReaderPageContent } from './TechDocsReaderPageContent';
const mockEntityMetadata = {
@@ -92,8 +92,10 @@ describe('<TechDocsReaderPageContent />', () => {
it('should render techdocs page content', async () => {
getEntityMetadata.mockResolvedValue(mockEntityMetadata);
getTechDocsMetadata.mockResolvedValue(mockTechDocsMetadata);
useTechDocsReaderDom.mockReturnValue(document.createElement('html'));
useReaderState.mockReturnValue({ state: 'cached' });
(useTechDocsReaderDom as jest.Mock).mockReturnValue(
document.createElement('html'),
);
(useReaderState as jest.Mock).mockReturnValue({ state: 'cached' });
await act(async () => {
const rendered = await renderInTestApp(
@@ -110,10 +112,34 @@ describe('<TechDocsReaderPageContent />', () => {
});
});
it('should render progress if there is no dom and reader state is checking', async () => {
getEntityMetadata.mockResolvedValue(mockEntityMetadata);
getTechDocsMetadata.mockResolvedValue(mockTechDocsMetadata);
(useTechDocsReaderDom as jest.Mock).mockReturnValue(undefined);
(useReaderState as jest.Mock).mockReturnValue({ state: 'CHECKING' });
await act(async () => {
const rendered = await renderInTestApp(
<Wrapper>
<TechDocsReaderPageContent withSearch={false} />
</Wrapper>,
);
await waitFor(() => {
expect(
rendered.queryByTestId('techdocs-native-shadowroot'),
).not.toBeInTheDocument();
expect(rendered.getByRole('progressbar')).toBeInTheDocument();
});
});
});
it('should not render techdocs content if entity metadata is missing', async () => {
getEntityMetadata.mockResolvedValue(undefined);
useTechDocsReaderDom.mockReturnValue(document.createElement('html'));
useReaderState.mockReturnValue({ state: 'cached' });
(useTechDocsReaderDom as jest.Mock).mockReturnValue(
document.createElement('html'),
);
(useReaderState as jest.Mock).mockReturnValue({ state: 'cached' });
await act(async () => {
const rendered = await renderInTestApp(
@@ -136,8 +162,10 @@ describe('<TechDocsReaderPageContent />', () => {
it('should render 404 if there is no dom and reader state is not found', async () => {
getEntityMetadata.mockResolvedValue(mockEntityMetadata);
getTechDocsMetadata.mockResolvedValue(mockTechDocsMetadata);
useTechDocsReaderDom.mockReturnValue(undefined);
useReaderState.mockReturnValue({ state: 'CONTENT_NOT_FOUND' });
(useTechDocsReaderDom as jest.Mock).mockReturnValue(undefined);
(useReaderState as jest.Mock).mockReturnValue({
state: 'CONTENT_NOT_FOUND',
});
await act(async () => {
const rendered = await renderInTestApp(