aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web
diff options
context:
space:
mode:
authorJeremy Davis <jeremy.davis@sonarsource.com>2020-12-14 14:57:33 +0100
committersonartech <sonartech@sonarsource.com>2020-12-22 20:09:36 +0000
commit4d95e4f93fc695ef1eb492e0d823b1d76abb31e8 (patch)
tree0c093ca502437508d39646bf14f3503223fb4285 /server/sonar-web
parent9dc6361a06ccec4f33c6ac4691cb7739a83defb3 (diff)
downloadsonarqube-4d95e4f93fc695ef1eb492e0d823b1d76abb31e8.tar.gz
sonarqube-4d95e4f93fc695ef1eb492e0d823b1d76abb31e8.zip
SONAR-13999 Remove orgs from issues
Diffstat (limited to 'server/sonar-web')
-rw-r--r--server/sonar-web/src/main/js/api/issues.ts28
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/App.tsx70
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/AppContainer.tsx46
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/BulkChangeModal.tsx15
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx21
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/__tests__/App-test.tsx10
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/__tests__/BulkChangeModal-test.tsx12
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/__tests__/ComponentBreadcrumbs-test.tsx18
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/__tests__/IssuesList-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/App-test.tsx.snap26
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/ComponentBreadcrumbs-test.tsx.snap8
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesList-test.tsx.snap6
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesSourceViewer-test.tsx.snap4
-rw-r--r--server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssue-test.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssue-test.tsx.snap2
-rw-r--r--server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssueBox-test.tsx.snap12
-rw-r--r--server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssueLocationsNavigator-test.tsx.snap4
-rw-r--r--server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/__tests__/__snapshots__/CrossComponentSourceViewerWrapper-test.tsx.snap2
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/AssigneeFacet.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/AuthorFacet.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/DirectoryFacet.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/FileFacet.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/LanguageFacet.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/RuleFacet.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/Sidebar.tsx28
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/StandardFacet.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/ProjectFacet-test.tsx8
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/RuleFacet-test.tsx80
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/Sidebar-test.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/__snapshots__/RuleFacet-test.tsx.snap30
-rw-r--r--server/sonar-web/src/main/js/apps/issues/utils.ts27
-rw-r--r--server/sonar-web/src/main/js/components/SourceViewer/__tests__/__snapshots__/SourceViewerBase-test.tsx.snap4
-rw-r--r--server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/LineIssuesList-test.tsx2
-rw-r--r--server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/Line-test.tsx.snap28
-rw-r--r--server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/LineCode-test.tsx.snap4
-rw-r--r--server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/LineIssuesList-test.tsx.snap4
-rw-r--r--server/sonar-web/src/main/js/components/issue/__tests__/__snapshots__/IssueView-test.tsx.snap8
-rw-r--r--server/sonar-web/src/main/js/components/issue/actions.ts2
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueActionsBar.tsx2
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueAssign.tsx7
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueMessage.tsx17
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueSeverity.tsx3
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueTags.tsx10
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueTitleBar.tsx1
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueType.tsx3
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/IssueAssign-test.tsx12
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/IssueMessage-test.tsx5
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueActionsBar-test.tsx.snap38
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueAssign-test.tsx.snap21
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTags-test.tsx.snap2
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTitleBar-test.tsx.snap11
-rw-r--r--server/sonar-web/src/main/js/components/issue/popups/SetAssigneePopup.tsx1
-rw-r--r--server/sonar-web/src/main/js/components/issue/popups/SetIssueTagsPopup.tsx5
-rw-r--r--server/sonar-web/src/main/js/components/issue/popups/__tests__/SetAssigneePopup-test.tsx7
-rw-r--r--server/sonar-web/src/main/js/components/issue/popups/__tests__/SetIssueTagsPopup-test.tsx4
-rw-r--r--server/sonar-web/src/main/js/components/workspace/__tests__/Workspace-test.tsx16
-rw-r--r--server/sonar-web/src/main/js/components/workspace/__tests__/__snapshots__/Workspace-test.tsx.snap4
-rw-r--r--server/sonar-web/src/main/js/components/workspace/context.ts1
-rw-r--r--server/sonar-web/src/main/js/helpers/__tests__/urls-test.ts12
-rw-r--r--server/sonar-web/src/main/js/helpers/issues.ts30
-rw-r--r--server/sonar-web/src/main/js/helpers/mocks/issues.ts28
-rw-r--r--server/sonar-web/src/main/js/helpers/testMocks.ts2
-rw-r--r--server/sonar-web/src/main/js/helpers/urls.ts4
-rw-r--r--server/sonar-web/src/main/js/types/issues.ts82
-rw-r--r--server/sonar-web/src/main/js/types/types.d.ts2
69 files changed, 356 insertions, 531 deletions
diff --git a/server/sonar-web/src/main/js/api/issues.ts b/server/sonar-web/src/main/js/api/issues.ts
index d0756260502..bb3a396e702 100644
--- a/server/sonar-web/src/main/js/api/issues.ts
+++ b/server/sonar-web/src/main/js/api/issues.ts
@@ -20,27 +20,7 @@
import { getJSON, post, postJSON, RequestData } from 'sonar-ui-common/helpers/request';
import throwGlobalError from '../app/utils/throwGlobalError';
import getCoverageStatus from '../components/SourceViewer/helpers/getCoverageStatus';
-import { RawIssue } from '../helpers/issues';
-
-export interface IssueResponse {
- components?: Array<{ key: string; name: string }>;
- issue: RawIssue;
- rules?: Array<{}>;
- users?: Array<T.UserBase>;
-}
-
-interface IssuesResponse {
- components?: { key: string; organization: string; name: string }[];
- effortTotal: number;
- facets: Array<{
- property: string;
- values: { count: number; val: string }[];
- }>;
- issues: RawIssue[];
- paging: T.Paging;
- rules?: Array<{}>;
- users?: Array<T.UserBase>;
-}
+import { IssueResponse, RawIssuesResponse } from '../types/issues';
type FacetName =
| 'assigned_to_me'
@@ -63,7 +43,7 @@ type FacetName =
| 'tags'
| 'types';
-export function searchIssues(query: RequestData): Promise<IssuesResponse> {
+export function searchIssues(query: RequestData): Promise<RawIssuesResponse> {
return getJSON('/api/issues/search', query);
}
@@ -72,7 +52,7 @@ export function getFacets(
facets: FacetName[]
): Promise<{
facets: Array<{ property: string; values: T.FacetValue[] }>;
- response: IssuesResponse;
+ response: RawIssuesResponse;
}> {
const data = {
...query,
@@ -88,7 +68,7 @@ export function getFacets(
export function getFacet(
query: RequestData,
facet: FacetName
-): Promise<{ facet: { count: number; val: string }[]; response: IssuesResponse }> {
+): Promise<{ facet: { count: number; val: string }[]; response: RawIssuesResponse }> {
return getFacets(query, [facet]).then(r => {
return { facet: r.facets[0].values, response: r.response };
});
diff --git a/server/sonar-web/src/main/js/apps/issues/components/App.tsx b/server/sonar-web/src/main/js/apps/issues/components/App.tsx
index 1532651a140..93783d44945 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/App.tsx
@@ -51,6 +51,13 @@ import {
} from '../../../helpers/branch-like';
import { isSonarCloud } from '../../../helpers/system';
import { BranchLike } from '../../../types/branch-like';
+import {
+ Facet,
+ FetchIssuesPromise,
+ ReferencedComponent,
+ ReferencedLanguage,
+ ReferencedRule
+} from '../../../types/issues';
import { SecurityStandard } from '../../../types/security';
import * as actions from '../actions';
import ConciseIssuesList from '../conciseIssuesList/ConciseIssuesList';
@@ -60,16 +67,11 @@ import '../styles.css';
import {
areMyIssuesSelected,
areQueriesEqual,
- Facet,
getOpen,
mapFacet,
parseFacets,
parseQuery,
Query,
- RawFacet,
- ReferencedComponent,
- ReferencedLanguage,
- ReferencedRule,
saveMyIssues,
scrollToIssue,
serializeQuery,
@@ -86,28 +88,15 @@ import NoIssues from './NoIssues';
import NoMyIssues from './NoMyIssues';
import PageActions from './PageActions';
-interface FetchIssuesPromise {
- components: ReferencedComponent[];
- effortTotal: number;
- facets: RawFacet[];
- issues: T.Issue[];
- languages: ReferencedLanguage[];
- paging: T.Paging;
- rules: ReferencedRule[];
- users: T.UserBase[];
-}
-
interface Props {
branchLike?: BranchLike;
component?: T.Component;
currentUser: T.CurrentUser;
fetchBranchStatus: (branchLike: BranchLike, projectKey: string) => Promise<void>;
- fetchIssues: (query: T.RawQuery, requestOrganizations?: boolean) => Promise<FetchIssuesPromise>;
+ fetchIssues: (query: T.RawQuery) => Promise<FetchIssuesPromise>;
location: Location;
onBranchesChange?: () => void;
- organization?: { key: string };
router: Pick<Router, 'push' | 'replace'>;
- userOrganizations: T.Organization[];
}
export interface State {
@@ -424,17 +413,12 @@ export default class App extends React.PureComponent<Props, State> {
.join(',')
: undefined;
- const organizationKey =
- (component && component.organization) ||
- (this.props.organization && this.props.organization.key);
-
const parameters: T.Dict<string | undefined> = {
...getBranchLikeQuery(this.props.branchLike),
componentKeys: component && component.key,
s: 'FILE_LINE',
...serializeQuery(query),
ps: '100',
- organization: organizationKey,
facets,
...additional
};
@@ -452,7 +436,7 @@ export default class App extends React.PureComponent<Props, State> {
Object.assign(parameters, { assignees: '__me__' });
}
- return this.props.fetchIssues(parameters, false);
+ return this.props.fetchIssues(parameters);
};
fetchFirstIssues() {
@@ -630,7 +614,9 @@ export default class App extends React.PureComponent<Props, State> {
}));
}
},
- () => {}
+ () => {
+ /* Do nothing */
+ }
);
};
@@ -701,27 +687,20 @@ export default class App extends React.PureComponent<Props, State> {
const { component } = this.props;
const { myIssues, query } = this.state;
- const organizationKey =
- (component && component.organization) ||
- (this.props.organization && this.props.organization.key);
-
const parameters = {
...getBranchLikeQuery(this.props.branchLike),
componentKeys: component && component.key,
facets: mapFacet(property),
s: 'FILE_LINE',
...serializeQuery({ ...query, ...changes }),
- ps: 1,
- organization: organizationKey
+ ps: 1
};
if (myIssues) {
Object.assign(parameters, { assignees: '__me__' });
}
- return this.props
- .fetchIssues(parameters, false)
- .then(({ facets }) => parseFacets(facets)[property]);
+ return this.props.fetchIssues(parameters).then(({ facets }) => parseFacets(facets)[property]);
};
closeFacet = (property: string) => {
@@ -918,7 +897,6 @@ export default class App extends React.PureComponent<Props, State> {
fetchIssues={checkAll ? this.fetchIssues : this.getCheckedIssues}
onClose={this.handleCloseBulkChange}
onDone={this.handleBulkChangeDone}
- organization={this.props.organization}
/>
)}
</div>
@@ -926,20 +904,9 @@ export default class App extends React.PureComponent<Props, State> {
}
renderFacets() {
- const { component, currentUser, userOrganizations, branchLike } = this.props;
+ const { component, currentUser, branchLike } = this.props;
const { query } = this.state;
- const organizationKey =
- (component && component.organization) ||
- (this.props.organization && this.props.organization.key);
-
- const userOrganization =
- !isSonarCloud() ||
- userOrganizations.find(o => {
- return o.key === organizationKey;
- });
- const hideAuthorFacet = !userOrganization;
-
return (
<div className="layout-page-filters">
{currentUser.isLoggedIn && !isSonarCloud() && (
@@ -954,14 +921,12 @@ export default class App extends React.PureComponent<Props, State> {
component={component}
createdAfterIncludesTime={this.createdAfterIncludesTime()}
facets={this.state.facets}
- hideAuthorFacet={hideAuthorFacet}
loadSearchResultCount={this.loadSearchResultCount}
loadingFacets={this.state.loadingFacets}
myIssues={this.state.myIssues}
onFacetToggle={this.handleFacetToggle}
onFilterChange={this.handleFilterChange}
openFacets={this.state.openFacets}
- organization={this.props.organization}
query={query}
referencedComponentsById={this.state.referencedComponentsById}
referencedComponentsByKey={this.state.referencedComponentsByKey}
@@ -1029,7 +994,7 @@ export default class App extends React.PureComponent<Props, State> {
}
renderList() {
- const { branchLike, component, currentUser, organization } = this.props;
+ const { branchLike, component, currentUser } = this.props;
const { issues, loading, loadingMore, openIssue, paging } = this.state;
const selectedIndex = this.getSelectedIndex();
const selectedIssue = selectedIndex !== undefined ? issues[selectedIndex] : undefined;
@@ -1063,7 +1028,6 @@ export default class App extends React.PureComponent<Props, State> {
onIssueClick={this.openIssue}
onPopupToggle={this.handlePopupToggle}
openPopup={this.state.openPopup}
- organization={organization}
selectedIssue={selectedIssue}
/>
)}
@@ -1101,7 +1065,7 @@ export default class App extends React.PureComponent<Props, State> {
{this.renderBulkChange(openIssue)}
<PageActions
- canSetHome={Boolean(!this.props.organization && !this.props.component)}
+ canSetHome={!this.props.component}
effortTotal={this.state.effortTotal}
onReload={this.handleReload}
paging={paging}
diff --git a/server/sonar-web/src/main/js/apps/issues/components/AppContainer.tsx b/server/sonar-web/src/main/js/apps/issues/components/AppContainer.tsx
index 97f04d40be5..ba2169c52b4 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/AppContainer.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/AppContainer.tsx
@@ -17,53 +17,29 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-import { uniq } from 'lodash';
import { connect } from 'react-redux';
-import { Dispatch } from 'redux';
import { lazyLoadComponent } from 'sonar-ui-common/components/lazyLoadComponent';
import { searchIssues } from '../../../api/issues';
-import { getOrganizations } from '../../../api/organizations';
import throwGlobalError from '../../../app/utils/throwGlobalError';
import { withRouter } from '../../../components/hoc/withRouter';
import { parseIssueFromResponse } from '../../../helpers/issues';
-import { receiveOrganizations } from '../../../store/organizations';
import { fetchBranchStatus } from '../../../store/rootActions';
-import {
- areThereCustomOrganizations,
- getCurrentUser,
- getMyOrganizations,
- Store
-} from '../../../store/rootReducer';
+import { getCurrentUser, Store } from '../../../store/rootReducer';
+import { FetchIssuesPromise } from '../../../types/issues';
const IssuesAppContainer = lazyLoadComponent(() => import('./App'), 'IssuesAppContainer');
interface StateProps {
currentUser: T.CurrentUser;
- userOrganizations: T.Organization[];
+ fetchIssues: (query: T.RawQuery) => Promise<FetchIssuesPromise>;
}
const mapStateToProps = (state: Store): StateProps => ({
currentUser: getCurrentUser(state),
- userOrganizations: getMyOrganizations(state)
+ fetchIssues
});
-const fetchIssueOrganizations = (organizationKeys: string[]) => (dispatch: Dispatch) => {
- if (!organizationKeys.length) {
- return Promise.resolve();
- }
-
- return getOrganizations({ organizations: organizationKeys.join() }).then(
- response => dispatch(receiveOrganizations(response.organizations)),
- throwGlobalError
- );
-};
-
-const fetchIssues = (query: T.RawQuery, requestOrganizations = true) => (
- // use `Function` to be able to do `dispatch(...).then(...)`
- dispatch: Function,
- getState: () => Store
-) => {
- const organizationsEnabled = areThereCustomOrganizations(getState());
+const fetchIssues = (query: T.RawQuery) => {
return searchIssues({
...query,
additionalFields: '_all',
@@ -75,22 +51,12 @@ const fetchIssues = (query: T.RawQuery, requestOrganizations = true) => (
);
return { ...response, issues: parsedIssues };
})
- .then(response => {
- const organizationKeys = uniq([
- ...response.issues.map(issue => issue.organization),
- ...(response.components || []).map(component => component.organization)
- ]);
- return organizationsEnabled && requestOrganizations
- ? dispatch(fetchIssueOrganizations(organizationKeys)).then(() => response)
- : response;
- })
.catch(throwGlobalError);
};
// have to type cast this, because of async action
const mapDispatchToProps = {
- fetchBranchStatus: fetchBranchStatus as any,
- fetchIssues: fetchIssues as any
+ fetchBranchStatus: fetchBranchStatus as any
};
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(IssuesAppContainer));
diff --git a/server/sonar-web/src/main/js/apps/issues/components/BulkChangeModal.tsx b/server/sonar-web/src/main/js/apps/issues/components/BulkChangeModal.tsx
index a5c94c651a6..3bcb1606ebf 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/BulkChangeModal.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/BulkChangeModal.tsx
@@ -56,7 +56,6 @@ interface Props {
fetchIssues: (x: {}) => Promise<{ issues: T.Issue[]; paging: T.Paging }>;
onClose: () => void;
onDone: () => void;
- organization: { key: string } | undefined;
}
interface FormFields {
@@ -64,7 +63,6 @@ interface FormFields {
assignee?: AssigneeOption;
comment?: string;
notifications?: boolean;
- organization?: string;
removeTags?: Array<{ label: string; value: string }>;
severity?: string;
transition?: string;
@@ -94,20 +92,13 @@ export default class BulkChangeModal extends React.PureComponent<Props, State> {
constructor(props: Props) {
super(props);
- let organization = props.component && props.component.organization;
- if (props.organization && !organization) {
- organization = props.organization.key;
- }
- this.state = { initialTags: [], issues: [], loading: true, submitting: false, organization };
+ this.state = { initialTags: [], issues: [], loading: true, submitting: false };
}
componentDidMount() {
this.mounted = true;
- Promise.all([
- this.loadIssues(),
- searchIssueTags({ organization: this.state.organization })
- ]).then(
+ Promise.all([this.loadIssues(), searchIssueTags({})]).then(
([{ issues, paging }, tags]) => {
if (this.mounted) {
if (issues.length > MAX_PAGE_SIZE) {
@@ -178,7 +169,7 @@ export default class BulkChangeModal extends React.PureComponent<Props, State> {
};
handleTagsSearch = (query: string) => {
- return searchIssueTags({ organization: this.state.organization, q: query }).then(tags =>
+ return searchIssueTags({ q: query }).then(tags =>
tags.map(tag => ({ label: tag, value: tag }))
);
};
diff --git a/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx b/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx
index 0b0cfdc2cd0..8cde7b93c53 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx
@@ -20,26 +20,12 @@
import * as React from 'react';
import QualifierIcon from 'sonar-ui-common/components/icons/QualifierIcon';
import { collapsePath, limitComponentName } from 'sonar-ui-common/helpers/path';
-import Organization from '../../../components/shared/Organization';
import { getSelectedLocation } from '../utils';
interface Props {
component?: T.Component;
- issue: Pick<
- T.Issue,
- | 'component'
- | 'componentLongName'
- | 'componentQualifier'
- | 'flows'
- | 'organization'
- | 'project'
- | 'projectName'
- | 'secondaryLocations'
- | 'subProject'
- | 'subProjectName'
- >;
+ issue: T.Issue;
link?: boolean;
- organization: { key: string } | undefined;
selectedFlowIndex?: number;
selectedLocationIndex?: number;
}
@@ -47,12 +33,9 @@ interface Props {
export default function ComponentBreadcrumbs({
component,
issue,
- organization,
selectedFlowIndex,
selectedLocationIndex
}: Props) {
- const displayOrganization =
- !organization && (!component || ['VW', 'SVW'].includes(component.qualifier));
const displayProject = !component || !['TRK', 'BRC', 'DIR'].includes(component.qualifier);
const displaySubProject = !component || !['BRC', 'DIR'].includes(component.qualifier);
@@ -63,8 +46,6 @@ export default function ComponentBreadcrumbs({
<div className="component-name text-ellipsis">
<QualifierIcon className="spacer-right" qualifier={issue.componentQualifier} />
- {displayOrganization && <Organization link={false} organizationKey={issue.organization} />}
-
{displayProject && (
<span title={issue.projectName}>
{limitComponentName(issue.projectName)}
diff --git a/server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx b/server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx
index d16a1585e34..cd35d9e3328 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx
@@ -33,7 +33,6 @@ interface Props {
onIssueClick: (issueKey: string) => void;
onPopupToggle: (issue: string, popupName: string, open?: boolean) => void;
openPopup: { issue: string; name: string } | undefined;
- organization: { key: string } | undefined;
selectedIssue: T.Issue | undefined;
}
@@ -85,7 +84,6 @@ export default class IssuesList extends React.PureComponent<Props, State> {
onFilterChange={this.props.onFilterChange}
onPopupToggle={this.props.onPopupToggle}
openPopup={openPopup && openPopup.issue === issue.key ? openPopup.name : undefined}
- organization={this.props.organization}
previousIssue={index > 0 ? issues[index - 1] : undefined}
selected={selectedIssue != null && selectedIssue.key === issue.key}
/>
diff --git a/server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx b/server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx
index 780d2bda72f..0d2ea282495 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx
@@ -34,7 +34,6 @@ interface Props {
onFilterChange: (changes: Partial<Query>) => void;
onPopupToggle: (issue: string, popupName: string, open?: boolean) => void;
openPopup: string | undefined;
- organization: { key: string } | undefined;
previousIssue: T.Issue | undefined;
selected: boolean;
}
@@ -99,11 +98,7 @@ export default class ListItem extends React.PureComponent<Props> {
<div className="issues-workspace-list-item">
{displayComponent && (
<div className="issues-workspace-list-component note">
- <ComponentBreadcrumbs
- component={component}
- issue={this.props.issue}
- organization={this.props.organization}
- />
+ <ComponentBreadcrumbs component={component} issue={this.props.issue} />
</div>
)}
<Issue
diff --git a/server/sonar-web/src/main/js/apps/issues/components/__tests__/App-test.tsx b/server/sonar-web/src/main/js/apps/issues/components/__tests__/App-test.tsx
index 7f639106c24..11d1ab3c705 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/__tests__/App-test.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/__tests__/App-test.tsx
@@ -71,7 +71,7 @@ const ISSUES = [
const FACETS = [{ property: 'severities', values: [{ val: 'MINOR', count: 4 }] }];
const PAGING = { pageIndex: 1, pageSize: 100, total: 4 };
-const referencedComponent = { key: 'foo-key', name: 'bar', organization: 'John', uuid: 'foo-uuid' };
+const referencedComponent = { key: 'foo-key', name: 'bar', uuid: 'foo-uuid' };
it('should render a list of issue', async () => {
const wrapper = shallowRender();
@@ -393,13 +393,12 @@ it('should handle createAfter query param with time', async () => {
wrapper.instance().fetchIssues({});
expect(fetchIssues).toBeCalledWith(
- expect.objectContaining({ createdAfter: '2020-10-21T17:21:00+0000' }),
- false
+ expect.objectContaining({ createdAfter: '2020-10-21T17:21:00+0000' })
);
});
function fetchIssuesMockFactory(keyCount = 0, lineCount = 1) {
- return jest.fn().mockImplementation(({ p }: any) =>
+ return jest.fn().mockImplementation(({ p }: { p: number }) =>
Promise.resolve({
components: [referencedComponent],
effortTotal: 1,
@@ -439,7 +438,6 @@ function shallowRender(props: Partial<App['props']> = {}) {
breadcrumbs: [],
key: 'foo',
name: 'bar',
- organization: 'John',
qualifier: 'Doe'
}}
currentUser={mockLoggedInUser()}
@@ -456,9 +454,7 @@ function shallowRender(props: Partial<App['props']> = {}) {
})}
location={mockLocation({ pathname: '/issues', query: {} })}
onBranchesChange={() => {}}
- organization={{ key: 'foo' }}
router={mockRouter()}
- userOrganizations={[]}
{...props}
/>
);
diff --git a/server/sonar-web/src/main/js/apps/issues/components/__tests__/BulkChangeModal-test.tsx b/server/sonar-web/src/main/js/apps/issues/components/__tests__/BulkChangeModal-test.tsx
index 9fb4eb8d9b7..21c9b4dd256 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/__tests__/BulkChangeModal-test.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/__tests__/BulkChangeModal-test.tsx
@@ -20,15 +20,16 @@
import { shallow } from 'enzyme';
import * as React from 'react';
import { waitAndUpdate } from 'sonar-ui-common/helpers/testUtils';
+import { searchIssueTags } from '../../../../api/issues';
import { mockIssue } from '../../../../helpers/testMocks';
import BulkChangeModal, { MAX_PAGE_SIZE } from '../BulkChangeModal';
jest.mock('../../../../api/issues', () => ({
- searchIssueTags: () => Promise.resolve([undefined, []])
+ searchIssueTags: jest.fn().mockResolvedValue([undefined, []])
}));
jest.mock('../BulkChangeModal', () => {
- const mock = require.requireActual('../BulkChangeModal');
+ const mock = jest.requireActual('../BulkChangeModal');
mock.MAX_PAGE_SIZE = 1;
return mock;
});
@@ -92,6 +93,12 @@ it('should properly handle the search for assignee', async () => {
expect(result).toMatchSnapshot();
});
+it('should properly handle the search for tags', async () => {
+ const wrapper = getWrapper([]);
+ await wrapper.instance().handleTagsSearch('query');
+ expect(searchIssueTags).toBeCalled();
+});
+
const getWrapper = (issues: T.Issue[]) => {
return shallow<BulkChangeModal>(
<BulkChangeModal
@@ -109,7 +116,6 @@ const getWrapper = (issues: T.Issue[]) => {
}
onClose={() => {}}
onDone={() => {}}
- organization={undefined}
/>
);
};
diff --git a/server/sonar-web/src/main/js/apps/issues/components/__tests__/ComponentBreadcrumbs-test.tsx b/server/sonar-web/src/main/js/apps/issues/components/__tests__/ComponentBreadcrumbs-test.tsx
index 0b2dd2ca53f..5776b81b648 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/__tests__/ComponentBreadcrumbs-test.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/__tests__/ComponentBreadcrumbs-test.tsx
@@ -19,31 +19,25 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
+import { mockIssue } from '../../../../helpers/testMocks';
import { ComponentQualifier } from '../../../../types/component';
import ComponentBreadcrumbs from '../ComponentBreadcrumbs';
-const baseIssue = {
+const baseIssue = mockIssue(false, {
component: 'comp',
componentLongName: 'comp-name',
componentQualifier: ComponentQualifier.File,
- flows: [],
- organization: 'org',
project: 'proj',
- projectName: 'proj-name',
- secondaryLocations: []
-};
+ projectName: 'proj-name'
+});
it('renders', () => {
expect(
- shallow(
- <ComponentBreadcrumbs component={undefined} issue={baseIssue} organization={undefined} />
- )
+ shallow(<ComponentBreadcrumbs component={undefined} issue={baseIssue} />)
).toMatchSnapshot();
});
it('renders with sub-project', () => {
const issue = { ...baseIssue, subProject: 'sub-proj', subProjectName: 'sub-proj-name' };
- expect(
- shallow(<ComponentBreadcrumbs component={undefined} issue={issue} organization={undefined} />)
- ).toMatchSnapshot();
+ expect(shallow(<ComponentBreadcrumbs component={undefined} issue={issue} />)).toMatchSnapshot();
});
diff --git a/server/sonar-web/src/main/js/apps/issues/components/__tests__/IssuesList-test.tsx b/server/sonar-web/src/main/js/apps/issues/components/__tests__/IssuesList-test.tsx
index 87e6fd84be0..292d143000d 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/__tests__/IssuesList-test.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/__tests__/IssuesList-test.tsx
@@ -46,7 +46,6 @@ function shallowRender(overrides: Partial<IssuesList['props']> = {}) {
onIssueClick={jest.fn()}
onPopupToggle={jest.fn()}
openPopup={undefined}
- organization={undefined}
selectedIssue={undefined}
{...overrides}
/>
diff --git a/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/App-test.tsx.snap b/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/App-test.tsx.snap
index 46e089390d2..51d877ba775 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/App-test.tsx.snap
+++ b/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/App-test.tsx.snap
@@ -103,7 +103,6 @@ exports[`should switch to source view if an issue is selected 1`] = `
"breadcrumbs": Array [],
"key": "foo",
"name": "bar",
- "organization": "John",
"qualifier": "Doe",
}
}
@@ -121,11 +120,9 @@ exports[`should switch to source view if an issue is selected 1`] = `
"key": "foo",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -152,11 +149,9 @@ exports[`should switch to source view if an issue is selected 1`] = `
"key": "bar",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -233,11 +228,9 @@ exports[`should switch to source view if an issue is selected 1`] = `
"key": "third",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [
@@ -283,11 +276,9 @@ exports[`should switch to source view if an issue is selected 1`] = `
"key": "fourth",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -309,11 +300,6 @@ exports[`should switch to source view if an issue is selected 1`] = `
onIssueCheck={[Function]}
onIssueClick={[Function]}
onPopupToggle={[Function]}
- organization={
- Object {
- "key": "foo",
- }
- }
selectedIssue={
Object {
"actions": Array [],
@@ -327,11 +313,9 @@ exports[`should switch to source view if an issue is selected 1`] = `
"key": "foo",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -403,11 +387,9 @@ exports[`should switch to source view if an issue is selected 2`] = `
"key": "foo",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -434,11 +416,9 @@ exports[`should switch to source view if an issue is selected 2`] = `
"key": "bar",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -515,11 +495,9 @@ exports[`should switch to source view if an issue is selected 2`] = `
"key": "third",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [
@@ -565,11 +543,9 @@ exports[`should switch to source view if an issue is selected 2`] = `
"key": "fourth",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -654,11 +630,9 @@ exports[`should switch to source view if an issue is selected 2`] = `
"key": "third",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [
diff --git a/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/ComponentBreadcrumbs-test.tsx.snap b/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/ComponentBreadcrumbs-test.tsx.snap
index 33e198ab34e..bc18b11ab3a 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/ComponentBreadcrumbs-test.tsx.snap
+++ b/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/ComponentBreadcrumbs-test.tsx.snap
@@ -8,10 +8,6 @@ exports[`renders 1`] = `
className="spacer-right"
qualifier="FIL"
/>
- <Connect(Organization)
- link={false}
- organizationKey="org"
- />
<span
title="proj-name"
>
@@ -36,10 +32,6 @@ exports[`renders with sub-project 1`] = `
className="spacer-right"
qualifier="FIL"
/>
- <Connect(Organization)
- link={false}
- organizationKey="org"
- />
<span
title="proj-name"
>
diff --git a/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesList-test.tsx.snap b/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesList-test.tsx.snap
index c7a30dd2379..975eb1fe1cf 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesList-test.tsx.snap
+++ b/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesList-test.tsx.snap
@@ -25,11 +25,9 @@ exports[`should render correctly 2`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -68,11 +66,9 @@ exports[`should render correctly 2`] = `
"key": "AVsae-CQS-9G3txfbFN3",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -107,11 +103,9 @@ exports[`should render correctly 2`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
diff --git a/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesSourceViewer-test.tsx.snap b/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesSourceViewer-test.tsx.snap
index a0bd5ab199c..fe59402ddfe 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesSourceViewer-test.tsx.snap
+++ b/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesSourceViewer-test.tsx.snap
@@ -77,11 +77,9 @@ exports[`should render CrossComponentSourceViewer correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [
@@ -180,11 +178,9 @@ exports[`should render CrossComponentSourceViewer correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [
diff --git a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssue-test.tsx b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssue-test.tsx
index c9a124f9661..b1e7934034a 100644
--- a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssue-test.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssue-test.tsx
@@ -32,11 +32,9 @@ const issue: T.Issue = {
fromHotspot: false,
key: '',
message: '',
- organization: '',
project: '',
projectKey: '',
projectName: '',
- projectOrganization: '',
rule: '',
ruleName: '',
secondaryLocations: [],
diff --git a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssue-test.tsx.snap b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssue-test.tsx.snap
index 002ac690399..67deeb639ef 100644
--- a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssue-test.tsx.snap
+++ b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssue-test.tsx.snap
@@ -18,11 +18,9 @@ exports[`should render 1`] = `
"fromHotspot": false,
"key": "",
"message": "",
- "organization": "",
"project": "",
"projectKey": "",
"projectName": "",
- "projectOrganization": "",
"rule": "",
"ruleName": "",
"secondaryLocations": Array [],
diff --git a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssueBox-test.tsx.snap b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssueBox-test.tsx.snap
index 4acba10db82..4eb63a1a28c 100644
--- a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssueBox-test.tsx.snap
+++ b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssueBox-test.tsx.snap
@@ -33,11 +33,9 @@ exports[`should render correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -71,11 +69,9 @@ exports[`should render correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -110,11 +106,9 @@ exports[`should render correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -217,11 +211,9 @@ exports[`should render correctly 2`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [
@@ -324,11 +316,9 @@ exports[`should render correctly 2`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [
@@ -432,11 +422,9 @@ exports[`should render correctly 2`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [
diff --git a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssueLocationsNavigator-test.tsx.snap b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssueLocationsNavigator-test.tsx.snap
index d90ab990817..0434816e9e4 100644
--- a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssueLocationsNavigator-test.tsx.snap
+++ b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/__snapshots__/ConciseIssueLocationsNavigator-test.tsx.snap
@@ -40,11 +40,9 @@ exports[`should render flow locations in different file 1`] = `
"key": "",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -211,11 +209,9 @@ exports[`should render taint analysis issues correctly 1`] = `
"key": "",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
diff --git a/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/__tests__/__snapshots__/CrossComponentSourceViewerWrapper-test.tsx.snap b/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/__tests__/__snapshots__/CrossComponentSourceViewerWrapper-test.tsx.snap
index 277d63d0309..06624417ee0 100644
--- a/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/__tests__/__snapshots__/CrossComponentSourceViewerWrapper-test.tsx.snap
+++ b/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/__tests__/__snapshots__/CrossComponentSourceViewerWrapper-test.tsx.snap
@@ -111,11 +111,9 @@ exports[`should render correctly 2`] = `
"key": "1",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/AssigneeFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/AssigneeFacet.tsx
index ee703c4f321..9a507b0e40e 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/AssigneeFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/AssigneeFacet.tsx
@@ -24,7 +24,8 @@ import { highlightTerm } from 'sonar-ui-common/helpers/search';
import ListStyleFacet from '../../../components/facet/ListStyleFacet';
import Avatar from '../../../components/ui/Avatar';
import { isUserActive } from '../../../helpers/users';
-import { Facet, Query, searchAssignees } from '../utils';
+import { Facet } from '../../../types/issues';
+import { Query, searchAssignees } from '../utils';
interface Props {
assigned: boolean;
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/AuthorFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/AuthorFacet.tsx
index 96590327447..540e77a8817 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/AuthorFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/AuthorFacet.tsx
@@ -23,7 +23,8 @@ import { translate } from 'sonar-ui-common/helpers/l10n';
import { highlightTerm } from 'sonar-ui-common/helpers/search';
import { searchIssueAuthors } from '../../../api/issues';
import ListStyleFacet from '../../../components/facet/ListStyleFacet';
-import { Facet, Query } from '../utils';
+import { Facet } from '../../../types/issues';
+import { Query } from '../utils';
interface Props {
component: T.Component | undefined;
@@ -32,7 +33,6 @@ interface Props {
onChange: (changes: Partial<Query>) => void;
onToggle: (property: string) => void;
open: boolean;
- organization: string | undefined;
query: Query;
stats: T.Dict<number> | undefined;
authors: string[];
@@ -50,7 +50,6 @@ export default class AuthorFacet extends React.PureComponent<Props> {
const project =
component && ['TRK', 'VW', 'APP'].includes(component.qualifier) ? component.key : undefined;
return searchIssueAuthors({
- organization: this.props.organization,
project,
ps: SEARCH_SIZE, // maximum
q: query
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/DirectoryFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/DirectoryFacet.tsx
index d00d2b91ae5..122050d76ce 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/DirectoryFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/DirectoryFacet.tsx
@@ -28,7 +28,8 @@ import ListStyleFacet from '../../../components/facet/ListStyleFacet';
import { getBranchLikeQuery } from '../../../helpers/branch-like';
import { BranchLike } from '../../../types/branch-like';
import { TreeComponentWithPath } from '../../../types/component';
-import { Facet, Query } from '../utils';
+import { Facet } from '../../../types/issues';
+import { Query } from '../utils';
interface Props {
branchLike?: BranchLike;
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/FileFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/FileFacet.tsx
index cd6a0f1dee3..c37fcbd731e 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/FileFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/FileFacet.tsx
@@ -29,7 +29,8 @@ import ListStyleFacet from '../../../components/facet/ListStyleFacet';
import { getBranchLikeQuery } from '../../../helpers/branch-like';
import { BranchLike } from '../../../types/branch-like';
import { TreeComponentWithPath } from '../../../types/component';
-import { Facet, Query } from '../utils';
+import { Facet } from '../../../types/issues';
+import { Query } from '../utils';
interface Props {
branchLike?: BranchLike;
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/LanguageFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/LanguageFacet.tsx
index f9b6206999a..72e0332fa52 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/LanguageFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/LanguageFacet.tsx
@@ -24,7 +24,8 @@ import { translate } from 'sonar-ui-common/helpers/l10n';
import { highlightTerm } from 'sonar-ui-common/helpers/search';
import ListStyleFacet from '../../../components/facet/ListStyleFacet';
import { getLanguages, Store } from '../../../store/rootReducer';
-import { Facet, Query, ReferencedLanguage } from '../utils';
+import { Facet, ReferencedLanguage } from '../../../types/issues';
+import { Query } from '../utils';
interface InstalledLanguage {
key: string;
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.tsx
index de55ac147b3..3bb0ca3ab87 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.tsx
@@ -25,7 +25,8 @@ import { highlightTerm } from 'sonar-ui-common/helpers/search';
import { getTree, searchProjects } from '../../../api/components';
import ListStyleFacet from '../../../components/facet/ListStyleFacet';
import { ComponentQualifier } from '../../../types/component';
-import { Facet, Query, ReferencedComponent } from '../utils';
+import { Facet, ReferencedComponent } from '../../../types/issues';
+import { Query } from '../utils';
interface Props {
component: T.Component | undefined;
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/RuleFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/RuleFacet.tsx
index 5d078cba546..4f0d2d1148a 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/RuleFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/RuleFacet.tsx
@@ -22,7 +22,8 @@ import * as React from 'react';
import { translate } from 'sonar-ui-common/helpers/l10n';
import { searchRules } from '../../../api/rules';
import ListStyleFacet from '../../../components/facet/ListStyleFacet';
-import { Facet, Query, ReferencedRule } from '../utils';
+import { Facet, ReferencedRule } from '../../../types/issues';
+import { Query } from '../utils';
interface Props {
fetching: boolean;
@@ -31,7 +32,6 @@ interface Props {
onChange: (changes: Partial<Query>) => void;
onToggle: (property: string) => void;
open: boolean;
- organization: string | undefined;
query: Query;
referencedRules: T.Dict<ReferencedRule>;
rules: string[];
@@ -40,11 +40,10 @@ interface Props {
export default class RuleFacet extends React.PureComponent<Props> {
handleSearch = (query: string, page = 1) => {
- const { languages, organization } = this.props;
+ const { languages } = this.props;
return searchRules({
f: 'name,langName',
languages: languages.length ? languages.join() : undefined,
- organization,
q: query,
p: page,
ps: 30,
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/Sidebar.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/Sidebar.tsx
index 7442fad4ca2..6797d3fb828 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/Sidebar.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/Sidebar.tsx
@@ -22,7 +22,13 @@ import { connect } from 'react-redux';
import { getGlobalSettingValue, Store } from '../../../store/rootReducer';
import { BranchLike } from '../../../types/branch-like';
import { ComponentQualifier } from '../../../types/component';
-import { Facet, Query, ReferencedComponent, ReferencedLanguage, ReferencedRule } from '../utils';
+import {
+ Facet,
+ ReferencedComponent,
+ ReferencedLanguage,
+ ReferencedRule
+} from '../../../types/issues';
+import { Query } from '../utils';
import AssigneeFacet from './AssigneeFacet';
import AuthorFacet from './AuthorFacet';
import CreationDateFacet from './CreationDateFacet';
@@ -44,14 +50,12 @@ export interface Props {
component: T.Component | undefined;
createdAfterIncludesTime: boolean;
facets: T.Dict<Facet | undefined>;
- hideAuthorFacet?: boolean;
loadSearchResultCount: (property: string, changes: Partial<Query>) => Promise<Facet>;
loadingFacets: T.Dict<boolean>;
myIssues: boolean;
onFacetToggle: (property: string) => void;
onFilterChange: (changes: Partial<Query>) => void;
openFacets: T.Dict<boolean>;
- organization: { key: string } | undefined;
query: Query;
referencedComponentsById: T.Dict<ReferencedComponent>;
referencedComponentsByKey: T.Dict<ReferencedComponent>;
@@ -99,22 +103,11 @@ export class Sidebar extends React.PureComponent<Props> {
}
render() {
- const {
- component,
- createdAfterIncludesTime,
- facets,
- hideAuthorFacet,
- openFacets,
- query
- } = this.props;
+ const { component, createdAfterIncludesTime, facets, openFacets, query } = this.props;
const displayProjectsFacet =
!component || !['TRK', 'BRC', 'DIR', 'DEV_PRJ'].includes(component.qualifier);
- const displayAuthorFacet = !hideAuthorFacet && (!component || component.qualifier !== 'DEV');
-
- const organizationKey =
- (component && component.organization) ||
- (this.props.organization && this.props.organization.key);
+ const displayAuthorFacet = !component || component.qualifier !== 'DEV';
return (
<>
@@ -214,7 +207,6 @@ export class Sidebar extends React.PureComponent<Props> {
onChange={this.props.onFilterChange}
onToggle={this.props.onFacetToggle}
open={!!openFacets.rules}
- organization={organizationKey}
query={query}
referencedRules={this.props.referencedRules}
rules={query.rules}
@@ -227,7 +219,6 @@ export class Sidebar extends React.PureComponent<Props> {
onChange={this.props.onFilterChange}
onToggle={this.props.onFacetToggle}
open={!!openFacets.tags}
- organization={organizationKey}
query={query}
stats={facets.tags}
tags={query.tags}
@@ -270,7 +261,6 @@ export class Sidebar extends React.PureComponent<Props> {
onChange={this.props.onFilterChange}
onToggle={this.props.onFacetToggle}
open={!!openFacets.authors}
- organization={organizationKey}
query={query}
stats={facets.authors}
/>
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/StandardFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/StandardFacet.tsx
index 541989aabf1..9657291c3d7 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/StandardFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/StandardFacet.tsx
@@ -34,8 +34,9 @@ import {
renderSansTop25Category,
renderSonarSourceSecurityCategory
} from '../../../helpers/security-standard';
+import { Facet } from '../../../types/issues';
import { SecurityStandard, Standards, StandardType } from '../../../types/security';
-import { Facet, formatFacetStat, Query, STANDARDS } from '../utils';
+import { formatFacetStat, Query, STANDARDS } from '../utils';
interface Props {
cwe: string[];
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.tsx
index a80b8af5154..16d6b93fa0a 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.tsx
@@ -25,7 +25,8 @@ import { highlightTerm } from 'sonar-ui-common/helpers/search';
import { searchIssueTags } from '../../../api/issues';
import { colors } from '../../../app/theme';
import ListStyleFacet from '../../../components/facet/ListStyleFacet';
-import { Facet, Query } from '../utils';
+import { Facet } from '../../../types/issues';
+import { Query } from '../utils';
interface Props {
component: T.Component | undefined;
@@ -34,7 +35,6 @@ interface Props {
onChange: (changes: Partial<Query>) => void;
onToggle: (property: string) => void;
open: boolean;
- organization: string | undefined;
query: Query;
stats: T.Dict<number> | undefined;
tags: string[];
@@ -48,7 +48,6 @@ export default class TagFacet extends React.PureComponent<Props> {
const project =
component && ['TRK', 'VW', 'APP'].includes(component.qualifier) ? component.key : undefined;
return searchIssueTags({
- organization: this.props.organization,
project,
ps: SEARCH_SIZE,
q: query
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/ProjectFacet-test.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/ProjectFacet-test.tsx
index bead8220531..4267fac4043 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/ProjectFacet-test.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/ProjectFacet-test.tsx
@@ -23,7 +23,8 @@ import * as React from 'react';
import { getTree, searchProjects } from '../../../../api/components';
import { mockComponent } from '../../../../helpers/testMocks';
import { ComponentQualifier } from '../../../../types/component';
-import { Query, ReferencedComponent } from '../../utils';
+import { ReferencedComponent } from '../../../../types/issues';
+import { Query } from '../../utils';
import ProjectFacet from '../ProjectFacet';
jest.mock('../../../../api/components', () => ({
@@ -31,7 +32,6 @@ jest.mock('../../../../api/components', () => ({
searchProjects: jest.fn().mockResolvedValue({
components: [],
facets: [],
- organizations: [],
paging: {}
})
}));
@@ -77,8 +77,8 @@ it('should handle search for projects in portfolio', async () => {
describe("ListStyleFacet's renderers", () => {
const components: ReferencedComponent[] = [
- { key: 'projectKey', name: 'First Project Name', organization: '', uuid: '141324' },
- { key: 'projectKey2', name: 'Second Project Name', organization: '', uuid: '643878' }
+ { key: 'projectKey', name: 'First Project Name', uuid: '141324' },
+ { key: 'projectKey2', name: 'Second Project Name', uuid: '643878' }
];
const referencedComponents = keyBy(components, c => c.key);
const wrapper = shallowRender({ referencedComponents });
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/RuleFacet-test.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/RuleFacet-test.tsx
new file mode 100644
index 00000000000..67f0c5835f6
--- /dev/null
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/RuleFacet-test.tsx
@@ -0,0 +1,80 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2020 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 { shallow } from 'enzyme';
+import * as React from 'react';
+import { searchRules } from '../../../../api/rules';
+import { mockReferencedRule } from '../../../../helpers/mocks/issues';
+import { mockRule } from '../../../../helpers/testMocks';
+import { Query } from '../../utils';
+import RuleFacet from '../RuleFacet';
+
+jest.mock('../../../../api/rules', () => ({
+ searchRules: jest.fn().mockResolvedValue({})
+}));
+
+it('should render correctly', () => {
+ expect(shallowRender()).toMatchSnapshot();
+});
+
+it('should handle search', async () => {
+ const wrapper = shallowRender();
+
+ const query = 'query';
+
+ await wrapper.instance().handleSearch(query);
+
+ expect(searchRules).toBeCalledWith(expect.objectContaining({ languages: 'js,java', q: query }));
+});
+
+describe('ListStyleFacet Renderers', () => {
+ const referencedRules = { r1: mockReferencedRule() };
+ const instance = shallowRender({ referencedRules }).instance();
+
+ it('should include renderFacetItem', () => {
+ const rule = referencedRules.r1;
+ expect(instance.getRuleName('r1')).toBe(`(${rule.langName}) ${rule.name}`);
+ expect(instance.getRuleName('nonexistent')).toBe('nonexistent');
+ });
+
+ it('should include renderSearchResult', () => {
+ const rule = mockRule();
+ expect(instance.renderSearchResult(rule)).toBe(`(${rule.langName}) ${rule.name}`);
+ expect(instance.renderSearchResult(mockRule({ langName: '' }))).toBe(rule.name);
+ });
+});
+
+function shallowRender(props: Partial<RuleFacet['props']> = {}) {
+ return shallow<RuleFacet>(
+ <RuleFacet
+ fetching={true}
+ languages={['js', 'java']}
+ loadSearchResultCount={jest.fn()}
+ onChange={jest.fn()}
+ onToggle={jest.fn()}
+ open={false}
+ query={{} as Query}
+ referencedRules={{}}
+ rules={['r1']}
+ stats={{}}
+ {...props}
+ />
+ );
+}
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/Sidebar-test.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/Sidebar-test.tsx
index a72ba4cb645..a74b9ba7238 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/Sidebar-test.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/Sidebar-test.tsx
@@ -85,7 +85,6 @@ const renderSidebar = (props?: Partial<Sidebar['props']>) => {
onFacetToggle={jest.fn()}
onFilterChange={jest.fn()}
openFacets={{}}
- organization={undefined}
query={{ types: [''] } as Query}
referencedComponentsById={{}}
referencedComponentsByKey={{}}
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/__snapshots__/RuleFacet-test.tsx.snap b/server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/__snapshots__/RuleFacet-test.tsx.snap
new file mode 100644
index 00000000000..bfbc8e0c0e7
--- /dev/null
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/__snapshots__/RuleFacet-test.tsx.snap
@@ -0,0 +1,30 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render correctly 1`] = `
+<ListStyleFacet
+ facetHeader="issues.facet.rules"
+ fetching={true}
+ getFacetItemText={[Function]}
+ getSearchResultKey={[Function]}
+ getSearchResultText={[Function]}
+ loadSearchResultCount={[Function]}
+ maxInitialItems={15}
+ maxItems={100}
+ minSearchLength={2}
+ onChange={[MockFunction]}
+ onSearch={[Function]}
+ onToggle={[MockFunction]}
+ open={false}
+ property="rules"
+ query={Object {}}
+ renderFacetItem={[Function]}
+ renderSearchResult={[Function]}
+ searchPlaceholder="search.search_for_rules"
+ stats={Object {}}
+ values={
+ Array [
+ "r1",
+ ]
+ }
+/>
+`;
diff --git a/server/sonar-web/src/main/js/apps/issues/utils.ts b/server/sonar-web/src/main/js/apps/issues/utils.ts
index a75278626fe..0e112d06186 100644
--- a/server/sonar-web/src/main/js/apps/issues/utils.ts
+++ b/server/sonar-web/src/main/js/apps/issues/utils.ts
@@ -32,6 +32,7 @@ import {
import { scrollToElement } from 'sonar-ui-common/helpers/scrolling';
import { get, save } from 'sonar-ui-common/helpers/storage';
import { searchUsers } from '../../api/users';
+import { Facet, RawFacet } from '../../types/issues';
import { SecurityStandard, StandardType } from '../../types/security';
export interface Query {
@@ -150,15 +151,6 @@ export function serializeQuery(query: Query): T.RawQuery {
export const areQueriesEqual = (a: T.RawQuery, b: T.RawQuery) =>
queriesEqual(parseQuery(a), parseQuery(b));
-export interface RawFacet {
- property: string;
- values: Array<{ val: string; count: number }>;
-}
-
-export interface Facet {
- [value: string]: number;
-}
-
export function mapFacet(facet: string) {
const propertyMapping: T.Dict<string> = {
modules: 'moduleUuids'
@@ -192,23 +184,6 @@ export function formatFacetStat(stat: number | undefined) {
return stat && formatMeasure(stat, 'SHORT_INT');
}
-export interface ReferencedComponent {
- key: string;
- name: string;
- organization: string;
- path?: string;
- uuid: string;
-}
-
-export interface ReferencedLanguage {
- name: string;
-}
-
-export interface ReferencedRule {
- langName?: string;
- name: string;
-}
-
export const searchAssignees = (
query: string,
page = 1
diff --git a/server/sonar-web/src/main/js/components/SourceViewer/__tests__/__snapshots__/SourceViewerBase-test.tsx.snap b/server/sonar-web/src/main/js/components/SourceViewer/__tests__/__snapshots__/SourceViewerBase-test.tsx.snap
index 6aa4a3556eb..6c3cbd2af18 100644
--- a/server/sonar-web/src/main/js/components/SourceViewer/__tests__/__snapshots__/SourceViewerBase-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/SourceViewer/__tests__/__snapshots__/SourceViewerBase-test.tsx.snap
@@ -84,11 +84,9 @@ exports[`should render correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -120,11 +118,9 @@ exports[`should render correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
diff --git a/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/LineIssuesList-test.tsx b/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/LineIssuesList-test.tsx
index 54255e0bef2..f204e58dfbf 100644
--- a/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/LineIssuesList-test.tsx
+++ b/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/LineIssuesList-test.tsx
@@ -32,10 +32,8 @@ const issueBase: T.Issue = {
flows: [],
fromHotspot: false,
message: '',
- organization: '',
project: '',
projectName: '',
- projectOrganization: '',
projectKey: '',
rule: '',
ruleName: '',
diff --git a/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/Line-test.tsx.snap b/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/Line-test.tsx.snap
index 864377427da..ec5a30fd9ec 100644
--- a/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/Line-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/Line-test.tsx.snap
@@ -65,11 +65,9 @@ exports[`should render correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -96,11 +94,9 @@ exports[`should render correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -207,11 +203,9 @@ exports[`should render correctly for last, new, and highlighted lines 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -238,11 +232,9 @@ exports[`should render correctly for last, new, and highlighted lines 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -364,11 +356,9 @@ exports[`should render correctly with coverage 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -395,11 +385,9 @@ exports[`should render correctly with coverage 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -567,11 +555,9 @@ exports[`should render correctly with duplication information 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -598,11 +584,9 @@ exports[`should render correctly with duplication information 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -694,11 +678,9 @@ exports[`should render correctly with issues info 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -725,11 +707,9 @@ exports[`should render correctly with issues info 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -789,11 +769,9 @@ exports[`should render correctly with issues info 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -820,11 +798,9 @@ exports[`should render correctly with issues info 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -916,11 +892,9 @@ exports[`should render correctly: no SCM 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -947,11 +921,9 @@ exports[`should render correctly: no SCM 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
diff --git a/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/LineCode-test.tsx.snap b/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/LineCode-test.tsx.snap
index fa3ee7c6dba..13141eafff8 100644
--- a/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/LineCode-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/LineCode-test.tsx.snap
@@ -64,11 +64,9 @@ exports[`render code 1`] = `
"key": "issue-1",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -95,11 +93,9 @@ exports[`render code 1`] = `
"key": "issue-2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
diff --git a/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/LineIssuesList-test.tsx.snap b/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/LineIssuesList-test.tsx.snap
index 457c4cad762..a5ed57fdcf2 100644
--- a/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/LineIssuesList-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/LineIssuesList-test.tsx.snap
@@ -17,11 +17,9 @@ exports[`render issues list 1`] = `
"fromHotspot": false,
"key": "foo",
"message": "",
- "organization": "",
"project": "",
"projectKey": "",
"projectName": "",
- "projectOrganization": "",
"rule": "",
"ruleName": "",
"secondaryLocations": Array [],
@@ -50,11 +48,9 @@ exports[`render issues list 1`] = `
"fromHotspot": false,
"key": "bar",
"message": "",
- "organization": "",
"project": "",
"projectKey": "",
"projectName": "",
- "projectOrganization": "",
"rule": "",
"ruleName": "",
"secondaryLocations": Array [],
diff --git a/server/sonar-web/src/main/js/components/issue/__tests__/__snapshots__/IssueView-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/__tests__/__snapshots__/IssueView-test.tsx.snap
index 159ead79b11..dfa6de16cee 100644
--- a/server/sonar-web/src/main/js/components/issue/__tests__/__snapshots__/IssueView-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/__tests__/__snapshots__/IssueView-test.tsx.snap
@@ -22,11 +22,9 @@ exports[`should render hotspots correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -58,11 +56,9 @@ exports[`should render hotspots correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -121,11 +117,9 @@ exports[`should render issues correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -171,11 +165,9 @@ exports[`should render issues correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
diff --git a/server/sonar-web/src/main/js/components/issue/actions.ts b/server/sonar-web/src/main/js/components/issue/actions.ts
index 978512ca3d4..ada7255b899 100644
--- a/server/sonar-web/src/main/js/components/issue/actions.ts
+++ b/server/sonar-web/src/main/js/components/issue/actions.ts
@@ -17,9 +17,9 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-import { IssueResponse } from '../../api/issues';
import throwGlobalError from '../../app/utils/throwGlobalError';
import { parseIssueFromResponse } from '../../helpers/issues';
+import { IssueResponse } from '../../types/issues';
export const updateIssue = (
onChange: (issue: T.Issue) => void,
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueActionsBar.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueActionsBar.tsx
index 0d062921417..2f703d48618 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueActionsBar.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueActionsBar.tsx
@@ -19,7 +19,7 @@
*/
import * as React from 'react';
import { translate, translateWithParameters } from 'sonar-ui-common/helpers/l10n';
-import { IssueResponse } from '../../../api/issues';
+import { IssueResponse } from '../../../types/issues';
import { updateIssue } from '../actions';
import IssueAssign from './IssueAssign';
import IssueCommentAction from './IssueCommentAction';
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueAssign.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueAssign.tsx
index 400bb63add8..33f554bacac 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueAssign.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueAssign.tsx
@@ -27,10 +27,7 @@ import SetAssigneePopup from '../popups/SetAssigneePopup';
interface Props {
isOpen: boolean;
- issue: Pick<
- T.Issue,
- 'assignee' | 'assigneeActive' | 'assigneeAvatar' | 'assigneeName' | 'projectOrganization'
- >;
+ issue: T.Issue;
canAssign: boolean;
onAssign: (login: string) => void;
togglePopup: (popup: string, show?: boolean) => void;
@@ -80,7 +77,7 @@ export default class IssueAssign extends React.PureComponent<Props> {
closeOnEscape={true}
onRequestClose={this.handleClose}
open={this.props.isOpen && this.props.canAssign}
- overlay={<SetAssigneePopup issue={this.props.issue} onSelect={this.props.onAssign} />}>
+ overlay={<SetAssigneePopup onSelect={this.props.onAssign} />}>
<ButtonLink
className="issue-action issue-action-with-options js-issue-assign"
onClick={this.toggleAssign}>
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueMessage.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueMessage.tsx
index e0ccc98b4f8..f45f7349ec4 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueMessage.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueMessage.tsx
@@ -31,21 +31,12 @@ export interface IssueMessageProps {
manualVulnerability: boolean;
message: string;
onOpenRule: WorkspaceContextShape['openRule'];
- organization: string;
ruleKey: string;
ruleStatus?: RuleStatus;
}
export default function IssueMessage(props: IssueMessageProps) {
- const {
- engine,
- engineName,
- manualVulnerability,
- message,
- organization,
- ruleKey,
- ruleStatus
- } = props;
+ const { engine, engineName, manualVulnerability, message, ruleKey, ruleStatus } = props;
const ruleEngine = engineName ? engineName : engine;
return (
@@ -54,7 +45,11 @@ export default function IssueMessage(props: IssueMessageProps) {
<ButtonLink
aria-label={translate('issue.why_this_issue.long')}
className="issue-see-rule spacer-right text-baseline"
- onClick={() => props.onOpenRule({ key: ruleKey, organization })}>
+ onClick={() =>
+ props.onOpenRule({
+ key: ruleKey
+ })
+ }>
{translate('issue.why_this_issue')}
</ButtonLink>
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueSeverity.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueSeverity.tsx
index 8c3ab1f4d58..eb9335541b0 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueSeverity.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueSeverity.tsx
@@ -21,7 +21,8 @@ import * as React from 'react';
import { ButtonLink } from 'sonar-ui-common/components/controls/buttons';
import Toggler from 'sonar-ui-common/components/controls/Toggler';
import DropdownIcon from 'sonar-ui-common/components/icons/DropdownIcon';
-import { IssueResponse, setIssueSeverity } from '../../../api/issues';
+import { setIssueSeverity } from '../../../api/issues';
+import { IssueResponse } from '../../../types/issues';
import SeverityHelper from '../../shared/SeverityHelper';
import SetSeverityPopup from '../popups/SetSeverityPopup';
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueTags.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueTags.tsx
index 68be8b40a25..2e7fb8ad155 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueTags.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueTags.tsx
@@ -29,7 +29,7 @@ import SetIssueTagsPopup from '../popups/SetIssueTagsPopup';
interface Props {
canSetTags: boolean;
isOpen: boolean;
- issue: Pick<T.Issue, 'key' | 'projectOrganization' | 'tags'>;
+ issue: Pick<T.Issue, 'key' | 'tags'>;
onChange: (issue: T.Issue) => void;
togglePopup: (popup: string, show?: boolean) => void;
}
@@ -64,13 +64,7 @@ export default class IssueTags extends React.PureComponent<Props> {
<Toggler
onRequestClose={this.handleClose}
open={this.props.isOpen}
- overlay={
- <SetIssueTagsPopup
- organization={issue.projectOrganization}
- selectedTags={tags}
- setTags={this.setTags}
- />
- }>
+ overlay={<SetIssueTagsPopup selectedTags={tags} setTags={this.setTags} />}>
<ButtonLink
className="issue-action issue-action-with-options js-issue-edit-tags"
onClick={this.toggleSetTags}>
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueTitleBar.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueTitleBar.tsx
index c19554396a6..62587827389 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueTitleBar.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueTitleBar.tsx
@@ -84,7 +84,6 @@ export default function IssueTitleBar(props: IssueTitleBarProps) {
manualVulnerability={issue.fromHotspot && issue.type === 'VULNERABILITY'}
message={issue.message}
onOpenRule={openRule}
- organization={issue.organization}
ruleKey={issue.rule}
ruleStatus={issue.ruleStatus as RuleStatus | undefined}
/>
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueType.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueType.tsx
index f1cba97151b..1c6066f61b7 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueType.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueType.tsx
@@ -23,8 +23,9 @@ import Toggler from 'sonar-ui-common/components/controls/Toggler';
import DropdownIcon from 'sonar-ui-common/components/icons/DropdownIcon';
import IssueTypeIcon from 'sonar-ui-common/components/icons/IssueTypeIcon';
import { translate } from 'sonar-ui-common/helpers/l10n';
-import { IssueResponse, setIssueType } from '../../../api/issues';
+import { setIssueType } from '../../../api/issues';
import { colors } from '../../../app/theme';
+import { IssueResponse } from '../../../types/issues';
import SetTypePopup from '../popups/SetTypePopup';
interface Props {
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/IssueAssign-test.tsx b/server/sonar-web/src/main/js/components/issue/components/__tests__/IssueAssign-test.tsx
index 8654ce3d0f6..f7d96bba152 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/IssueAssign-test.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/IssueAssign-test.tsx
@@ -20,14 +20,14 @@
import { shallow } from 'enzyme';
import * as React from 'react';
import { click } from 'sonar-ui-common/helpers/testUtils';
+import { mockIssue } from '../../../../helpers/testMocks';
import IssueAssign from '../IssueAssign';
-const issue = {
+const issue = mockIssue(false, {
assignee: 'john',
assigneeAvatar: 'gravatarhash',
- assigneeName: 'John Doe',
- projectOrganization: 'org'
-};
+ assigneeName: 'John Doe'
+});
it('should render without the action when the correct rights are missing', () => {
expect(shallowRender({ canAssign: false })).toMatchSnapshot();
@@ -38,7 +38,9 @@ it('should render with the action', () => {
});
it('should render a fallback assignee display if assignee info are not available', () => {
- expect(shallowRender({ issue: { projectOrganization: 'org' } })).toMatchSnapshot();
+ expect(
+ shallowRender({ issue: mockIssue(false, { assignee: undefined, assigneeName: undefined }) })
+ ).toMatchSnapshot();
});
it('should open the popup when the button is clicked', () => {
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/IssueMessage-test.tsx b/server/sonar-web/src/main/js/components/issue/components/__tests__/IssueMessage-test.tsx
index a53ad25f7c0..368e46f1d5c 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/IssueMessage-test.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/IssueMessage-test.tsx
@@ -40,7 +40,9 @@ it('should handle click correctly', () => {
const onOpenRule = jest.fn();
const wrapper = shallowRender({ onOpenRule });
click(wrapper.find(ButtonLink));
- expect(onOpenRule).toBeCalledWith({ key: 'javascript:S1067', organization: 'myorg' });
+ expect(onOpenRule).toBeCalledWith({
+ key: 'javascript:S1067'
+ });
});
function shallowRender(props: Partial<IssueMessageProps> = {}) {
@@ -49,7 +51,6 @@ function shallowRender(props: Partial<IssueMessageProps> = {}) {
manualVulnerability={false}
message="Reduce the number of conditional operators (4) used in the expression"
onOpenRule={jest.fn()}
- organization="myorg"
ruleKey="javascript:S1067"
{...props}
/>
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueActionsBar-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueActionsBar-test.tsx.snap
index 229651354a3..a63ade64730 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueActionsBar-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueActionsBar-test.tsx.snap
@@ -28,11 +28,9 @@ exports[`should render commentable correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -73,11 +71,9 @@ exports[`should render commentable correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -118,11 +114,9 @@ exports[`should render commentable correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -163,11 +157,9 @@ exports[`should render commentable correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -219,11 +211,9 @@ exports[`should render commentable correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -274,11 +264,9 @@ exports[`should render effort correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -318,11 +306,9 @@ exports[`should render effort correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -362,11 +348,9 @@ exports[`should render effort correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -406,11 +390,9 @@ exports[`should render effort correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -463,11 +445,9 @@ exports[`should render effort correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -517,11 +497,9 @@ exports[`should render issue correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -560,11 +538,9 @@ exports[`should render issue correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -603,11 +579,9 @@ exports[`should render issue correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -646,11 +620,9 @@ exports[`should render issue correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -693,11 +665,9 @@ exports[`should render issue correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -747,11 +717,9 @@ exports[`should render security hotspot correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -790,11 +758,9 @@ exports[`should render security hotspot correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -833,11 +799,9 @@ exports[`should render security hotspot correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -880,11 +844,9 @@ exports[`should render security hotspot correctly 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueAssign-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueAssign-test.tsx.snap
index 324452de6ab..7f3fc48c7c2 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueAssign-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueAssign-test.tsx.snap
@@ -19,14 +19,6 @@ exports[`should open the popup when the button is clicked 2`] = `
open={true}
overlay={
<Connect(withCurrentUser(SetAssigneePopup))
- issue={
- Object {
- "assignee": "john",
- "assigneeAvatar": "gravatarhash",
- "assigneeName": "John Doe",
- "projectOrganization": "org",
- }
- }
onSelect={[MockFunction]}
/>
}
@@ -68,11 +60,6 @@ exports[`should render a fallback assignee display if assignee info are not avai
open={false}
overlay={
<Connect(withCurrentUser(SetAssigneePopup))
- issue={
- Object {
- "projectOrganization": "org",
- }
- }
onSelect={[MockFunction]}
/>
}
@@ -104,14 +91,6 @@ exports[`should render with the action 1`] = `
open={false}
overlay={
<Connect(withCurrentUser(SetAssigneePopup))
- issue={
- Object {
- "assignee": "john",
- "assigneeAvatar": "gravatarhash",
- "assigneeName": "John Doe",
- "projectOrganization": "org",
- }
- }
onSelect={[MockFunction]}
/>
}
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTags-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTags-test.tsx.snap
index 33b1bf6a40b..001d1d6908f 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTags-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTags-test.tsx.snap
@@ -18,7 +18,6 @@ exports[`should open the popup when the button is clicked 2`] = `
open={true}
overlay={
<SetIssueTagsPopup
- organization="foo"
selectedTags={
Array [
"mytag",
@@ -56,7 +55,6 @@ exports[`should render with the action 1`] = `
open={false}
overlay={
<SetIssueTagsPopup
- organization="foo"
selectedTags={
Array [
"mytag",
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTitleBar-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTitleBar-test.tsx.snap
index 927066dc9da..2e401f7f8bd 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTitleBar-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTitleBar-test.tsx.snap
@@ -33,11 +33,9 @@ exports[`should render correctly: default 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -102,7 +100,6 @@ exports[`should render correctly: issue message 1`] = `
manualVulnerability={false}
message="Reduce the number of conditional operators (4) used in the expression"
onOpenRule={[Function]}
- organization="myorg"
ruleKey="javascript:S1067"
/>
`;
@@ -140,11 +137,9 @@ exports[`should render correctly: with filter 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -217,11 +212,9 @@ exports[`should render correctly: with filter 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [],
@@ -328,11 +321,9 @@ exports[`should render correctly: with multi locations 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [
@@ -503,11 +494,9 @@ exports[`should render correctly: with multi locations and link 1`] = `
"key": "AVsae-CQS-9G3txfbFN2",
"line": 25,
"message": "Reduce the number of conditional operators (4) used in the expression",
- "organization": "myorg",
"project": "myproject",
"projectKey": "foo",
"projectName": "Foo",
- "projectOrganization": "org",
"rule": "javascript:S1067",
"ruleName": "foo",
"secondaryLocations": Array [
diff --git a/server/sonar-web/src/main/js/components/issue/popups/SetAssigneePopup.tsx b/server/sonar-web/src/main/js/components/issue/popups/SetAssigneePopup.tsx
index 759c43169fd..da42ac63dd1 100644
--- a/server/sonar-web/src/main/js/components/issue/popups/SetAssigneePopup.tsx
+++ b/server/sonar-web/src/main/js/components/issue/popups/SetAssigneePopup.tsx
@@ -31,7 +31,6 @@ import Avatar from '../../ui/Avatar';
interface Props {
currentUser: T.CurrentUser;
- issue: Pick<T.Issue, 'projectOrganization'>;
onSelect: (login: string) => void;
}
diff --git a/server/sonar-web/src/main/js/components/issue/popups/SetIssueTagsPopup.tsx b/server/sonar-web/src/main/js/components/issue/popups/SetIssueTagsPopup.tsx
index a4a29fd13fe..2a85bbf5d2e 100644
--- a/server/sonar-web/src/main/js/components/issue/popups/SetIssueTagsPopup.tsx
+++ b/server/sonar-web/src/main/js/components/issue/popups/SetIssueTagsPopup.tsx
@@ -25,7 +25,6 @@ import { searchIssueTags } from '../../../api/issues';
import TagsSelector from '../../tags/TagsSelector';
interface Props {
- organization: string;
selectedTags: string[];
setTags: (tags: string[]) => void;
}
@@ -35,6 +34,7 @@ interface State {
}
const LIST_SIZE = 10;
+const MAX_LIST_SIZE = 100;
export default class SetIssueTagsPopup extends React.PureComponent<Props, State> {
mounted = false;
@@ -51,8 +51,7 @@ export default class SetIssueTagsPopup extends React.PureComponent<Props, State>
onSearch = (query: string) => {
return searchIssueTags({
q: query,
- ps: Math.min(this.props.selectedTags.length - 1 + LIST_SIZE, 100),
- organization: this.props.organization
+ ps: Math.min(this.props.selectedTags.length - 1 + LIST_SIZE, MAX_LIST_SIZE)
}).then(
(tags: string[]) => {
if (this.mounted) {
diff --git a/server/sonar-web/src/main/js/components/issue/popups/__tests__/SetAssigneePopup-test.tsx b/server/sonar-web/src/main/js/components/issue/popups/__tests__/SetAssigneePopup-test.tsx
index 58cde836f8e..7049e67e90e 100644
--- a/server/sonar-web/src/main/js/components/issue/popups/__tests__/SetAssigneePopup-test.tsx
+++ b/server/sonar-web/src/main/js/components/issue/popups/__tests__/SetAssigneePopup-test.tsx
@@ -47,11 +47,6 @@ it('should allow to search for a user on SQ', async () => {
function shallowRender(props: Partial<SetAssigneePopup['props']> = {}) {
return shallow(
- <SetAssigneePopup
- currentUser={mockLoggedInUser()}
- issue={{ projectOrganization: 'foo' }}
- onSelect={jest.fn()}
- {...props}
- />
+ <SetAssigneePopup currentUser={mockLoggedInUser()} onSelect={jest.fn()} {...props} />
);
}
diff --git a/server/sonar-web/src/main/js/components/issue/popups/__tests__/SetIssueTagsPopup-test.tsx b/server/sonar-web/src/main/js/components/issue/popups/__tests__/SetIssueTagsPopup-test.tsx
index 41a8ffe526c..c0c02e38d4e 100644
--- a/server/sonar-web/src/main/js/components/issue/popups/__tests__/SetIssueTagsPopup-test.tsx
+++ b/server/sonar-web/src/main/js/components/issue/popups/__tests__/SetIssueTagsPopup-test.tsx
@@ -22,9 +22,7 @@ import * as React from 'react';
import SetIssueTagsPopup from '../SetIssueTagsPopup';
it('should render tags popup correctly', () => {
- const element = shallow(
- <SetIssueTagsPopup organization="foo" selectedTags={['mytag']} setTags={jest.fn()} />
- );
+ const element = shallow(<SetIssueTagsPopup selectedTags={['mytag']} setTags={jest.fn()} />);
element.setState({ searchResult: ['mytag', 'test', 'second'] });
expect(element).toMatchSnapshot();
});
diff --git a/server/sonar-web/src/main/js/components/workspace/__tests__/Workspace-test.tsx b/server/sonar-web/src/main/js/components/workspace/__tests__/Workspace-test.tsx
index 7d2e11d8126..8115b6eecce 100644
--- a/server/sonar-web/src/main/js/components/workspace/__tests__/Workspace-test.tsx
+++ b/server/sonar-web/src/main/js/components/workspace/__tests__/Workspace-test.tsx
@@ -79,19 +79,18 @@ it('should render correctly', () => {
).toMatchSnapshot('open component');
expect(
shallowRender({
- rules: [{ key: 'foo', organization: 'default' }],
+ rules: [{ key: 'foo' }],
open: { rule: 'foo' }
})
).toMatchSnapshot('open rule');
});
it('should correctly load data from local storage', () => {
- const rule1 = { [TYPE_KEY]: WorkspaceTypes.Rule, key: 'foo', organization: 'default' };
+ const rule1 = { [TYPE_KEY]: WorkspaceTypes.Rule, key: 'foo' };
const rule2 = {
[TYPE_KEY]: WorkspaceTypes.Rule,
key: 'baz',
- name: 'Baz',
- organization: 'default'
+ name: 'Baz'
};
const component = {
[TYPE_KEY]: WorkspaceTypes.Component,
@@ -115,7 +114,7 @@ it('should correctly load data from local storage', () => {
it('should correctly store data locally', () => {
const wrapper = shallowRender({
components: [{ branchLike: mockBranch(), key: 'foo' }],
- rules: [{ key: 'foo', organization: 'default' }]
+ rules: [{ key: 'foo' }]
});
wrapper.instance().saveWorkspace();
expect((save as jest.Mock).mock.calls[0][1]).toMatchSnapshot();
@@ -129,7 +128,7 @@ it('should load rule engine names', async () => {
it('should allow elements to be loaded and updated', () => {
const component = { key: 'foo', branchLike: mockBranch() };
- const rule = { key: 'bar', organization: 'default' };
+ const rule = { key: 'bar' };
const wrapper = shallowRender({
components: [component],
rules: [rule]
@@ -155,7 +154,7 @@ it('should allow elements to be loaded and updated', () => {
it('should be resizable', () => {
(get as jest.Mock).mockReturnValue(
- JSON.stringify([{ [TYPE_KEY]: WorkspaceTypes.Rule, key: 'foo', organization: 'default' }])
+ JSON.stringify([{ [TYPE_KEY]: WorkspaceTypes.Rule, key: 'foo' }])
);
const wrapper = shallowRender({ open: { rule: 'foo' } });
const instance = wrapper.instance();
@@ -180,8 +179,7 @@ it('should be resizable', () => {
it('should be openable/collapsible', () => {
const rule = {
key: 'baz',
- name: 'Baz',
- organization: 'default'
+ name: 'Baz'
};
const component = {
branchLike: mockBranch(),
diff --git a/server/sonar-web/src/main/js/components/workspace/__tests__/__snapshots__/Workspace-test.tsx.snap b/server/sonar-web/src/main/js/components/workspace/__tests__/__snapshots__/Workspace-test.tsx.snap
index 9eea835f72d..b94880cf499 100644
--- a/server/sonar-web/src/main/js/components/workspace/__tests__/__snapshots__/Workspace-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/workspace/__tests__/__snapshots__/Workspace-test.tsx.snap
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`should correctly store data locally 1`] = `"[{\\"branchLike\\":{\\"analysisDate\\":\\"2018-01-01\\",\\"excludedFromPurge\\":true,\\"isMain\\":false,\\"name\\":\\"branch-6.7\\"},\\"key\\":\\"foo\\",\\"__type__\\":\\"component\\"},{\\"key\\":\\"foo\\",\\"organization\\":\\"default\\",\\"__type__\\":\\"rule\\"}]"`;
+exports[`should correctly store data locally 1`] = `"[{\\"branchLike\\":{\\"analysisDate\\":\\"2018-01-01\\",\\"excludedFromPurge\\":true,\\"isMain\\":false,\\"name\\":\\"branch-6.7\\"},\\"key\\":\\"foo\\",\\"__type__\\":\\"component\\"},{\\"key\\":\\"foo\\",\\"__type__\\":\\"rule\\"}]"`;
exports[`should render correctly: default 1`] = `
<ContextProvider
@@ -111,7 +111,6 @@ exports[`should render correctly: open rule 1`] = `
Array [
Object {
"key": "foo",
- "organization": "default",
},
]
}
@@ -127,7 +126,6 @@ exports[`should render correctly: open rule 1`] = `
rule={
Object {
"key": "foo",
- "organization": "default",
}
}
/>
diff --git a/server/sonar-web/src/main/js/components/workspace/context.ts b/server/sonar-web/src/main/js/components/workspace/context.ts
index 2d29ae77984..5eae1a80466 100644
--- a/server/sonar-web/src/main/js/components/workspace/context.ts
+++ b/server/sonar-web/src/main/js/components/workspace/context.ts
@@ -31,7 +31,6 @@ export interface ComponentDescriptor {
export interface RuleDescriptor {
key: string;
name?: string;
- organization: string;
}
export interface WorkspaceContextShape {
diff --git a/server/sonar-web/src/main/js/helpers/__tests__/urls-test.ts b/server/sonar-web/src/main/js/helpers/__tests__/urls-test.ts
index 4e48d39c13a..48ae3ccba71 100644
--- a/server/sonar-web/src/main/js/helpers/__tests__/urls-test.ts
+++ b/server/sonar-web/src/main/js/helpers/__tests__/urls-test.ts
@@ -18,11 +18,13 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import { ComponentQualifier } from '../../types/component';
+import { IssueType } from '../../types/issues';
import {
getComponentDrilldownUrl,
getComponentIssuesUrl,
getComponentOverviewUrl,
getComponentSecurityHotspotsUrl,
+ getIssuesUrl,
getQualityGatesUrl,
getQualityGateUrl
} from '../urls';
@@ -121,3 +123,13 @@ describe('#getQualityGate(s)Url', () => {
expect(getQualityGateUrl('bar')).toEqual({ pathname: '/quality_gates/show/bar' });
});
});
+
+describe('getIssuesUrl', () => {
+ it('should work as expected', () => {
+ const type = IssueType.Bug;
+ expect(getIssuesUrl({ type })).toEqual({
+ pathname: '/issues',
+ query: { type }
+ });
+ });
+});
diff --git a/server/sonar-web/src/main/js/helpers/issues.ts b/server/sonar-web/src/main/js/helpers/issues.ts
index 68a5d9ee2f0..1262a3dd3ac 100644
--- a/server/sonar-web/src/main/js/helpers/issues.ts
+++ b/server/sonar-web/src/main/js/helpers/issues.ts
@@ -22,15 +22,10 @@ import BugIcon from 'sonar-ui-common/components/icons/BugIcon';
import CodeSmellIcon from 'sonar-ui-common/components/icons/CodeSmellIcon';
import SecurityHotspotIcon from 'sonar-ui-common/components/icons/SecurityHotspotIcon';
import VulnerabilityIcon from 'sonar-ui-common/components/icons/VulnerabilityIcon';
-import { IssueType } from '../types/issues';
+import { IssueType, RawIssue } from '../types/issues';
import { MetricKey } from '../types/metrics';
import { ISSUE_TYPES } from './constants';
-interface Comment {
- login: string;
- [x: string]: any;
-}
-
interface Rule {}
interface Component {
@@ -38,29 +33,6 @@ interface Component {
name: string;
}
-interface IssueBase {
- severity: string;
- [x: string]: any;
-}
-
-export interface RawIssue extends IssueBase {
- assignee?: string;
- author?: string;
- comments?: Array<Comment>;
- component: string;
- flows?: Array<{
- // `componentName` is not available in RawIssue
- locations?: Array<T.Omit<T.FlowLocation, 'componentName'>>;
- }>;
- key: string;
- line?: number;
- project: string;
- rule: string;
- status: string;
- subProject?: string;
- textRange?: T.TextRange;
-}
-
export function sortByType<T extends Pick<T.Issue, 'type'>>(issues: T[]): T[] {
return sortBy(issues, issue => ISSUE_TYPES.indexOf(issue.type));
}
diff --git a/server/sonar-web/src/main/js/helpers/mocks/issues.ts b/server/sonar-web/src/main/js/helpers/mocks/issues.ts
new file mode 100644
index 00000000000..fe6e454a13f
--- /dev/null
+++ b/server/sonar-web/src/main/js/helpers/mocks/issues.ts
@@ -0,0 +1,28 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2020 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 { ReferencedRule } from '../../types/issues';
+
+export function mockReferencedRule(overrides: Partial<ReferencedRule> = {}): ReferencedRule {
+ return {
+ langName: 'Javascript',
+ name: 'RuleFoo',
+ ...overrides
+ };
+}
diff --git a/server/sonar-web/src/main/js/helpers/testMocks.ts b/server/sonar-web/src/main/js/helpers/testMocks.ts
index 4c7891aadf5..63857857911 100644
--- a/server/sonar-web/src/main/js/helpers/testMocks.ts
+++ b/server/sonar-web/src/main/js/helpers/testMocks.ts
@@ -407,11 +407,9 @@ export function mockIssue(withLocations = false, overrides: Partial<T.Issue> = {
key: 'AVsae-CQS-9G3txfbFN2',
line: 25,
message: 'Reduce the number of conditional operators (4) used in the expression',
- organization: 'myorg',
project: 'myproject',
projectKey: 'foo',
projectName: 'Foo',
- projectOrganization: 'org',
rule: 'javascript:S1067',
ruleName: 'foo',
secondaryLocations: [],
diff --git a/server/sonar-web/src/main/js/helpers/urls.ts b/server/sonar-web/src/main/js/helpers/urls.ts
index 05864ca8404..1efdf8946aa 100644
--- a/server/sonar-web/src/main/js/helpers/urls.ts
+++ b/server/sonar-web/src/main/js/helpers/urls.ts
@@ -99,8 +99,8 @@ export function getPullRequestUrl(project: string, pullRequest: string): Locatio
/**
* Generate URL for a global issues page
*/
-export function getIssuesUrl(query: Query, organization?: string): Location {
- const pathname = organization ? `/organizations/${organization}/issues` : '/issues';
+export function getIssuesUrl(query: Query): Location {
+ const pathname = '/issues';
return { pathname, query };
}
diff --git a/server/sonar-web/src/main/js/types/issues.ts b/server/sonar-web/src/main/js/types/issues.ts
index ee0613d6a57..f96dbacc264 100644
--- a/server/sonar-web/src/main/js/types/issues.ts
+++ b/server/sonar-web/src/main/js/types/issues.ts
@@ -29,3 +29,85 @@ export enum IssueScope {
Main = 'MAIN',
Test = 'TEST'
}
+
+interface Comment {
+ login: string;
+ [x: string]: any;
+}
+
+interface IssueBase {
+ severity: string;
+ [x: string]: any;
+}
+
+export interface RawIssue extends IssueBase {
+ assignee?: string;
+ author?: string;
+ comments?: Array<Comment>;
+ component: string;
+ flows?: Array<{
+ // `componentName` is not available in RawIssue
+ locations?: Array<T.Omit<T.FlowLocation, 'componentName'>>;
+ }>;
+ key: string;
+ line?: number;
+ project: string;
+ rule: string;
+ status: string;
+ subProject?: string;
+ textRange?: T.TextRange;
+}
+
+export interface IssueResponse {
+ components?: Array<{ key: string; name: string }>;
+ issue: RawIssue;
+ rules?: Array<{}>;
+ users?: Array<T.UserBase>;
+}
+
+export interface RawIssuesResponse {
+ components: ReferencedComponent[];
+ effortTotal: number;
+ facets: RawFacet[];
+ issues: RawIssue[];
+ languages: ReferencedLanguage[];
+ paging: T.Paging;
+ rules?: Array<{}>;
+ users?: Array<T.UserBase>;
+}
+
+export interface FetchIssuesPromise {
+ components: ReferencedComponent[];
+ effortTotal: number;
+ facets: RawFacet[];
+ issues: T.Issue[];
+ languages: ReferencedLanguage[];
+ paging: T.Paging;
+ rules: ReferencedRule[];
+ users: T.UserBase[];
+}
+
+export interface ReferencedComponent {
+ key: string;
+ name: string;
+ path?: string;
+ uuid: string;
+}
+
+export interface ReferencedLanguage {
+ name: string;
+}
+
+export interface ReferencedRule {
+ langName?: string;
+ name: string;
+}
+
+export interface RawFacet {
+ property: string;
+ values: Array<{ val: string; count: number }>;
+}
+
+export interface Facet {
+ [value: string]: number;
+}
diff --git a/server/sonar-web/src/main/js/types/types.d.ts b/server/sonar-web/src/main/js/types/types.d.ts
index ffcae52a3ef..57075e79735 100644
--- a/server/sonar-web/src/main/js/types/types.d.ts
+++ b/server/sonar-web/src/main/js/types/types.d.ts
@@ -343,10 +343,8 @@ declare namespace T {
fromHotspot: boolean;
line?: number;
message: string;
- organization: string;
project: string;
projectName: string;
- projectOrganization: string;
projectKey: string;
pullRequest?: string;
resolution?: string;