import it.measureHistory.TimeMachineUiTest;
import it.projectAdministration.BulkDeletionTest;
import it.projectAdministration.ProjectAdministrationTest;
+import it.projectOverview.ProjectOverviewTest;
import it.qualityGate.QualityGateNotificationTest;
import it.qualityGate.QualityGateTest;
import it.qualityGate.QualityGateUiTest;
// project administration
BulkDeletionTest.class,
ProjectAdministrationTest.class,
+ // project pages
+ ProjectOverviewTest.class,
// settings
PropertySetsTest.class,
SubCategoriesTest.class,
@Test
public void test_project_overview_after_first_analysis() throws Exception {
- executeBuild("project-for-overview", "Project For Overview");
+ executeBuild("shared/xoo-sample", "project-for-overview", "Project For Overview");
Selenese selenese = Selenese.builder().setHtmlTestsInClasspath("test_project_overview_after_first_analysis",
"/projectOverview/ProjectOverviewTest/test_project_overview_after_first_analysis.html"
new SeleneseTest(selenese).runOn(orchestrator);
}
- private void executeBuild(String projectKey, String projectName) {
+ @Test
+ public void test_ut_coverage_on_project_overview() throws Exception {
+ executeBuild("testing/xoo-sample-ut-coverage", "project-for-overview-ut-coverage", "Project For Overview UT");
+
+ Selenese selenese = Selenese.builder().setHtmlTestsInClasspath("test_ut_coverage_on_project_overview",
+ "/projectOverview/ProjectOverviewTest/test_ut_coverage_on_project_overview.html"
+ ).build();
+ new SeleneseTest(selenese).runOn(orchestrator);
+ }
+
+ @Test
+ public void test_it_coverage_on_project_overview() throws Exception {
+ executeBuild("testing/xoo-sample-it-coverage", "project-for-overview-it-coverage", "Project For Overview IT");
+
+ Selenese selenese = Selenese.builder().setHtmlTestsInClasspath("test_it_coverage_onfi_project_overview",
+ "/projectOverview/ProjectOverviewTest/test_it_coverage_on_project_overview.html"
+ ).build();
+ new SeleneseTest(selenese).runOn(orchestrator);
+ }
+
+ @Test
+ public void test_overall_coverage_on_project_overview() throws Exception {
+ executeBuild("testing/xoo-sample-overall-coverage", "project-for-overview-overall-coverage", "Project For Overview Overall");
+
+ Selenese selenese = Selenese.builder().setHtmlTestsInClasspath("test_overall_coverage_on_project_overview",
+ "/projectOverview/ProjectOverviewTest/test_overall_coverage_on_project_overview.html"
+ ).build();
+ new SeleneseTest(selenese).runOn(orchestrator);
+ }
+
+ private void executeBuild(String projectLocation, String projectKey, String projectName) {
orchestrator.executeBuild(
- SonarRunner.create(projectDir("shared/xoo-sample"))
+ SonarRunner.create(projectDir(projectLocation))
.setProjectKey(projectKey)
.setProjectName(projectName)
);
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>test_project_overview_after_first_analysis</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">test_project_overview_after_first_analysis</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sonar/overview?id=project-for-overview-it-coverage</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*50.0%*Coverage*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/sonar/overview/tests?id=project-for-overview-it-coverage</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*50.0%*IT coverage*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*50.0%*IT line coverage*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*50.0%*IT condition coverage*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*IT uncovered conditions*1*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*IT uncovered lines*2*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*X*Complexity*Y*IT coverage*Size*IT uncovered lines*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Size*Lines of code*Color*IT coverage*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>test_project_overview_after_first_analysis</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">test_project_overview_after_first_analysis</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sonar/overview?id=project-for-overview-overall-coverage</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*62.5%*Coverage*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/sonar/overview/tests?id=project-for-overview-overall-coverage</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*62.5%*Overall coverage*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*75.0%*Overall line coverage*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*50.0%*Overall condition coverage*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Uncovered conditions*3*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*IT uncovered conditions*3*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Overall uncovered conditions*2*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Uncovered lines*2*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*IT uncovered lines*2*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Overall uncovered lines*1*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*X*Complexity*Y*Overall coverage*Size*Overall uncovered lines*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Size*Lines of code*Color*Overall coverage*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
<td>id=content</td>
<td>*A*0*Issues*0*Debt*</td>
</tr>
- <tr>
- <td>waitForText</td>
- <td>id=content</td>
- <td>*Blocker*0*Critical*0*Major*0*Minor*0*Info*0*</td>
- </tr>
<tr>
<td>waitForText</td>
<td>id=content</td>
<tr>
<td>waitForText</td>
<td>id=content</td>
- <td>*13*Lines of Code*1*Files*</td>
+ <td>*13*Lines of Code*</td>
</tr>
<tr>
<td>assertNotText</td>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>test_project_overview_after_first_analysis</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">test_project_overview_after_first_analysis</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sonar/overview?id=project-for-overview-ut-coverage</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*50.0%*Coverage*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/sonar/overview/tests?id=project-for-overview-ut-coverage</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*50.0%*Coverage*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*50.0%*Line coverage*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*50.0%*Condition coverage*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Lines to cover*4*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Uncovered conditions*1*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Uncovered lines*2*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*X*Complexity*Y*Coverage*Size*Uncovered lines*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Size*Lines of code*Color*Coverage*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
const TEST_DOMAINS = ['Tests', 'Tests (Integration)', 'Tests (Overall)'];
-
-const UT_COVERAGE_METRICS = ['coverage', 'line_coverage', 'branch_coverage'];
-const UT_NEW_COVERAGE_METRICS = ['new_coverage', 'new_line_coverage', 'new_branch_coverage'];
-
-const IT_COVERAGE_METRICS = ['it_coverage', 'it_line_coverage', 'it_branch_coverage'];
-const IT_NEW_COVERAGE_METRICS = ['new_it_coverage', 'new_it_line_coverage', 'new_it_branch_coverage'];
-
-const OVERALL_COVERAGE_METRICS = ['overall_coverage', 'overall_line_coverage', 'overall_branch_coverage'];
-const OVERALL_NEW_COVERAGE_METRICS = ['new_overall_coverage', 'new_overall_line_coverage',
- 'new_overall_branch_coverage'];
-
const TEST_METRICS = ['tests', 'test_execution_time', 'test_errors', 'test_failures', 'skipped_tests',
'test_success_density'];
-const KNOWN_METRICS = [].concat(TEST_METRICS, OVERALL_COVERAGE_METRICS, UT_COVERAGE_METRICS, IT_COVERAGE_METRICS);
-
export const CoverageMeasuresList = React.createClass({
renderOtherMeasures() {
+ let knownMetrics = [].concat(TEST_METRICS, [
+ this.props.coverageMetricPrefix + 'coverage',
+ this.props.coverageMetricPrefix + 'line_coverage',
+ this.props.coverageMetricPrefix + 'branch_coverage'
+ ]);
let metrics = filterMetricsForDomains(this.props.metrics, TEST_DOMAINS)
- .filter(metric => KNOWN_METRICS.indexOf(metric.key) === -1)
+ .filter(metric => knownMetrics.indexOf(metric.key) === -1)
.map(metric => metric.key);
return this.renderListOfMeasures(metrics);
},
- renderCoverage (metrics) {
+ renderCoverage () {
+ let metrics = [
+ this.props.coverageMetricPrefix + 'coverage',
+ this.props.coverageMetricPrefix + 'line_coverage',
+ this.props.coverageMetricPrefix + 'branch_coverage'
+ ];
+
+ if (_.every(metrics, metric => this.props.measures[metric] == null)) {
+ // if no measures exist
+ return null;
+ }
+
let measures = metrics.map(metric => {
return <CoverageMeasure key={metric}
metric={metric}
</div>;
},
- shouldRenderTypedCoverage () {
- return this.props.measures['coverage'] != null && this.props.measures['it_coverage'] != null;
- },
+ renderNewCoverage () {
+ let metrics = [
+ 'new_' + this.props.coverageMetricPrefix + 'coverage',
+ 'new_' + this.props.coverageMetricPrefix + 'line_coverage',
+ 'new_' + this.props.coverageMetricPrefix + 'branch_coverage'
+ ];
- renderTypedCoverage (metrics) {
- return this.shouldRenderTypedCoverage() ? this.renderCoverage(metrics) : null;
- },
+ if (_.every(metrics, metric => this.props.leak[metric] == null)) {
+ // if no measures exist
+ return null;
+ }
- renderNewCoverage (metrics) {
let measures = metrics.map(metric => {
return <CoverageMeasure key={metric}
metric={metric}
</div>;
},
- renderTypedNewCoverage (metrics) {
- return this.shouldRenderTypedCoverage() ? this.renderNewCoverage(metrics) : null;
- },
-
- renderUTCoverage () {
- return this.renderTypedCoverage(UT_COVERAGE_METRICS);
- },
-
- renderUTNewCoverage () {
- return this.renderTypedNewCoverage(UT_NEW_COVERAGE_METRICS);
- },
-
- renderITCoverage () {
- return this.renderTypedCoverage(IT_COVERAGE_METRICS);
- },
-
- renderITNewCoverage () {
- return this.renderTypedNewCoverage(IT_NEW_COVERAGE_METRICS);
- },
-
- renderOverallCoverage () {
- return this.renderCoverage(OVERALL_COVERAGE_METRICS);
- },
+ renderListOfMeasures(list) {
+ let metrics = list.map(key => _.findWhere(this.props.metrics, { key }));
- renderOverallNewCoverage () {
- return this.renderNewCoverage(OVERALL_NEW_COVERAGE_METRICS);
- },
+ if (_.every(metrics, metric => this.props.measures[metric.key] == null)) {
+ // if no measures exist
+ return null;
+ }
- renderListOfMeasures(list) {
- let metrics = list
- .map(key => _.findWhere(this.props.metrics, { key }))
- .map(metric => {
- return <DetailedMeasure key={metric.key} {...this.props} {...this.props} metric={metric.key}
- type={metric.type}/>;
- });
+ metrics = metrics.map(metric => {
+ return <DetailedMeasure key={metric.key} {...this.props} {...this.props} metric={metric.key}
+ type={metric.type}/>;
+ });
return <div className="overview-detailed-measures-list">{metrics}</div>;
},
render () {
return <div>
- {this.renderOverallCoverage()}
- {this.renderOverallNewCoverage()}
-
- {this.renderUTCoverage()}
- {this.renderUTNewCoverage()}
-
- {this.renderITCoverage()}
- {this.renderITNewCoverage()}
+ {this.renderCoverage()}
+ {this.renderNewCoverage()}
{this.renderListOfMeasures(TEST_METRICS)}
--- /dev/null
+export const CoverageSelectionMixin = {
+ getCoverageMetricPrefix (measures) {
+ if (measures['coverage'] != null && measures['it_coverage'] != null && measures['overall_coverage'] != null) {
+ return 'overall_';
+ } else if (measures['coverage'] != null) {
+ return '';
+ } else {
+ return 'it_';
+ }
+ }
+};
return null;
}
let leak = this.props.leak[this.props.metric];
+ let formatted = leak != null ? formatMeasureVariation(leak, getShortType(this.props.type)) : '—';
return <div className="overview-detailed-measure-leak">
- <span className="overview-detailed-measure-value">
- {formatMeasureVariation(leak, getShortType(this.props.type))}
- </span>
+ <span className="overview-detailed-measure-value">{formatted}</span>
</div>;
},
let formatYTick = (tick) => formatMeasure(tick, this.state.yMetric.type);
return <BubbleChart items={items}
height={HEIGHT}
- padding={[25, 30, 50, 60]}
+ padding={[25, 60, 50, 60]}
formatXTick={formatXTick}
formatYTick={formatYTick}/>;
}
import { DomainTimeline } from '../components/domain-timeline';
import { DomainTreemap } from '../components/domain-treemap';
import { DomainBubbleChart } from '../components/domain-bubble-chart';
+import { CoverageSelectionMixin } from '../components/coverage-selection-mixin';
import { getPeriodLabel, getPeriodDate } from './../helpers/periods';
import { TooltipsMixin } from '../../../components/mixins/tooltips-mixin';
import { filterMetrics, filterMetricsForDomains } from '../helpers/metrics';
export const CoverageMain = React.createClass({
- mixins: [TooltipsMixin],
+ mixins: [TooltipsMixin, CoverageSelectionMixin],
getInitialState() {
return {
this.requestMeasures().then(r => {
let measures = this.getMeasuresValues(r, 'value');
let leak = this.getMeasuresValues(r, 'var' + this.props.leakPeriodIndex);
- this.setState({ ready: true, measures, leak });
+ this.setState({
+ ready: true,
+ measures,
+ leak,
+ coverageMetricPrefix: this.getCoverageMetricPrefix(measures),
+ });
});
},
.domain([0, 100])
.range(CHART_COLORS_RANGE_PERCENT);
+ let coverageMetric = this.state.coverageMetricPrefix + 'coverage',
+ uncoveredLinesMetric = this.state.coverageMetricPrefix + 'uncovered_lines';
+
return <div className="overview-detailed-page">
<div className="overview-cards-list">
<div className="overview-card overview-card-fixed-width">
<div className="overview-card">
<DomainBubbleChart {...this.props}
xMetric="complexity"
- yMetric="overall_coverage"
- sizeMetrics={['overall_uncovered_lines']}/>
+ yMetric={coverageMetric}
+ sizeMetrics={[uncoveredLinesMetric]}/>
</div>
</div>
<div className="overview-cards-list">
<div className="overview-card">
<DomainTimeline {...this.props} {...this.state}
- initialMetric="overall_coverage"
+ initialMetric={coverageMetric}
metrics={this.getMetricsForTimeline()}
allMetrics={this.getAllMetricsForTimeline()}/>
</div>
<div className="overview-card">
<DomainTreemap {...this.props}
sizeMetric="ncloc"
- colorMetric="overall_coverage"
+ colorMetric={coverageMetric}
scale={treemapScale}/>
</div>
</div>
propTypes: {
measures: React.PropTypes.object.isRequired,
leakPeriodLabel: React.PropTypes.string,
- leakPeriodDate: React.PropTypes.object
+ leakPeriodDate: React.PropTypes.object,
+ coverageMetricPrefix: React.PropTypes.string.isRequired
},
getCoverageMetric () {
- if (this.props.measures['overall_coverage'] != null) {
- return 'overall_coverage';
- } else if (this.props.measures['coverage'] != null) {
- return 'coverage';
- } else {
- return 'it_coverage';
- }
+ return this.props.coverageMetricPrefix + 'coverage';
},
getNewCoverageMetric () {
- if (this.props.leak['new_overall_coverage'] != null) {
- return 'new_overall_coverage';
- } else if (this.props.leak['new_coverage'] != null) {
- return 'new_coverage';
- } else {
- return 'new_it_coverage';
- }
+ return 'new_' + this.props.coverageMetricPrefix + 'coverage';
},
renderNewCoverage () {
import { GeneralCoverage } from './coverage';
import { GeneralDuplications } from './duplications';
import { GeneralSize } from './size';
+import { CoverageSelectionMixin } from '../components/coverage-selection-mixin';
import { getPeriodLabel, getPeriodDate } from './../helpers/periods';
import { getMeasuresAndVariations } from '../../../api/measures';
import { getFacet, getIssuesCount } from '../../../api/issues';
const HISTORY_METRICS_LIST = [
'sqale_index',
- 'overall_coverage',
'duplicated_lines_density',
'ncloc'
];
export default React.createClass({
+ mixins: [CoverageSelectionMixin],
+
propTypes: {
leakPeriodIndex: React.PropTypes.string.isRequired
},
this.setState({
ready: true,
measures: measures,
- leak: leak
+ leak: leak,
+ coverageMetricPrefix: this.getCoverageMetricPrefix(measures)
}, this.requestHistory);
});
},
},
requestHistory () {
- let metrics = HISTORY_METRICS_LIST.join(',');
+ let coverageMetric = this.state.coverageMetricPrefix + 'coverage';
+ let metrics = [].concat(HISTORY_METRICS_LIST, coverageMetric).join(',');
return getTimeMachineData(this.props.component.key, metrics).then(r => {
let history = {};
r[0].cols.forEach((col, index) => {
return this.renderLoading();
}
+ let coverageMetric = this.state.coverageMetricPrefix + 'coverage';
let props = _.extend({}, this.props, this.state);
return <div className="overview-domains-list">
<GeneralIssues {...props} history={this.state.history['sqale_index']}/>
- <GeneralCoverage {...props} history={this.state.history['overall_coverage']}/>
+ <GeneralCoverage {...props} coverageMetricPrefix={this.state.coverageMetricPrefix}
+ history={this.state.history[coverageMetric]}/>
<GeneralDuplications {...props} history={this.state.history['duplicated_lines_density']}/>
<GeneralSize {...props} history={this.state.history['ncloc']}/>
</div>;
describe('Overview :: GeneralCoverage', function () {
- it('should display overall coverage', function () {
- let component = <GeneralCoverage measures={MEASURES} leak={LEAK} component={COMPONENT}
- leakPeriodDate={DATE}/>;
- let output = TestUtils.renderIntoDocument(component);
-
- let coverageElement = TestUtils.findRenderedDOMComponentWithClass(output, 'js-overview-main-coverage');
- expect(coverageElement.textContent).to.equal('73.5%');
-
- let newCoverageElement = TestUtils.findRenderedDOMComponentWithClass(output, 'js-overview-main-new-coverage');
- expect(newCoverageElement.textContent).to.equal('72.5%');
- });
-
it('should display tests', function () {
- let component = <GeneralCoverage measures={MEASURES} component={COMPONENT}/>;
+ let component = <GeneralCoverage measures={MEASURES} component={COMPONENT} coverageMetricPrefix=""/>;
let output = TestUtils.renderIntoDocument(component);
let coverageElement = TestUtils.findRenderedDOMComponentWithClass(output, 'js-overview-main-tests');
expect(coverageElement.textContent).to.equal('137');
it('should not display tests', function () {
let measuresWithoutTests = _.omit(MEASURES, 'tests');
- let component = <GeneralCoverage measures={measuresWithoutTests} component={COMPONENT}/>;
+ let component = <GeneralCoverage measures={measuresWithoutTests} component={COMPONENT} coverageMetricPrefix=""/>;
let output = TestUtils.renderIntoDocument(component);
let coverageElements = TestUtils.scryRenderedDOMComponentsWithClass(output, 'js-overview-main-tests');
expect(coverageElements).to.be.empty;
it('should fall back to UT coverage', function () {
let component = <GeneralCoverage measures={MEASURES_FOR_UT} leak={LEAK_FOR_UT} component={COMPONENT}
- leakPeriodDate={DATE}/>;
+ leakPeriodDate={DATE} coverageMetricPrefix=""/>;
let output = TestUtils.renderIntoDocument(component);
let coverageElement = TestUtils.findRenderedDOMComponentWithClass(output, 'js-overview-main-coverage');
it('should fall back to IT coverage', function () {
let component = <GeneralCoverage measures={MEASURES_FOR_IT} leak={LEAK_FOR_IT} component={COMPONENT}
- leakPeriodDate={DATE}/>;
+ leakPeriodDate={DATE} coverageMetricPrefix="it_"/>;
let output = TestUtils.renderIntoDocument(component);
let coverageElement = TestUtils.findRenderedDOMComponentWithClass(output, 'js-overview-main-coverage');