Skip to content

Commit

Permalink
Merge branch 'master' into drilldowns
Browse files Browse the repository at this point in the history
  • Loading branch information
elasticmachine authored Mar 23, 2020
2 parents 03b2b37 + 8b2ffaf commit d10aa7b
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 11 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/

import { call, put } from 'redux-saga/effects';
import { fetchEffectFactory } from '../fetch_effect';
import { indexStatusAction } from '../../actions';

describe('fetch saga effect factory', () => {
const asyncAction = indexStatusAction;
const calledAction = asyncAction.get();
let fetchEffect;

it('works with success workflow', () => {
const indexStatusResult = { indexExists: true, docCount: 2712532 };
const fetchStatus = async () => {
return { indexExists: true, docCount: 2712532 };
};
fetchEffect = fetchEffectFactory(
fetchStatus,
asyncAction.success,
asyncAction.fail
)(calledAction);
let next = fetchEffect.next();

expect(next.value).toEqual(call(fetchStatus, calledAction.payload));

const successResult = put(asyncAction.success(indexStatusResult));

next = fetchEffect.next(indexStatusResult);

expect(next.value).toEqual(successResult);
});

it('works with error workflow', () => {
const indexStatusResultError = new Error('no heartbeat index found');
const fetchStatus = async () => {
return indexStatusResultError;
};
fetchEffect = fetchEffectFactory(
fetchStatus,
asyncAction.success,
asyncAction.fail
)(calledAction);
let next = fetchEffect.next();

expect(next.value).toEqual(call(fetchStatus, calledAction.payload));

const errorResult = put(asyncAction.fail(indexStatusResultError));

next = fetchEffect.next(indexStatusResultError);

expect(next.value).toEqual(errorResult);
});

it('works with throw error workflow', () => {
const unExpectedError = new Error('no url found, so throw error');
const fetchStatus = async () => {
return await fetch('/some/url');
};
fetchEffect = fetchEffectFactory(
fetchStatus,
asyncAction.success,
asyncAction.fail
)(calledAction);
let next = fetchEffect.next();

expect(next.value).toEqual(call(fetchStatus, calledAction.payload));

const unexpectedErrorResult = put(asyncAction.fail(unExpectedError));

next = fetchEffect.next(unExpectedError);

expect(next.value).toEqual(unexpectedErrorResult);
});
});
24 changes: 14 additions & 10 deletions x-pack/legacy/plugins/uptime/public/state/effects/fetch_effect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,21 @@ export function fetchEffectFactory<T, R, S, F>(
fail: (error: Error) => Action<F>
) {
return function*(action: Action<T>) {
const {
payload: { ...params },
} = action;
const response = yield call(fetch, params);
if (response instanceof Error) {
// eslint-disable-next-line no-console
console.error(response);
try {
const response = yield call(fetch, action.payload);

if (response instanceof Error) {
// eslint-disable-next-line no-console
console.error(response);

yield put(fail(response));
} else {
yield put(success(response));
yield put(fail(response));
} else {
yield put(success(response));
}
} catch (error) {
// eslint-disable-next-line no-console
console.error(error);
yield put(fail(error));
}
};
}
3 changes: 2 additions & 1 deletion x-pack/test/functional/apps/uptime/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
expect(await settingsPage().applyButtonIsDisabled()).to.eql(true);
});

it('changing index pattern setting is reflected elsewhere in UI', async () => {
// Failing: https://github.com/elastic/kibana/issues/60863
it.skip('changing index pattern setting is reflected elsewhere in UI', async () => {
const originalCount = await pageObjects.uptime.getSnapshotCount();
// We should find 1 monitor up with the default index pattern
expect(originalCount.up).to.eql(1);
Expand Down

0 comments on commit d10aa7b

Please sign in to comment.