Skip to content

Commit d6afa6c

Browse files
regression: add missing check for 'all' in app logs export (#36485)
1 parent dcb9207 commit d6afa6c

File tree

4 files changed

+26
-5
lines changed

4 files changed

+26
-5
lines changed

apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/Filters/AppLogsFilter.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,13 @@ export const AppLogsFilter = ({ appId, expandAll, refetchLogs, isLoading, noResu
4444
const refreshLogs = () => {
4545
refetchLogs();
4646
};
47+
48+
const onExportConfirm = (url: string) => {
49+
window.open(url, '_blank', 'noopener noreferrer');
50+
};
51+
4752
const openExportModal = () => {
48-
setModal(<ExportLogsModal onClose={() => setModal(null)} filterValues={getValues()} />);
53+
setModal(<ExportLogsModal onClose={() => setModal(null)} filterValues={getValues()} onConfirm={onExportConfirm} />);
4954
};
5055

5156
const compactMode = useCompactMode();

apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/Filters/ExportLogsModal.spec.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import { mockAppRoot } from '@rocket.chat/mock-providers';
22
import { composeStories } from '@storybook/react';
3-
import { render } from '@testing-library/react';
3+
import { render, screen } from '@testing-library/react';
4+
import userEvent from '@testing-library/user-event';
45
import { axe } from 'jest-axe';
56

67
import * as stories from './ExportLogsModal.stories';
78

89
const testCases = Object.values(composeStories(stories)).map((Story) => [Story.storyName || 'Story', Story]);
10+
const onConfirm = jest.fn();
11+
const { Default } = composeStories(stories);
912

1013
test.each(testCases)(`renders without crashing`, async (_storyname, Story) => {
1114
const view = render(<Story />, {
@@ -21,3 +24,14 @@ test.each(testCases)('Should have no a11y violations', async (_storyname, Story)
2124

2225
expect(results).toHaveNoViolations();
2326
});
27+
28+
it('should send the correct payload to the endpoint', async () => {
29+
render(<Default onConfirm={onConfirm} />, {
30+
wrapper: mockAppRoot().build(),
31+
});
32+
33+
expect(screen.getByRole('button', { name: 'Download' })).toBeInTheDocument();
34+
await userEvent.click(screen.getByRole('button', { name: 'Download' }));
35+
expect(onConfirm).toHaveBeenCalledTimes(1);
36+
expect(onConfirm).toHaveBeenCalledWith('/api/apps/undefined/export-logs?count=2000&type=json');
37+
});

apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/Filters/ExportLogsModal.stories.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export default {
1818
startDate: '',
1919
endDate: '',
2020
},
21+
onConfirm: () => action('onConfirm'),
2122
},
2223
decorators: [
2324
mockAppRoot().buildStoryDecorator(),

apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/Filters/ExportLogsModal.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import type { AppLogsFilterFormData } from '../useAppLogsFilterForm';
2424
type ExportLogsModalProps = {
2525
onClose: () => void;
2626
filterValues: AppLogsFilterFormData;
27+
onConfirm: (url: string) => void;
2728
};
2829

2930
type FormDataType = {
@@ -32,7 +33,7 @@ type FormDataType = {
3233
customExportAmount: number;
3334
};
3435

35-
export const ExportLogsModal = ({ onClose, filterValues }: ExportLogsModalProps) => {
36+
export const ExportLogsModal = ({ onClose, filterValues, onConfirm }: ExportLogsModalProps) => {
3637
const { t } = useTranslation();
3738

3839
const appId = useRouteParameter('id');
@@ -67,7 +68,7 @@ export const ExportLogsModal = ({ onClose, filterValues }: ExportLogsModalProps)
6768
if (severity && severity !== 'all') {
6869
baseUrl += `logLevel=${severity}&`;
6970
}
70-
if (event) {
71+
if (event && event !== 'all') {
7172
baseUrl += `method=${event}&`;
7273
}
7374
if (startDate) {
@@ -85,7 +86,7 @@ export const ExportLogsModal = ({ onClose, filterValues }: ExportLogsModalProps)
8586

8687
const handleConfirm = (): void => {
8788
const url = getFileUrl({ ...filterValues, type, count: count === 'max' ? 2000 : getValues('customExportAmount') });
88-
window.open(url, '_blank', 'noopener noreferrer');
89+
onConfirm(url);
8990
onClose();
9091
};
9192

0 commit comments

Comments
 (0)