]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-8658 display only projects for custom organizations
authorStas Vilchik <vilchiks@gmail.com>
Wed, 8 Feb 2017 13:35:14 +0000 (14:35 +0100)
committerStas Vilchik <vilchiks@gmail.com>
Wed, 8 Feb 2017 13:35:14 +0000 (14:35 +0100)
server/sonar-web/src/main/js/apps/permission-templates/components/ActionsCell.js
server/sonar-web/src/main/js/apps/permission-templates/components/Defaults.js
server/sonar-web/src/main/js/apps/permission-templates/components/NameCell.js
server/sonar-web/src/main/js/apps/permission-templates/components/__tests__/ActionsCell-test.js
server/sonar-web/src/main/js/apps/permission-templates/components/__tests__/Defaults-test.js
server/sonar-web/src/main/js/apps/permission-templates/components/__tests__/__snapshots__/Defaults-test.js.snap [new file with mode: 0644]

index 1a0a97e38cfcc8faf172da4644227babf63a0210..d0c8c0198e5f02e535f2d9655d875e483342140a 100644 (file)
@@ -75,9 +75,10 @@ export default class ActionsCell extends React.Component {
   }
 
   getAvailableQualifiers () {
-    return difference(
-        this.props.topQualifiers,
-        this.props.permissionTemplate.defaultFor);
+    const topQualifiers = this.props.organization && !this.props.organization.isDefault ?
+        ['TRK'] :
+        this.props.topQualifiers;
+    return difference(topQualifiers, this.props.permissionTemplate.defaultFor);
   }
 
   renderDropdownIcon (icon) {
index 35776605f972e656b90fa4bdd8783155763b2071..60b6a85a133c89c42b05f593e6f29da0af711afa 100644 (file)
@@ -24,11 +24,16 @@ import { PermissionTemplateType } from '../propTypes';
 
 export default class Defaults extends React.Component {
   static propTypes = {
+    organization: React.PropTypes.object,
     permissionTemplate: PermissionTemplateType.isRequired
   };
 
   render () {
-    const qualifiers = sortBy(this.props.permissionTemplate.defaultFor)
+    const qualifiersToDisplay = this.props.organization && !this.props.organization.isDefault ?
+        ['TRK'] :
+        this.props.permissionTemplate.defaultFor;
+
+    const qualifiers = sortBy(qualifiersToDisplay)
         .map(qualifier => translate('qualifiers', qualifier))
         .join(', ');
 
index 41379178da2d1b525178c369b8d093d6802377db..31b45a0e248c59bd8bb954c48822780d0abcdd9a 100644 (file)
@@ -43,7 +43,9 @@ export default class NameCell extends React.Component {
 
           {t.defaultFor.length > 0 && (
               <div className="spacer-top js-defaults">
-                <Defaults permissionTemplate={this.props.permissionTemplate}/>
+                <Defaults
+                    permissionTemplate={this.props.permissionTemplate}
+                    organization={organization}/>
               </div>
           )}
 
index a3d0ed5588ec80f656507ae7dc9292b7152dab84..0ac5ec0e78614eb5b1fe245594ddb6828a5a99c0 100644 (file)
@@ -50,3 +50,18 @@ it('should not set default', () => {
   const setDefault = renderActionsCell({ permissionTemplate }).find('.js-set-default');
   expect(setDefault.length).toBe(0);
 });
+
+it('should display all qualifiers for default organization', () => {
+  const organization = { isDefault: true };
+  const setDefault = renderActionsCell({ organization }).find('.js-set-default');
+  expect(setDefault.length).toBe(2);
+  expect(setDefault.at(0).prop('data-qualifier')).toBe('TRK');
+  expect(setDefault.at(1).prop('data-qualifier')).toBe('VW');
+});
+
+it('should display only projects for custom organization', () => {
+  const organization = { isDefault: false };
+  const setDefault = renderActionsCell({ organization }).find('.js-set-default');
+  expect(setDefault.length).toBe(1);
+  expect(setDefault.at(0).prop('data-qualifier')).toBe('TRK');
+});
index d448058023322764b711b6472a8926acf625a879..c9560bed4f6e7dc1aca49d377c04cf47a9881205 100644 (file)
@@ -30,11 +30,25 @@ const SAMPLE = {
 it('should render one qualifier', () => {
   const sample = { ...SAMPLE, defaultFor: ['DEV'] };
   const output = shallow(<Defaults permissionTemplate={sample}/>);
-  expect(output.text()).toContain('DEV');
+  expect(output).toMatchSnapshot();
 });
 
 it('should render several qualifiers', () => {
   const sample = { ...SAMPLE, defaultFor: ['TRK', 'VW'] };
   const output = shallow(<Defaults permissionTemplate={sample}/>);
-  expect(output.text()).toContain('TRK');
+  expect(output).toMatchSnapshot();
+});
+
+it('should render several qualifiers for default organization', () => {
+  const sample = { ...SAMPLE, defaultFor: ['TRK', 'VW'] };
+  const organization = { isDefault: true };
+  const output = shallow(<Defaults permissionTemplate={sample} organization={organization}/>);
+  expect(output).toMatchSnapshot();
+});
+
+it('should render only projects for custom organization', () => {
+  const sample = { ...SAMPLE, defaultFor: ['TRK', 'VW'] };
+  const organization = { isDefault: false };
+  const output = shallow(<Defaults permissionTemplate={sample} organization={organization}/>);
+  expect(output).toMatchSnapshot();
 });
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/components/__tests__/__snapshots__/Defaults-test.js.snap b/server/sonar-web/src/main/js/apps/permission-templates/components/__tests__/__snapshots__/Defaults-test.js.snap
new file mode 100644 (file)
index 0000000..32a2983
--- /dev/null
@@ -0,0 +1,43 @@
+exports[`test should render one qualifier 1`] = `
+<div>
+  <span
+    className="badge spacer-right">
+    default
+     for 
+    qualifiers.DEV
+  </span>
+</div>
+`;
+
+exports[`test should render only projects for custom organization 1`] = `
+<div>
+  <span
+    className="badge spacer-right">
+    default
+     for 
+    qualifiers.TRK
+  </span>
+</div>
+`;
+
+exports[`test should render several qualifiers 1`] = `
+<div>
+  <span
+    className="badge spacer-right">
+    default
+     for 
+    qualifiers.TRK, qualifiers.VW
+  </span>
+</div>
+`;
+
+exports[`test should render several qualifiers for default organization 1`] = `
+<div>
+  <span
+    className="badge spacer-right">
+    default
+     for 
+    qualifiers.TRK, qualifiers.VW
+  </span>
+</div>
+`;