Skip to content

Commit 1f74b37

Browse files
authored
fix for resetting url in config page (#281)
1 parent 9385b7e commit 1f74b37

File tree

5 files changed

+49
-3
lines changed

5 files changed

+49
-3
lines changed

jest.config.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
1+
const { grafanaESModules, nodeModulesToTransform } = require('./.config/jest/utils');
2+
13
// force timezone to UTC to allow tests to work regardless of local timezone
24
// generally used by snapshots, but can affect specific tests
35
process.env.TZ = 'UTC';
6+
const originalConfig = require('./.config/jest.config');
47

58
module.exports = {
69
// Jest configuration provided by Grafana scaffolding
7-
...require('./.config/jest.config'),
10+
...originalConfig,
11+
transformIgnorePatterns: originalConfig.transformIgnorePatterns.map((pattern) =>
12+
pattern.startsWith('node_modules') ? `../../${pattern}` : pattern
13+
),
814
};

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
"@swc/jest": "^0.2.23",
4242
"@testing-library/jest-dom": "^5.16.2",
4343
"@testing-library/react": "^12.1.4",
44+
"@testing-library/user-event": "^14.5.1",
4445
"@types/glob": "^8.0.0",
4546
"@types/jest": "^29.2.2",
4647
"@types/lodash": "^4.14.188",

src/views/ConfigEditor.spec.tsx

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import React from 'react';
2+
import { screen, render, waitFor } from '@testing-library/react';
3+
import userEvent from '@testing-library/user-event';
4+
import ConfigEditor from './ConfigEditor';
5+
6+
describe('Config Editor', () => {
7+
it('should select basic license type as checked by default', async () => {
8+
const onOptionsChange = jest.fn();
9+
const options = { jsonData: {}, secureJsonFields: {} } as any;
10+
render(<ConfigEditor options={options} onOptionsChange={onOptionsChange} />);
11+
await waitFor(() => expect(screen.getByText('Additional Settings')).toBeInTheDocument());
12+
expect(screen.getByLabelText('Basic')).toBeChecked();
13+
expect(screen.getByLabelText('Enterprise')).not.toBeChecked();
14+
expect(screen.queryByText('GitHub Enterprise URL')).not.toBeInTheDocument();
15+
expect(onOptionsChange).toHaveBeenCalledTimes(0);
16+
await userEvent.click(screen.getByLabelText('Enterprise'));
17+
expect(onOptionsChange).toHaveBeenCalledTimes(0);
18+
expect(screen.queryByText('GitHub Enterprise URL')).toBeInTheDocument();
19+
});
20+
it('should select enterprise license type as checked when the url is not empty', async () => {
21+
const onOptionsChange = jest.fn();
22+
const options = { jsonData: { githubUrl: 'https://foo.bar' }, secureJsonFields: {} } as any;
23+
render(<ConfigEditor options={options} onOptionsChange={onOptionsChange} />);
24+
await waitFor(() => expect(screen.getByText('Additional Settings')).toBeInTheDocument());
25+
expect(screen.getByLabelText('Basic')).not.toBeChecked();
26+
expect(screen.getByLabelText('Enterprise')).toBeChecked();
27+
expect(screen.queryByText('GitHub Enterprise URL')).toBeInTheDocument();
28+
expect(onOptionsChange).toHaveBeenCalledTimes(0);
29+
await userEvent.click(screen.getByLabelText('Basic'));
30+
expect(onOptionsChange).toHaveBeenNthCalledWith(1, { jsonData: { githubUrl: '' }, secureJsonFields: {} });
31+
expect(screen.queryByText('GitHub Enterprise URL')).not.toBeInTheDocument();
32+
});
33+
});

src/views/ConfigEditor.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import { Divider } from 'components/Divider';
1010
export type ConfigEditorProps = DataSourcePluginOptionsEditorProps<GithubDataSourceOptions, GithubSecureJsonData>;
1111

1212
const ConfigEditor = (props: ConfigEditorProps) => {
13-
const { jsonData, secureJsonData, secureJsonFields } = props.options;
13+
const { options, onOptionsChange } = props;
14+
const { jsonData, secureJsonData, secureJsonFields } = options;
1415
const secureSettings = (secureJsonData || {}) as GithubSecureJsonData;
1516
const styles = useStyles2(getStyles);
1617

@@ -40,7 +41,7 @@ const ConfigEditor = (props: ConfigEditorProps) => {
4041

4142
const onLicenseChange = (value: string) => {
4243
if (value === 'github-basic') {
43-
jsonData.githubUrl = '';
44+
onOptionsChange({ ...options, jsonData: { ...jsonData, githubUrl: '' } });
4445
}
4546

4647
setSelectedLicense(value);

yarn.lock

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3684,6 +3684,11 @@
36843684
"@testing-library/dom" "^8.0.0"
36853685
"@types/react-dom" "<18.0.0"
36863686

3687+
"@testing-library/user-event@^14.5.1":
3688+
version "14.5.1"
3689+
resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.1.tgz#27337d72046d5236b32fd977edee3f74c71d332f"
3690+
integrity sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg==
3691+
36873692
"@tootallnate/once@2":
36883693
version "2.0.0"
36893694
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"

0 commit comments

Comments
 (0)