import * as React from 'react';
import { render, screen } from '@testing-library/react';
import { useCreatePath } from './useCreatePath';
import { AtRoot, SubPath } from './useCreatePath.stories';
describe('useCreatePath', () => {
beforeEach(() => {
window.history.replaceState({}, '', '/');
});
const UseCreatePath = ({ resource, type, id }: any) => {
const createPath = useCreatePath();
const path = createPath({ resource, type, id });
return
{path}
;
};
it('creates links for list views', () => {
render();
screen.getByText('/posts');
});
it('creates links for create views', () => {
render();
screen.getByText('/posts/create');
});
it('creates links for edit views', () => {
render();
screen.getByText('/posts/1234');
});
it('creates links for show views', () => {
render();
screen.getByText('/posts/1234/show');
});
it('removes double slashes', () => {
render();
screen.getByText('/posts/1234');
});
it('creates valid links when used without a basename', async () => {
render();
await screen.findByText('Home');
screen.getByText('Post list').click();
await screen.findByText('Posts');
screen.getByText('Home').click();
screen.getByText('Post detail').click();
await screen.findByText('Post 123');
});
it('creates valid links when used with a basename', async () => {
render();
await screen.findByText('Main');
screen.getByText('Go to admin').click();
await screen.findByText('Home');
screen.getByText('Post list').click();
await screen.findByText('Posts');
screen.getByText('Home').click();
screen.getByText('Post detail').click();
await screen.findByText('Post 123');
});
});