From: Wouter Admiraal Date: Wed, 17 Jul 2019 07:18:16 +0000 (+0200) Subject: SONAR-12292 Remove redundant WS call when QG conditions are updated X-Git-Tag: 8.0~280 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=50f8e916bdfdaa372fc4f0c3bd3feb26077b3588;p=sonarqube.git SONAR-12292 Remove redundant WS call when QG conditions are updated --- diff --git a/server/sonar-web/src/main/js/apps/overview/pullRequests/ReviewApp.tsx b/server/sonar-web/src/main/js/apps/overview/pullRequests/ReviewApp.tsx index 8a3a942b3ac..db6a3680f9b 100644 --- a/server/sonar-web/src/main/js/apps/overview/pullRequests/ReviewApp.tsx +++ b/server/sonar-web/src/main/js/apps/overview/pullRequests/ReviewApp.tsx @@ -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 { 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; } diff --git a/server/sonar-web/src/main/js/apps/overview/pullRequests/__tests__/ReviewApp-test.tsx b/server/sonar-web/src/main/js/apps/overview/pullRequests/__tests__/ReviewApp-test.tsx index 4ec662fe9de..a2c81894995 100644 --- a/server/sonar-web/src/main/js/apps/overview/pullRequests/__tests__/ReviewApp-test.tsx +++ b/server/sonar-web/src/main/js/apps/overview/pullRequests/__tests__/ReviewApp-test.tsx @@ -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({}); diff --git a/server/sonar-web/src/main/js/helpers/__tests__/qualityGates-test.ts b/server/sonar-web/src/main/js/helpers/__tests__/qualityGates-test.ts index 340f158919c..f0a7d8e408e 100644 --- a/server/sonar-web/src/main/js/helpers/__tests__/qualityGates-test.ts +++ b/server/sonar-web/src/main/js/helpers/__tests__/qualityGates-test.ts @@ -17,11 +17,8 @@ * 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); - }); -}); diff --git a/server/sonar-web/src/main/js/helpers/qualityGates.ts b/server/sonar-web/src/main/js/helpers/qualityGates.ts index 090647a8781..11c63b2ed97 100644 --- a/server/sonar-web/src/main/js/helpers/qualityGates.ts +++ b/server/sonar-web/src/main/js/helpers/qualityGates.ts @@ -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; - } -}