diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d129ff33..2d112c6f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -14,3 +14,4 @@ jobs:
node-version: 16.15
with-mutation-tests: true
publish-coverage: true
+ force-install: true
diff --git a/.github/workflows/deploy-preview.yml b/.github/workflows/deploy-preview.yml
index b958cc37..76b02a48 100644
--- a/.github/workflows/deploy-preview.yml
+++ b/.github/workflows/deploy-preview.yml
@@ -19,7 +19,7 @@ jobs:
node-version: 16.15
- name: Build
run: |
- npm ci && \
+ npm ci --force && \
node ./scripts/set-homepage.js /shlink-web-client/${GITHUB_HEAD_REF#refs/heads/} && \
rm src/service-worker.ts && \
npm run build
diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml
index 1ab257a4..52d82e65 100644
--- a/.github/workflows/publish-release.yml
+++ b/.github/workflows/publish-release.yml
@@ -16,7 +16,7 @@ jobs:
with:
node-version: 16.15
- name: Generate release assets
- run: npm ci && VERSION=${GITHUB_REF#refs/tags/v} npm run build:dist
+ run: npm ci --force && VERSION=${GITHUB_REF#refs/tags/v} npm run build:dist
- name: Publish release with assets
uses: docker://antonyurchenko/git-release:latest
env:
diff --git a/test/short-urls/Paginator.test.tsx b/test/short-urls/Paginator.test.tsx
index 0e611429..a7a12ab5 100644
--- a/test/short-urls/Paginator.test.tsx
+++ b/test/short-urls/Paginator.test.tsx
@@ -1,15 +1,17 @@
-import { shallow, ShallowWrapper } from 'enzyme';
-import { PaginationItem, PaginationLink } from 'reactstrap';
+import { render, screen } from '@testing-library/react';
import { Mock } from 'ts-mockery';
+import { MemoryRouter } from 'react-router-dom';
import { Paginator } from '../../src/short-urls/Paginator';
import { ShlinkPaginator } from '../../src/api/types';
import { ELLIPSIS } from '../../src/utils/helpers/pagination';
describe('', () => {
- let wrapper: ShallowWrapper;
const buildPaginator = (pagesCount?: number) => Mock.of({ pagesCount, currentPage: 1 });
-
- afterEach(() => wrapper?.unmount());
+ const setUp = (paginator?: ShlinkPaginator, currentQueryString?: string) => render(
+
+
+ ,
+ );
it.each([
[undefined],
@@ -17,8 +19,8 @@ describe('', () => {
[buildPaginator(0)],
[buildPaginator(1)],
])('renders nothing if the number of pages is below 2', (paginator) => {
- wrapper = shallow();
- expect(wrapper.text()).toEqual('');
+ const { container } = setUp(paginator);
+ expect(container.firstChild).toBeNull();
});
it.each([
@@ -33,11 +35,12 @@ describe('', () => {
expectedPages,
expectedEllipsis,
) => {
- wrapper = shallow();
- const items = wrapper.find(PaginationItem);
- const ellipsis = items.filterWhere((item) => item.find(PaginationLink).prop('children') === ELLIPSIS);
+ setUp(paginator);
- expect(items).toHaveLength(expectedPages);
+ const links = screen.getAllByRole('link');
+ const ellipsis = screen.queryAllByText(ELLIPSIS);
+
+ expect(links).toHaveLength(expectedPages);
expect(ellipsis).toHaveLength(expectedEllipsis);
});
@@ -45,10 +48,10 @@ describe('', () => {
const paginator = buildPaginator(3);
const currentQueryString = '?foo=bar';
- wrapper = shallow();
- const links = wrapper.find(PaginationLink);
+ setUp(paginator, currentQueryString);
+ const links = screen.getAllByRole('link');
expect(links).toHaveLength(5);
- links.forEach((link) => expect(link.prop('to')).toContain(currentQueryString));
+ links.forEach((link) => expect(link).toHaveAttribute('href', expect.stringContaining(currentQueryString)));
});
});