mirror of
https://github.com/shlinkio/shlink-web-client.git
synced 2026-03-14 03:23:49 +00:00
Introduce shoehorn as a possible replacement for ts-mockery
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { Mock } from 'ts-mockery';
|
||||
import { fromPartial } from '@total-typescript/shoehorn';
|
||||
import type { HttpClient } from '../../../src/common/services/HttpClient';
|
||||
import { fetchServers } from '../../../src/servers/reducers/remoteServers';
|
||||
|
||||
@@ -8,7 +8,7 @@ describe('remoteServersReducer', () => {
|
||||
describe('fetchServers', () => {
|
||||
const dispatch = jest.fn();
|
||||
const fetchJson = jest.fn();
|
||||
const httpClient = Mock.of<HttpClient>({ fetchJson });
|
||||
const httpClient = fromPartial<HttpClient>({ fetchJson });
|
||||
|
||||
it.each([
|
||||
[
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Mock } from 'ts-mockery';
|
||||
import { fromPartial } from '@total-typescript/shoehorn';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import type { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient';
|
||||
import type { ShlinkState } from '../../../src/container/types';
|
||||
@@ -15,7 +15,7 @@ import {
|
||||
describe('selectedServerReducer', () => {
|
||||
const dispatch = jest.fn();
|
||||
const health = jest.fn();
|
||||
const buildApiClient = jest.fn().mockReturnValue(Mock.of<ShlinkApiClient>({ health }));
|
||||
const buildApiClient = jest.fn().mockReturnValue(fromPartial<ShlinkApiClient>({ health }));
|
||||
const selectServer = selectServerCreator(buildApiClient);
|
||||
const { reducer } = selectedServerReducerCreator(selectServer);
|
||||
|
||||
@@ -26,8 +26,7 @@ describe('selectedServerReducer', () => {
|
||||
expect(reducer(null, resetSelectedServer())).toBeNull());
|
||||
|
||||
it('returns selected server when action is SELECT_SERVER', () => {
|
||||
const payload = Mock.of<RegularServer>({ id: 'abc123' });
|
||||
|
||||
const payload = fromPartial<RegularServer>({ id: 'abc123' });
|
||||
expect(reducer(null, selectServer.fulfilled(payload, '', ''))).toEqual(payload);
|
||||
});
|
||||
});
|
||||
@@ -66,7 +65,7 @@ describe('selectedServerReducer', () => {
|
||||
it('dispatches error when health endpoint fails', async () => {
|
||||
const id = uuid();
|
||||
const getState = createGetStateMock(id);
|
||||
const expectedSelectedServer = Mock.of<NonReachableServer>({ id, serverNotReachable: true });
|
||||
const expectedSelectedServer = fromPartial<NonReachableServer>({ id, serverNotReachable: true });
|
||||
|
||||
health.mockRejectedValue({});
|
||||
|
||||
@@ -78,7 +77,7 @@ describe('selectedServerReducer', () => {
|
||||
|
||||
it('dispatches error when server is not found', async () => {
|
||||
const id = uuid();
|
||||
const getState = jest.fn(() => Mock.of<ShlinkState>({ servers: {} }));
|
||||
const getState = jest.fn(() => fromPartial<ShlinkState>({ servers: {} }));
|
||||
const expectedSelectedServer: NotFoundServer = { serverNotFound: true };
|
||||
|
||||
await selectServer(id)(dispatch, getState, {});
|
||||
@@ -95,9 +94,9 @@ describe('selectedServerReducer', () => {
|
||||
const { middleware } = selectServerListener(selectServer, loadMercureInfo);
|
||||
|
||||
it.each([
|
||||
[Mock.of<ReachableServer>({ version: '1.2.3' }), 1],
|
||||
[Mock.of<NotFoundServer>({ serverNotFound: true }), 0],
|
||||
[Mock.of<NonReachableServer>({ serverNotReachable: true }), 0],
|
||||
[fromPartial<ReachableServer>({ version: '1.2.3' }), 1],
|
||||
[fromPartial<NotFoundServer>({ serverNotFound: true }), 0],
|
||||
[fromPartial<NonReachableServer>({ serverNotReachable: true }), 0],
|
||||
])('dispatches loadMercureInfo when provided server is reachable', (payload, expectedCalls) => {
|
||||
middleware({ dispatch, getState })(jest.fn())({
|
||||
payload,
|
||||
@@ -110,7 +109,7 @@ describe('selectedServerReducer', () => {
|
||||
|
||||
it('does not dispatch loadMercureInfo when action is not of the proper type', () => {
|
||||
middleware({ dispatch, getState })(jest.fn())({
|
||||
payload: Mock.of<ReachableServer>({ version: '1.2.3' }),
|
||||
payload: fromPartial<ReachableServer>({ version: '1.2.3' }),
|
||||
type: 'something_else',
|
||||
});
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { fromPartial } from '@total-typescript/shoehorn';
|
||||
import { dissoc, values } from 'ramda';
|
||||
import { Mock } from 'ts-mockery';
|
||||
import type { RegularServer, ServerWithId } from '../../../src/servers/data';
|
||||
import type { RegularServer, ServersMap, ServerWithId } from '../../../src/servers/data';
|
||||
import {
|
||||
createServers,
|
||||
deleteServer,
|
||||
@@ -10,9 +10,9 @@ import {
|
||||
} from '../../../src/servers/reducers/servers';
|
||||
|
||||
describe('serversReducer', () => {
|
||||
const list = {
|
||||
abc123: Mock.of<RegularServer>({ id: 'abc123' }),
|
||||
def456: Mock.of<RegularServer>({ id: 'def456' }),
|
||||
const list: ServersMap = {
|
||||
abc123: fromPartial({ id: 'abc123' }),
|
||||
def456: fromPartial({ id: 'def456' }),
|
||||
};
|
||||
|
||||
afterEach(jest.clearAllMocks);
|
||||
@@ -31,12 +31,12 @@ describe('serversReducer', () => {
|
||||
}));
|
||||
|
||||
it('removes server when action is DELETE_SERVER', () =>
|
||||
expect(serversReducer(list, deleteServer(Mock.of<ServerWithId>({ id: 'abc123' })))).toEqual({
|
||||
expect(serversReducer(list, deleteServer(fromPartial<ServerWithId>({ id: 'abc123' })))).toEqual({
|
||||
def456: { id: 'def456' },
|
||||
}));
|
||||
|
||||
it('appends server when action is CREATE_SERVERS', () =>
|
||||
expect(serversReducer(list, createServers([Mock.of<ServerWithId>({ id: 'ghi789' })]))).toEqual({
|
||||
expect(serversReducer(list, createServers([fromPartial<ServerWithId>({ id: 'ghi789' })]))).toEqual({
|
||||
abc123: { id: 'abc123' },
|
||||
def456: { id: 'def456' },
|
||||
ghi789: { id: 'ghi789' },
|
||||
@@ -46,7 +46,7 @@ describe('serversReducer', () => {
|
||||
[true],
|
||||
[false],
|
||||
])('returns state as it is when trying to set auto-connect on invalid server', (autoConnect) =>
|
||||
expect(serversReducer(list, setAutoConnect(Mock.of<ServerWithId>({ id: 'invalid' }), autoConnect))).toEqual({
|
||||
expect(serversReducer(list, setAutoConnect(fromPartial<ServerWithId>({ id: 'invalid' }), autoConnect))).toEqual({
|
||||
abc123: { id: 'abc123' },
|
||||
def456: { id: 'def456' },
|
||||
}));
|
||||
@@ -59,7 +59,7 @@ describe('serversReducer', () => {
|
||||
|
||||
expect(serversReducer(
|
||||
listWithDisabledAutoConnect,
|
||||
setAutoConnect(Mock.of<ServerWithId>({ id: 'abc123' }), false),
|
||||
setAutoConnect(fromPartial<ServerWithId>({ id: 'abc123' }), false),
|
||||
)).toEqual({
|
||||
abc123: { id: 'abc123', autoConnect: false },
|
||||
def456: { id: 'def456' },
|
||||
@@ -74,7 +74,7 @@ describe('serversReducer', () => {
|
||||
|
||||
expect(serversReducer(
|
||||
listWithEnabledAutoConnect,
|
||||
setAutoConnect(Mock.of<ServerWithId>({ id: 'def456' }), true),
|
||||
setAutoConnect(fromPartial<ServerWithId>({ id: 'def456' }), true),
|
||||
)).toEqual({
|
||||
abc123: { id: 'abc123', autoConnect: false },
|
||||
def456: { id: 'def456', autoConnect: true },
|
||||
@@ -94,7 +94,7 @@ describe('serversReducer', () => {
|
||||
|
||||
describe('deleteServer', () => {
|
||||
it('returns expected action', () => {
|
||||
const serverToDelete = Mock.of<RegularServer>({ id: 'abc123' });
|
||||
const serverToDelete = fromPartial<RegularServer>({ id: 'abc123' });
|
||||
const { payload } = deleteServer(serverToDelete);
|
||||
|
||||
expect(payload).toEqual({ id: 'abc123' });
|
||||
@@ -122,7 +122,7 @@ describe('serversReducer', () => {
|
||||
[true],
|
||||
[false],
|
||||
])('returns expected action', (autoConnect) => {
|
||||
const serverToEdit = Mock.of<RegularServer>({ id: 'abc123' });
|
||||
const serverToEdit = fromPartial<RegularServer>({ id: 'abc123' });
|
||||
const { payload } = setAutoConnect(serverToEdit, autoConnect);
|
||||
|
||||
expect(payload).toEqual({ serverId: 'abc123', autoConnect });
|
||||
|
||||
Reference in New Issue
Block a user