Folders: Refactor hooks to (eventually) consume app platform /counts endpoint (#110894)
This commit is contained in:
@@ -3,7 +3,7 @@ import { HttpResponse, http } from 'msw';
|
||||
|
||||
import { treeViewersCanEdit, wellFormedTree } from '../../../fixtures/folders';
|
||||
|
||||
const [mockTree] = wellFormedTree();
|
||||
const [mockTree, { folderB }] = wellFormedTree();
|
||||
const [mockTreeThatViewersCanEdit] = treeViewersCanEdit();
|
||||
const collator = new Intl.Collator();
|
||||
|
||||
@@ -122,6 +122,38 @@ const saveFolderHandler = () =>
|
||||
return HttpResponse.json({ ...folder.item, title: body.title });
|
||||
});
|
||||
|
||||
const handlers = [listFoldersHandler(), getFolderHandler(), createFolderHandler(), saveFolderHandler()];
|
||||
const getMockFolderCounts = (folder: number, dashboard: number, librarypanel: number, alertrule: number) => {
|
||||
return {
|
||||
folder,
|
||||
dashboard,
|
||||
librarypanel,
|
||||
alertrule,
|
||||
};
|
||||
};
|
||||
|
||||
const folderCountsHandler = () =>
|
||||
http.get<{ uid: string }, { title: string; version: number }>('/api/folders/:uid/counts', async ({ params }) => {
|
||||
const { uid } = params;
|
||||
const folder = mockTree.find((v) => v.item.uid === uid);
|
||||
|
||||
if (!folder) {
|
||||
// The legacy API returns 0's for a folder that doesn't exist 🤷♂️
|
||||
return HttpResponse.json(getMockFolderCounts(0, 0, 0, 0));
|
||||
}
|
||||
|
||||
if (uid === folderB.item.uid) {
|
||||
return HttpResponse.json({}, { status: 500 });
|
||||
}
|
||||
|
||||
return HttpResponse.json(getMockFolderCounts(1, 1, 1, 1));
|
||||
});
|
||||
|
||||
const handlers = [
|
||||
listFoldersHandler(),
|
||||
getFolderHandler(),
|
||||
createFolderHandler(),
|
||||
saveFolderHandler(),
|
||||
folderCountsHandler(),
|
||||
];
|
||||
|
||||
export default handlers;
|
||||
|
||||
+65
-2
@@ -4,7 +4,7 @@ import { HttpResponse, http } from 'msw';
|
||||
import { wellFormedTree } from '../../../../fixtures/folders';
|
||||
import { getErrorResponse } from '../../../helpers';
|
||||
|
||||
const [mockTree] = wellFormedTree();
|
||||
const [mockTree, { folderB }] = wellFormedTree();
|
||||
|
||||
const baseResponse = {
|
||||
kind: 'Folder',
|
||||
@@ -164,4 +164,67 @@ const replaceFolderHandler = () =>
|
||||
return HttpResponse.json(appPlatformFolder);
|
||||
}
|
||||
);
|
||||
export default [getFolderHandler(), getFolderParentsHandler(), createFolderHandler(), replaceFolderHandler()];
|
||||
|
||||
const getMockFolderCounts = (folders: number, dashboards: number, library_elements: number, alertrules: number) => {
|
||||
return {
|
||||
kind: 'DescendantCounts',
|
||||
apiVersion: 'folder.grafana.app/v1beta1',
|
||||
counts: [
|
||||
{
|
||||
group: 'dashboard.grafana.app',
|
||||
resource: 'dashboards',
|
||||
count: dashboards,
|
||||
},
|
||||
{
|
||||
group: 'sql-fallback',
|
||||
resource: 'alertrules',
|
||||
count: alertrules,
|
||||
},
|
||||
{
|
||||
group: 'sql-fallback',
|
||||
resource: 'dashboards',
|
||||
count: dashboards,
|
||||
},
|
||||
{
|
||||
group: 'sql-fallback',
|
||||
resource: 'folders',
|
||||
count: folders,
|
||||
},
|
||||
{
|
||||
group: 'sql-fallback',
|
||||
resource: 'library_elements',
|
||||
count: library_elements,
|
||||
},
|
||||
],
|
||||
};
|
||||
};
|
||||
|
||||
const folderCountsHandler = () =>
|
||||
http.get<{ folderUid: string; namespace: string }, PartialFolderPayload>(
|
||||
'/apis/folder.grafana.app/v1beta1/namespaces/:namespace/folders/:folderUid/counts',
|
||||
async ({ params }) => {
|
||||
const { folderUid } = params;
|
||||
const matchedFolder = mockTree.find(({ item }) => {
|
||||
return item.uid === folderUid;
|
||||
});
|
||||
|
||||
if (!matchedFolder) {
|
||||
// The API returns 0's for a folder that doesn't exist 🤷♂️
|
||||
return HttpResponse.json(getMockFolderCounts(0, 0, 0, 0));
|
||||
}
|
||||
|
||||
if (folderUid === folderB.item.uid) {
|
||||
return HttpResponse.json({}, { status: 500 });
|
||||
}
|
||||
|
||||
return HttpResponse.json(getMockFolderCounts(1, 1, 1, 1));
|
||||
}
|
||||
);
|
||||
|
||||
export default [
|
||||
getFolderHandler(),
|
||||
getFolderParentsHandler(),
|
||||
createFolderHandler(),
|
||||
replaceFolderHandler(),
|
||||
folderCountsHandler(),
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user