aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorJeremy Davis <jeremy.davis@sonarsource.com>2019-05-27 11:33:34 +0200
committerSonarTech <sonartech@sonarsource.com>2019-05-29 20:21:14 +0200
commit30edd004be7d356a446735766d7edb9c4ef6cbc1 (patch)
tree5a9513ae0bef8e0f5f3f0e8c5a81b8a559cd9d78 /server
parent18f20eed6127994e54d2fcc7f9772fdcafcfd25d (diff)
downloadsonarqube-30edd004be7d356a446735766d7edb9c4ef6cbc1.tar.gz
sonarqube-30edd004be7d356a446735766d7edb9c4ef6cbc1.zip
SONAR-11676 Fix Bulk Apply Permission Template
Diffstat (limited to 'server')
-rw-r--r--server/sonar-web/src/main/js/apps/create/components/__tests__/ProjectKeyInput-test.tsx26
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/__tests__/BulkApplyTemplateModal-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/components/SourceViewer/SourceViewerHeader.tsx9
4 files changed, 34 insertions, 5 deletions
diff --git a/server/sonar-web/src/main/js/apps/create/components/__tests__/ProjectKeyInput-test.tsx b/server/sonar-web/src/main/js/apps/create/components/__tests__/ProjectKeyInput-test.tsx
index 4b47eaef943..14a4b9c33b0 100644
--- a/server/sonar-web/src/main/js/apps/create/components/__tests__/ProjectKeyInput-test.tsx
+++ b/server/sonar-web/src/main/js/apps/create/components/__tests__/ProjectKeyInput-test.tsx
@@ -59,3 +59,29 @@ it('should have an error when the key already exists', async () => {
await new Promise(setImmediate);
expect(wrapper.find('ValidationInput').prop('isInvalid')).toBe(true);
});
+
+it('should handle Change', async () => {
+ const onChange = jest.fn();
+ const wrapper = shallow(<ProjectKeyInput onChange={onChange} value="" />);
+ await waitAndUpdate(wrapper);
+
+ wrapper.find('input').simulate('change', { currentTarget: { value: 'key' } });
+
+ expect(wrapper.state('touched')).toBe(true);
+ expect(onChange).toBeCalledWith('key');
+});
+
+it('should ignore promise return if value has been changed in the meantime', async () => {
+ const onChange = (value: string) => wrapper.setProps({ value });
+ const wrapper = shallow(<ProjectKeyInput onChange={onChange} value="" />);
+ await waitAndUpdate(wrapper);
+
+ wrapper.find('input').simulate('change', { currentTarget: { value: 'exists' } });
+ wrapper.find('input').simulate('change', { currentTarget: { value: 'exists%' } });
+
+ jest.runAllTimers();
+ await new Promise(setImmediate);
+
+ expect(wrapper.state('touched')).toBe(true);
+ expect(wrapper.state('error')).toBe('onboarding.create_project.project_key.error');
+});
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx
index 495fe5e077d..e3c32aa20e4 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx
@@ -88,6 +88,7 @@ export default class BulkApplyTemplateModal extends React.PureComponent<Props, S
? {
organization: this.props.organization,
projects: this.props.selection.join(),
+ qualifiers: this.props.qualifier,
templateId: permissionTemplate
}
: {
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/BulkApplyTemplateModal-test.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/BulkApplyTemplateModal-test.tsx
index b4670b17885..0cfec7a9349 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/BulkApplyTemplateModal-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/__tests__/BulkApplyTemplateModal-test.tsx
@@ -71,7 +71,7 @@ it('bulk applies template to all results', async () => {
});
it('bulk applies template to selected results', async () => {
- const wrapper = shallow(render({ selection: ['proj1', 'proj2'] }));
+ const wrapper = shallow(render({ qualifier: 'VW', selection: ['proj1', 'proj2'] }));
(wrapper.instance() as BulkApplyTemplateModal).mounted = true;
expect(wrapper).toMatchSnapshot();
@@ -88,6 +88,7 @@ it('bulk applies template to selected results', async () => {
expect(bulkApplyTemplate).toBeCalledWith({
organization: 'org',
projects: 'proj1,proj2',
+ qualifiers: 'VW',
templateId: 'foo'
});
diff --git a/server/sonar-web/src/main/js/components/SourceViewer/SourceViewerHeader.tsx b/server/sonar-web/src/main/js/components/SourceViewer/SourceViewerHeader.tsx
index 9a8a57bf77d..3b3eb4786da 100644
--- a/server/sonar-web/src/main/js/components/SourceViewer/SourceViewerHeader.tsx
+++ b/server/sonar-web/src/main/js/components/SourceViewer/SourceViewerHeader.tsx
@@ -73,8 +73,9 @@ export default class SourceViewerHeader extends React.PureComponent<Props, State
renderIssueMeasures = () => {
const { branchLike, issues, sourceViewerFile } = this.props;
- if (issues && issues.length > 0) {
- return (
+ return (
+ issues &&
+ issues.length > 0 && (
<>
<div className="source-viewer-header-measure-separator" />
@@ -101,8 +102,8 @@ export default class SourceViewerHeader extends React.PureComponent<Props, State
);
})}
</>
- );
- }
+ )
+ );
};
render() {