add refresh test

Signed-off-by: mclarke47 <matthewclarke47@gmail.com>
This commit is contained in:
mclarke47
2021-10-19 19:59:16 +01:00
parent 14df942bae
commit 4c08c30178
2 changed files with 29 additions and 7 deletions
@@ -71,10 +71,10 @@ describe('useKubernetesObjects', () => {
const mockGetObjectsByEntity = jest.fn();
const mockDecorateRequestBodyForAuth = jest.fn();
const expectMocksCalledCorrectly = () => {
expect(mockGetClusters).toBeCalledTimes(1);
const expectMocksCalledCorrectly = (numOfCalls: number = 1) => {
expect(mockGetClusters).toBeCalledTimes(numOfCalls);
expect(mockGetClusters).toHaveBeenLastCalledWith();
expect(mockDecorateRequestBodyForAuth).toBeCalledTimes(2);
expect(mockDecorateRequestBodyForAuth).toBeCalledTimes(numOfCalls * 2);
expect(mockDecorateRequestBodyForAuth).toHaveBeenCalledWith('google', {
entity,
});
@@ -82,7 +82,7 @@ describe('useKubernetesObjects', () => {
'authprovider2',
entityWithAuthToken,
);
expect(mockGetObjectsByEntity).toBeCalledTimes(1);
expect(mockGetObjectsByEntity).toBeCalledTimes(numOfCalls);
expect(mockGetObjectsByEntity).toHaveBeenLastCalledWith(
entityWithAuthToken,
);
@@ -110,6 +110,26 @@ describe('useKubernetesObjects', () => {
expectMocksCalledCorrectly();
});
it('should update on an interval', async () => {
(useApi as any).mockReturnValue({
getClusters: mockGetClusters.mockResolvedValue(getClustersResponse),
getObjectsByEntity:
mockGetObjectsByEntity.mockResolvedValue(mockResponse),
decorateRequestBodyForAuth:
mockDecorateRequestBodyForAuth.mockResolvedValue(entityWithAuthToken),
});
const { result, waitForNextUpdate } = renderHook(() =>
useKubernetesObjects(entity, 100),
);
await waitForNextUpdate();
await waitForNextUpdate();
expect(result.current.error).toBeUndefined();
expect(result.current.kubernetesObjects).toStrictEqual(mockResponse);
expectMocksCalledCorrectly(2);
});
it('should return error when getObjectsByEntity throws', async () => {
(useApi as any).mockReturnValue({
getClusters: mockGetClusters.mockResolvedValue(getClustersResponse),
@@ -30,7 +30,10 @@ export interface KubernetesObjects {
error: string | undefined;
}
export const useKubernetesObjects = (entity: Entity): KubernetesObjects => {
export const useKubernetesObjects = (
entity: Entity,
intervalMs: number = 10000,
): KubernetesObjects => {
const kubernetesApi = useApi(kubernetesApiRef);
const kubernetesAuthProvidersApi = useApi(kubernetesAuthProvidersApiRef);
const [kubernetesObjects, setKubernetesObjects] = useState<
@@ -86,8 +89,7 @@ export const useKubernetesObjects = (entity: Entity): KubernetesObjects => {
useInterval(() => {
getObjects();
// TODO make configurable
}, 10000);
}, intervalMs);
return {
kubernetesObjects,