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';
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;
}
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({});
* 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', () => {
]);
});
});
-
-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);
- });
-});
}))
: [];
}
-
-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;
- }
-}