diff --git a/web/ui/react-app/src/pages/TSDBStatus.test.tsx b/web/ui/react-app/src/pages/TSDBStatus.test.tsx
index cefdcd375..fead1b4ad 100644
--- a/web/ui/react-app/src/pages/TSDBStatus.test.tsx
+++ b/web/ui/react-app/src/pages/TSDBStatus.test.tsx
@@ -1,11 +1,11 @@
import * as React from 'react';
import { mount, shallow, ReactWrapper } from 'enzyme';
import { act } from 'react-dom/test-utils';
-import { Alert, Table, Badge } from 'reactstrap';
+import { Alert, Table } from 'reactstrap';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faSpinner } from '@fortawesome/free-solid-svg-icons';
import { TSDBStatus } from '.';
-import { TSDBMap, Stats } from './TSDBStatus';
+import { TSDBMap } from './TSDBStatus';
const fakeTSDBStatusResponse: {
status: string;
@@ -46,7 +46,7 @@ const fakeTSDBStatusResponse: {
describe('TSDB Stats', () => {
beforeEach(() => {
- fetch.resetMocks();
+ fetchMock.resetMocks();
});
it('before data is returned', () => {
@@ -58,9 +58,9 @@ describe('TSDB Stats', () => {
describe('when an error is returned', () => {
it('displays an alert', async () => {
- const mock = fetch.mockReject(new Error('error loading tsdb status'));
+ const mock = fetchMock.mockReject(new Error('error loading tsdb status'));
- let page: ReactWrapper;
+ let page: any;
await act(async () => {
page = mount();
});
@@ -94,8 +94,8 @@ describe('TSDB Stats', () => {
},
];
- const mock = fetch.mockResponse(JSON.stringify(fakeTSDBStatusResponse));
- let page: ReactWrapper;
+ const mock = fetchMock.mockResponse(JSON.stringify(fakeTSDBStatusResponse));
+ let page: any;
await act(async () => {
page = mount();
});
@@ -104,17 +104,17 @@ describe('TSDB Stats', () => {
expect(mock).toHaveBeenCalledWith('/path/prefix/api/v1/status/tsdb', undefined);
for (let i = 0; i < tables.length; i++) {
- let data = tables[i].data;
- let table = page
+ const data = tables[i].data;
+ const table = page
.find(Table)
.at(tables[i].table_index)
.find('tbody');
- let rows = table.find('tr');
+ const rows = table.find('tr');
for (let i = 0; i < data.length; i++) {
const firstRowColumns = rows
.at(i)
.find('td')
- .map(column => column.text());
+ .map((column: ReactWrapper) => column.text());
expect(rows.length).toBe(data.length);
expect(firstRowColumns[0]).toBe(data[i].name);
expect(firstRowColumns[1]).toBe(data[i].value.toString());
diff --git a/web/ui/react-app/src/pages/TSDBStatus.tsx b/web/ui/react-app/src/pages/TSDBStatus.tsx
index 0519a7373..f045441c8 100644
--- a/web/ui/react-app/src/pages/TSDBStatus.tsx
+++ b/web/ui/react-app/src/pages/TSDBStatus.tsx
@@ -51,9 +51,9 @@ function createTable(title: string, unit: string, stats: Array) {
}
const TSDBStatus: FC = ({ pathPrefix }) => {
- const { response, error } = useFetch(`${pathPrefix}/api/v1/status/tsdb`);
+ const { response, error } = useFetch(`${pathPrefix}/api/v1/status/tsdb`);
const headStats = () => {
- const stats = response && (response.data as TSDBMap);
+ const stats = response && response.data;
if (error) {
return (
diff --git a/web/ui/react-app/src/pages/targets/ScrapePoolList.test.tsx b/web/ui/react-app/src/pages/targets/ScrapePoolList.test.tsx
index 8363b0b23..0da9a7b29 100644
--- a/web/ui/react-app/src/pages/targets/ScrapePoolList.test.tsx
+++ b/web/ui/react-app/src/pages/targets/ScrapePoolList.test.tsx
@@ -8,6 +8,7 @@ import ScrapePoolPanel from './ScrapePoolPanel';
import { Target } from './target';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faSpinner } from '@fortawesome/free-solid-svg-icons';
+import { FetchMock } from 'jest-fetch-mock/types';
describe('Flags', () => {
const defaultProps = {
@@ -16,7 +17,7 @@ describe('Flags', () => {
};
beforeEach(() => {
- fetch.resetMocks();
+ fetchMock.resetMocks();
});
describe('before data is returned', () => {
@@ -35,7 +36,7 @@ describe('Flags', () => {
describe('when data is returned', () => {
let scrapePoolList: ReactWrapper;
- let mock: Promise;
+ let mock: FetchMock;
beforeEach(() => {
//Tooltip requires DOM elements to exist. They do not in enzyme rendering so we must manually create them.
const scrapePools: { [key: string]: number } = { blackbox: 3, node_exporter: 1, prometheus: 1 };
@@ -46,7 +47,7 @@ describe('Flags', () => {
document.body.appendChild(div);
});
});
- mock = fetch.mockResponse(JSON.stringify(sampleApiResponse));
+ mock = fetchMock.mockResponse(JSON.stringify(sampleApiResponse));
});
it('renders a table', async () => {
@@ -81,9 +82,9 @@ describe('Flags', () => {
describe('when an error is returned', () => {
it('displays an alert', async () => {
- const mock = fetch.mockReject(new Error('Error fetching targets'));
+ const mock = fetchMock.mockReject(new Error('Error fetching targets'));
- let scrapePoolList: ReactWrapper;
+ let scrapePoolList: any;
await act(async () => {
scrapePoolList = mount();
});
diff --git a/web/ui/react-app/src/pages/targets/ScrapePoolList.tsx b/web/ui/react-app/src/pages/targets/ScrapePoolList.tsx
index cf6dfac42..3b3a5087f 100644
--- a/web/ui/react-app/src/pages/targets/ScrapePoolList.tsx
+++ b/web/ui/react-app/src/pages/targets/ScrapePoolList.tsx
@@ -23,7 +23,7 @@ const filterByHealth = ({ upCount, targets }: ScrapePool, { showHealthy, showUnh
};
const ScrapePoolList: FC = ({ filter, pathPrefix }) => {
- const { response, error } = useFetch(`${pathPrefix}/api/v1/targets?state=active`);
+ const { response, error } = useFetch(`${pathPrefix}/api/v1/targets?state=active`);
if (error) {
return (
@@ -31,14 +31,14 @@ const ScrapePoolList: FC = ({ filter, pat
Error fetching targets: {error.message}
);
- } else if (response && response.status !== 'success') {
+ } else if (response && response.status !== 'success' && response.status !== 'start fetching') {
return (
Error fetching targets: {response.status}
);
} else if (response && response.data) {
- const { activeTargets } = response.data as TargetsResponse;
+ const { activeTargets } = response.data;
const targetGroups = groupTargets(activeTargets);
return (
<>