From 46d075adfb3c4a666010a14d925203690bad0f10 Mon Sep 17 00:00:00 2001 From: Wouter Admiraal Date: Thu, 4 Apr 2019 15:16:46 +0200 Subject: Improve test coverage --- .../main/js/helpers/__tests__/qualityGates-test.ts | 71 ++++++++++++++++++++++ .../sonar-web/src/main/js/helpers/qualityGates.ts | 8 +-- 2 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 server/sonar-web/src/main/js/helpers/__tests__/qualityGates-test.ts (limited to 'server/sonar-web/src/main/js/helpers') 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 new file mode 100644 index 00000000000..1b440f03edf --- /dev/null +++ b/server/sonar-web/src/main/js/helpers/__tests__/qualityGates-test.ts @@ -0,0 +1,71 @@ +/* + * SonarQube + * Copyright (C) 2009-2019 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +import { + isSameStatusConditionList, + extractStatusConditionsFromProjectStatus +} from '../qualityGates'; +import { mockQualityGateStatusCondition, mockQualityGateProjectStatus } from '../testMocks'; + +describe('extractStatusConditionsFromProjectStatus', () => { + it('should correclty extract the conditions for the project status', () => { + expect(extractStatusConditionsFromProjectStatus(mockQualityGateProjectStatus())).toEqual([ + { + actual: '0', + error: '1.0', + level: 'OK', + metric: 'new_bugs', + op: 'GT', + period: 1 + } + ]); + }); +}); + +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 5dbb8a257b1..090647a8781 100644 --- a/server/sonar-web/src/main/js/helpers/qualityGates.ts +++ b/server/sonar-web/src/main/js/helpers/qualityGates.ts @@ -34,12 +34,10 @@ export function extractStatusConditionsFromProjectStatus( } export function isSameStatusConditionList( - conditions?: T.QualityGateStatusCondition[], - prevConditions?: T.QualityGateStatusCondition[] + conditions: T.QualityGateStatusCondition[] = [], + prevConditions: T.QualityGateStatusCondition[] = [] ): boolean { - if (conditions === undefined || prevConditions === undefined) { - return !(prevConditions || conditions); - } else if (conditions.length !== prevConditions.length) { + if (conditions.length !== prevConditions.length) { return false; } else { const filtered = conditions.filter(c1 => { -- cgit v1.2.3