]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-12292 Remove redundant WS call when QG conditions are updated
authorWouter Admiraal <wouter.admiraal@sonarsource.com>
Wed, 17 Jul 2019 07:18:16 +0000 (09:18 +0200)
committerSonarTech <sonartech@sonarsource.com>
Fri, 2 Aug 2019 18:21:14 +0000 (20:21 +0200)
server/sonar-web/src/main/js/apps/overview/pullRequests/ReviewApp.tsx
server/sonar-web/src/main/js/apps/overview/pullRequests/__tests__/ReviewApp-test.tsx
server/sonar-web/src/main/js/helpers/__tests__/qualityGates-test.ts
server/sonar-web/src/main/js/helpers/qualityGates.ts

index 8a3a942b3acc649776f6c4dcdebace831db62ef4..db6a3680f9b5dc8702991801d9bc1214857e14c1 100644 (file)
@@ -25,8 +25,7 @@ import { Alert } from 'sonar-ui-common/components/ui/Alert';
 import { translate } from 'sonar-ui-common/helpers/l10n';
 import { getMeasures } from '../../../api/measures';
 import DocTooltip from '../../../components/docs/DocTooltip';
-import { getBranchLikeQuery, isSameBranchLike } from '../../../helpers/branches';
-import { isSameStatusConditionList } from '../../../helpers/qualityGates';
+import { getBranchLikeQuery } from '../../../helpers/branches';
 import { fetchBranchStatus } from '../../../store/rootActions';
 import { getBranchStatusByBranchLike, Store } from '../../../store/rootReducer';
 import QualityGateConditions from '../qualityGate/QualityGateConditions';
@@ -73,17 +72,6 @@ export class ReviewApp extends React.PureComponent<Props, State> {
     this.fetchBranchData();
   }
 
-  componentDidUpdate(prevProps: Props) {
-    if (
-      this.props.component.key !== prevProps.component.key ||
-      this.props.status !== prevProps.status ||
-      !isSameStatusConditionList(this.props.conditions, prevProps.conditions) ||
-      !isSameBranchLike(this.props.branchLike, prevProps.branchLike)
-    ) {
-      this.fetchBranchData();
-    }
-  }
-
   componentWillUnmount() {
     this.mounted = false;
   }
index 4ec662fe9dec75f78e22896422eb3f8ab97bf3a9..a2c81894995b1da1e65d23011bbf728b9b9a85ae 100644 (file)
@@ -91,34 +91,6 @@ it('should render correctly for a failed QG', async () => {
   expect(wrapper.find('QualityGateConditions').exists()).toBe(true);
 });
 
-it('should correctly refresh data if certain props change', () => {
-  const wrapper = shallowRender({ conditions: [mockQualityGateStatusCondition()], status: 'OK' });
-
-  jest.clearAllMocks();
-  wrapper.setProps({
-    component: mockComponent({ key: 'foo' })
-  });
-  expect(getMeasures).toBeCalled();
-
-  jest.clearAllMocks();
-  wrapper.setProps({
-    branchLike: mockPullRequest({ key: '1002' })
-  });
-  expect(getMeasures).toBeCalled();
-
-  jest.clearAllMocks();
-  wrapper.setProps({
-    status: 'ERROR'
-  });
-  expect(getMeasures).toBeCalled();
-
-  jest.clearAllMocks();
-  wrapper.setProps({
-    conditions: [mockQualityGateStatusCondition({ metric: 'new_bugs' })]
-  });
-  expect(getMeasures).toBeCalled();
-});
-
 it('should correctly handle a WS failure', async () => {
   (getMeasures as jest.Mock).mockRejectedValue({});
   const fetchBranchStatus = jest.fn().mockRejectedValue({});
index 340f158919c8a3071f1b08883e47239991ceb85b..f0a7d8e408eaeab270e3838840dfcc0bc546fda5 100644 (file)
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-import {
-  extractStatusConditionsFromProjectStatus,
-  isSameStatusConditionList
-} from '../qualityGates';
-import { mockQualityGateProjectStatus, mockQualityGateStatusCondition } from '../testMocks';
+import { extractStatusConditionsFromProjectStatus } from '../qualityGates';
+import { mockQualityGateProjectStatus } from '../testMocks';
 
 describe('extractStatusConditionsFromProjectStatus', () => {
   it('should correclty extract the conditions for the project status', () => {
@@ -37,35 +34,3 @@ describe('extractStatusConditionsFromProjectStatus', () => {
     ]);
   });
 });
-
-describe('isSameStatusConditionList', () => {
-  it('should correctly return true if the conditions are the same', () => {
-    expect(isSameStatusConditionList()).toBe(true);
-    expect(isSameStatusConditionList([], [])).toBe(true);
-    expect(
-      isSameStatusConditionList(
-        [mockQualityGateStatusCondition()],
-        [mockQualityGateStatusCondition()]
-      )
-    ).toBe(true);
-  });
-
-  it('should correctly return false if any condition is different', () => {
-    expect(isSameStatusConditionList([mockQualityGateStatusCondition()])).toBe(false);
-    expect(isSameStatusConditionList(undefined, [mockQualityGateStatusCondition()])).toBe(false);
-    expect(isSameStatusConditionList([], [mockQualityGateStatusCondition()])).toBe(false);
-    expect(isSameStatusConditionList([mockQualityGateStatusCondition()], [])).toBe(false);
-    expect(
-      isSameStatusConditionList(
-        [mockQualityGateStatusCondition({ metric: 'foo' })],
-        [mockQualityGateStatusCondition({ metric: 'bar' })]
-      )
-    ).toBe(false);
-    expect(
-      isSameStatusConditionList(
-        [mockQualityGateStatusCondition({ metric: 'foo', level: '2.0' })],
-        [mockQualityGateStatusCondition({ metric: 'foo', level: '1.0' })]
-      )
-    ).toBe(false);
-  });
-});
index 090647a8781aff02b96a4f8783ff21ce71c9a8ce..11c63b2ed97fb0d59a9133c2bc175888698ae28c 100644 (file)
@@ -32,17 +32,3 @@ export function extractStatusConditionsFromProjectStatus(
       }))
     : [];
 }
-
-export function isSameStatusConditionList(
-  conditions: T.QualityGateStatusCondition[] = [],
-  prevConditions: T.QualityGateStatusCondition[] = []
-): boolean {
-  if (conditions.length !== prevConditions.length) {
-    return false;
-  } else {
-    const filtered = conditions.filter(c1 => {
-      return !prevConditions.find(c2 => c2.metric === c1.metric && c2.level === c1.level);
-    });
-    return filtered.length === 0;
-  }
-}