Summary: Skip Android health-checks when the "Android Developer" option is disabled in Flipper settings. Also made some refactoring to use immer for healthcheck reducer. Reviewed By: mweststrate Differential Revision: D19088322 fbshipit-source-id: 801d874b6e7e5af80802b4bf4313d98f1cee13f6
114 lines
3.4 KiB
TypeScript
114 lines
3.4 KiB
TypeScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @format
|
|
*/
|
|
|
|
import {
|
|
default as reducer,
|
|
initHealthcheckReport,
|
|
startHealthchecks,
|
|
HealthcheckReportCategory,
|
|
HealthcheckReportItem,
|
|
finishHealthchecks,
|
|
updateHealthcheckReportItemStatus,
|
|
updateHealthcheckReportCategoryStatus,
|
|
} from '../healthchecks';
|
|
|
|
const HEALTHCHECK_ITEM: HealthcheckReportItem = {
|
|
label: 'Test Check',
|
|
status: 'WARNING',
|
|
message: "Something didn't quite work.",
|
|
};
|
|
|
|
const HEALTHCHECK_CATEGORY: HealthcheckReportCategory = {
|
|
label: 'Test Category',
|
|
status: 'WARNING',
|
|
checks: [HEALTHCHECK_ITEM],
|
|
};
|
|
|
|
test('initHealthcheckReport', () => {
|
|
const report = {
|
|
isHealthcheckInProgress: false,
|
|
categories: [],
|
|
};
|
|
const res = reducer(undefined, initHealthcheckReport(report));
|
|
expect(res.healthcheckReport).toEqual(report);
|
|
});
|
|
|
|
test('startHealthCheck', () => {
|
|
const report = {
|
|
isHealthcheckInProgress: false,
|
|
categories: [HEALTHCHECK_CATEGORY],
|
|
};
|
|
let res = reducer(undefined, initHealthcheckReport(report));
|
|
res = reducer(res, startHealthchecks());
|
|
expect(res.healthcheckReport.isHealthcheckInProgress).toBeTruthy();
|
|
// This seems trivial, but by getting the spread wrong, it's easy
|
|
// to break this.
|
|
expect(res.healthcheckReport.categories).toEqual([HEALTHCHECK_CATEGORY]);
|
|
});
|
|
|
|
test('finish', () => {
|
|
const report = {
|
|
isHealthcheckInProgress: true,
|
|
categories: [HEALTHCHECK_CATEGORY],
|
|
};
|
|
let res = reducer(undefined, initHealthcheckReport(report));
|
|
res = reducer(res, finishHealthchecks());
|
|
expect(res.healthcheckReport.isHealthcheckInProgress).toBeFalsy();
|
|
expect(res.healthcheckReport.categories).toEqual([HEALTHCHECK_CATEGORY]);
|
|
});
|
|
|
|
test('updateHealthcheck', () => {
|
|
const report = {
|
|
isHealthcheckInProgress: true,
|
|
categories: [HEALTHCHECK_CATEGORY, HEALTHCHECK_CATEGORY],
|
|
};
|
|
let res = reducer(undefined, initHealthcheckReport(report));
|
|
res = reducer(
|
|
res,
|
|
updateHealthcheckReportItemStatus(0, 0, {
|
|
message: 'Updated Test Message',
|
|
status: 'SUCCESS',
|
|
}),
|
|
);
|
|
expect(res.healthcheckReport.isHealthcheckInProgress).toBeTruthy();
|
|
expect(res.healthcheckReport.categories[0].checks[0].message).toEqual(
|
|
'Updated Test Message',
|
|
);
|
|
expect(res.healthcheckReport.categories[0].checks[0].status).toEqual(
|
|
'SUCCESS',
|
|
);
|
|
expect(res.healthcheckReport.categories[1].checks[0].label).toEqual(
|
|
'Test Check',
|
|
);
|
|
expect(res.healthcheckReport.categories[1].checks[0].status).toEqual(
|
|
'WARNING',
|
|
);
|
|
});
|
|
|
|
test('updateHealthcheckCategoryStatus', () => {
|
|
const report = {
|
|
isHealthcheckInProgress: true,
|
|
categories: [HEALTHCHECK_CATEGORY, HEALTHCHECK_CATEGORY],
|
|
};
|
|
let res = reducer(undefined, initHealthcheckReport(report));
|
|
res = reducer(
|
|
res,
|
|
updateHealthcheckReportCategoryStatus(1, {
|
|
status: 'FAILED',
|
|
message: 'Error message',
|
|
}),
|
|
);
|
|
expect(res.healthcheckReport.isHealthcheckInProgress).toBeTruthy();
|
|
expect(res.healthcheckReport.categories[0].label).toEqual('Test Category');
|
|
expect(res.healthcheckReport.categories[0].status).toEqual('WARNING');
|
|
expect(res.healthcheckReport.categories[1].label).toEqual('Test Category');
|
|
expect(res.healthcheckReport.categories[1].status).toEqual('FAILED');
|
|
expect(res.healthcheckReport.categories[1].message).toEqual('Error message');
|
|
});
|