浏览代码

SONAR-10019 Display effective versions on Web API page

tags/7.5
Stas Vilchik 5 年前
父节点
当前提交
a4b523d32b

+ 14
- 1
server/sonar-web/src/main/js/apps/web-api/components/DeprecatedBadge.tsx 查看文件

@@ -22,12 +22,25 @@ import Tooltip from '../../../components/controls/Tooltip';
import { translate, translateWithParameters } from '../../../helpers/l10n';

export default function DeprecatedBadge({ since }: { since?: string }) {
const version = since && parseVersion(since);
const overlay = version
? translateWithParameters('api_documentation.will_be_removed_in_x', `${version.major + 2}.0`)
: translate('api_documentation.deprecation_tooltip');
const label = since
? translateWithParameters('api_documentation.deprecated_since_x', since)
: translate('api_documentation.deprecated');
return (
<Tooltip overlay={translate('api_documentation.deprecation_tooltip')}>
<Tooltip overlay={overlay}>
<span className="badge badge-warning">{label}</span>
</Tooltip>
);
}

function parseVersion(version: string) {
const match = /(\d+)\.(\d+)/.exec(version);
if (match) {
return { major: Number(match[1]), minor: Number(match[2]) };
} else {
return undefined;
}
}

+ 34
- 0
server/sonar-web/src/main/js/apps/web-api/components/__tests__/DeprecatedBadge-test.tsx 查看文件

@@ -0,0 +1,34 @@
/*
* SonarQube
* Copyright (C) 2009-2018 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 * as React from 'react';
import { shallow } from 'enzyme';
import DeprecatedBadge from '../DeprecatedBadge';

it('should render with version', () => {
expect(shallow(<DeprecatedBadge since="5.6" />)).toMatchSnapshot();
});

it('should render without version', () => {
expect(shallow(<DeprecatedBadge />)).toMatchSnapshot();
});

it('should render with malformed version', () => {
expect(shallow(<DeprecatedBadge since="foo" />)).toMatchSnapshot();
});

+ 37
- 0
server/sonar-web/src/main/js/apps/web-api/components/__tests__/__snapshots__/DeprecatedBadge-test.tsx.snap 查看文件

@@ -0,0 +1,37 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`should render with malformed version 1`] = `
<Tooltip
overlay="api_documentation.deprecation_tooltip"
>
<span
className="badge badge-warning"
>
api_documentation.deprecated_since_x.foo
</span>
</Tooltip>
`;

exports[`should render with version 1`] = `
<Tooltip
overlay="api_documentation.will_be_removed_in_x.7.0"
>
<span
className="badge badge-warning"
>
api_documentation.deprecated_since_x.5.6
</span>
</Tooltip>
`;

exports[`should render without version 1`] = `
<Tooltip
overlay="api_documentation.deprecation_tooltip"
>
<span
className="badge badge-warning"
>
api_documentation.deprecated
</span>
</Tooltip>
`;

+ 1
- 0
sonar-core/src/main/resources/org/sonar/l10n/core.properties 查看文件

@@ -2524,6 +2524,7 @@ api_documentation.max_length=Maximum length
api_documentation.internal=internal
api_documentation.deprecated=deprecated
api_documentation.deprecated_since_x=deprecated since {0}
api_documentation.will_be_removed_in_x=Will be removed in {0}
api_documentation.parameters=Parameters
api_documentation.response_example=Response Example
api_documentation.changelog=Changelog

正在加载...
取消
保存