Skip to content

Commit

Permalink
optimize create, read, update tests (mocking)
Browse files Browse the repository at this point in the history
  • Loading branch information
dominikzogg committed Apr 16, 2020
1 parent cc4b5f5 commit e38edd4
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 42 deletions.
29 changes: 18 additions & 11 deletions src/__tests__/Component/Page/Pet/Create.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,29 @@ import React from 'react';
import { createMemoryHistory } from 'history';
import { fireEvent, render } from '@testing-library/react';
import { Router } from 'react-router-dom';
import * as ApiClientPet from '../../../../ApiClient/Pet';
import Create from '../../../../Component/Page/Pet/Create';
import HttpError from '../../../../Model/Error/HttpError';
import PetFormProps from '../../../../Component/Form/PetFormProps';
import PetResponse from '../../../../Model/Pet/PetResponse';
import PetRequest from '../../../../Model/Pet/PetRequest';
import UnprocessableEntity from '../../../../Model/Error/UnprocessableEntity';

jest.mock('../../../../ApiClient/Pet');
let mockCreatePet = (pet: PetRequest) => { };

jest.mock('../../../../ApiClient/Pet', () => {
return {
CreatePet: jest.fn((pet: PetRequest) => {
return mockCreatePet(pet);
})
};
});

jest.mock('../../../../Component/Form/PetForm', () => {
return ({ submitPet }: PetFormProps) => {
const submit = async () => {
await submitPet({ name: '', vaccinations: [] });
const onSubmit = () => {
submitPet({ name: 'Brownie' });
};

return (<button data-testid="test-button" onClick={submit}></button>);
return (<button data-testid="test-button" onClick={onSubmit}></button>);
};
});

Expand Down Expand Up @@ -48,9 +55,9 @@ test('default', () => {
});

test('unprocessable entity', async () => {
ApiClientPet.CreatePet.mockResolvedValueOnce(new Promise((resolve) => {
resolve(new UnprocessableEntity({ title: 'title' }));
}));
mockCreatePet = async (pet: PetRequest) => {
return new Promise((resolve) => resolve(new UnprocessableEntity({ title: 'title' })));
};

const history = createMemoryHistory();

Expand Down Expand Up @@ -79,9 +86,9 @@ test('unprocessable entity', async () => {
});

test('successful', async () => {
ApiClientPet.CreatePet.mockImplementationOnce((pet: PetResponse) => {
mockCreatePet = async (pet: PetRequest) => {
return new Promise((resolve) => resolve(pet));
});
};

const history = createMemoryHistory();

Expand Down
6 changes: 3 additions & 3 deletions src/__tests__/Component/Page/Pet/List.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ jest.mock('../../../../ApiClient/Pet');

jest.mock('../../../../Component/Form/PetFilterForm', () => {
return ({ submitPetFilter }: PetFilterFormProps) => {
const submit = async () => {
await submitPetFilter({ name: 'Bro' });
const onSubmit = () => {
submitPetFilter({ name: 'Bro' });
};

return (<button data-testid="test-filter-button" onClick={submit}></button>);
return (<button data-testid="test-filter-button" onClick={onSubmit}></button>);
};
});

Expand Down
25 changes: 16 additions & 9 deletions src/__tests__/Component/Page/Pet/Read.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,21 @@ import React from 'react';
import { createMemoryHistory } from 'history';
import { render } from '@testing-library/react';
import { Router } from 'react-router-dom';
import * as ApiClientPet from '../../../../ApiClient/Pet';
import HttpError from '../../../../Model/Error/HttpError';
import NotFound from '../../../../Model/Error/NotFound';
import PetResponse from '../../../../Model/Pet/PetResponse';
import Read from '../../../../Component/Page/Pet/Read';
import Vaccination from '../../../../Model/Pet/Vaccination';

jest.mock('../../../../ApiClient/Pet');
let mockReadPet = (id: string) => { };

jest.mock('../../../../ApiClient/Pet', () => {
return {
ReadPet: jest.fn((id: string) => {
return mockReadPet(id);
})
};
});

jest.mock('../../../../Component/Partial/HttpError', () => {
return ({ httpError }: { httpError: HttpError; }) => {
Expand All @@ -18,9 +25,9 @@ jest.mock('../../../../Component/Partial/HttpError', () => {
});

test('not found', async () => {
ApiClientPet.ReadPet.mockResolvedValueOnce(new Promise((resolve) => {
resolve(new NotFound({ title: 'title' }));
}));
mockReadPet = async (id: string) => {
return new Promise((resolve) => resolve(new NotFound({ title: 'title' })));
};

const history = createMemoryHistory();

Expand Down Expand Up @@ -55,9 +62,9 @@ test('minimal', async () => {
name: 'Brownie'
});

ApiClientPet.ReadPet.mockImplementationOnce(() => {
mockReadPet = async (id: string) => {
return new Promise((resolve) => resolve(pet));
});
};

const history = createMemoryHistory();

Expand Down Expand Up @@ -113,9 +120,9 @@ test('maximal', async () => {
]
});

ApiClientPet.ReadPet.mockImplementationOnce(() => {
mockReadPet = async (id: string) => {
return new Promise((resolve) => resolve(pet));
});
};

const history = createMemoryHistory();

Expand Down
50 changes: 31 additions & 19 deletions src/__tests__/Component/Page/Pet/Update.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,36 @@ import React from 'react';
import { createMemoryHistory } from 'history';
import { render, fireEvent } from '@testing-library/react';
import { Router } from 'react-router-dom';
import * as ApiClientPet from '../../../../ApiClient/Pet';
import HttpError from '../../../../Model/Error/HttpError';
import NotFound from '../../../../Model/Error/NotFound';
import PetFormProps from '../../../../Component/Form/PetFormProps';
import PetRequest from '../../../../Model/Pet/PetRequest';
import PetResponse from '../../../../Model/Pet/PetResponse';
import UnprocessableEntity from '../../../../Model/Error/UnprocessableEntity';
import Update from '../../../../Component/Page/Pet/Update';
import Vaccination from '../../../../Model/Pet/Vaccination';

jest.mock('../../../../ApiClient/Pet');
let mockReadPet = (id: string) => { };
let mockUpdatePet = (id: string, pet: PetRequest) => { };

jest.mock('../../../../ApiClient/Pet', () => {
return {
ReadPet: jest.fn((id: string) => {
return mockReadPet(id);
}),
UpdatePet: jest.fn((id: string, pet: PetRequest) => {
return mockUpdatePet(id, pet);
})
};
});

jest.mock('../../../../Component/Form/PetForm', () => {
return ({ submitPet }: PetFormProps) => {
const submit = async () => {
await submitPet({ name: '', vaccinations: [] });
const onSubmit = () => {
submitPet({ name: 'Brownie' });
};

return (<button data-testid="test-button" onClick={submit}></button>);
return (<button data-testid="test-button" onClick={onSubmit}></button>);
};
});

Expand All @@ -30,9 +42,9 @@ jest.mock('../../../../Component/Partial/HttpError', () => {
});

test('not found', async () => {
ApiClientPet.ReadPet.mockResolvedValueOnce(new Promise((resolve) => {
resolve(new NotFound({ title: 'title' }));
}));
mockReadPet = async (id: string) => {
return new Promise((resolve) => resolve(new NotFound({ title: 'title' })));
};

const history = createMemoryHistory();

Expand Down Expand Up @@ -68,9 +80,9 @@ test('minimal', async () => {
name: 'Brownie'
});

ApiClientPet.ReadPet.mockImplementationOnce(() => {
mockReadPet = async (id: string) => {
return new Promise((resolve) => resolve(pet));
});
};

const history = createMemoryHistory();

Expand Down Expand Up @@ -110,13 +122,13 @@ test('unprocessable entity', async () => {
]
});

ApiClientPet.ReadPet.mockImplementationOnce(() => {
mockReadPet = async (id: string) => {
return new Promise((resolve) => resolve(pet));
});
};

ApiClientPet.UpdatePet.mockResolvedValueOnce(new Promise((resolve) => {
resolve(new UnprocessableEntity({ title: 'title' }));
}));
mockUpdatePet = async (id: string, pet: PetRequest) => {
return new Promise((resolve) => resolve(new UnprocessableEntity({ title: 'title' })));
};

const history = createMemoryHistory();

Expand Down Expand Up @@ -161,13 +173,13 @@ test('successful', async () => {
]
});

ApiClientPet.ReadPet.mockImplementationOnce(() => {
mockReadPet = async (id: string) => {
return new Promise((resolve) => resolve(pet));
});
};

ApiClientPet.UpdatePet.mockImplementationOnce((pet: PetResponse) => {
mockUpdatePet = async (id: string, pet: PetRequest) => {
return new Promise((resolve) => resolve(pet));
});
};

const history = createMemoryHistory();

Expand Down

0 comments on commit e38edd4

Please sign in to comment.