}
private void writeResponse(Response response, List<CustomMeasureDto> customMeasures, int nbCustomMeasures, ComponentDto project, Map<Integer, MetricDto> metricsById,
- Map<String, User> usersByLogin, @Nullable Long lastAnalysisDate, SearchOptions searchOptions, List<String> fieldsToReturn) {
+ Map<String, User> usersByLogin, @Nullable Long lastAnalysisDate, SearchOptions searchOptions, List<String> fieldsToReturn) {
JsonWriter json = response.newJsonWriter();
json.beginObject();
customMeasureJsonWriter.write(json, customMeasures, project, metricsById, usersByLogin, lastAnalysisDate, fieldsToReturn);
"description": "New arrivals",
"metric": {
"key": "team_size",
+ "name": "Team Size",
+ "domain": "Tests",
"type": "INT"
},
"projectId": "project-uuid",
"projectKey": "project-key",
+ "pending": true,
"user": {
"active": true,
"email": "login@login.com",
"description": "New funds",
"metric": {
"key": "burned_budget",
+ "name": "Burned Budget",
+ "domain": "Activity",
"type": "INT"
},
"projectId": "project-uuid",
"projectKey": "project-key",
+ "pending": false,
"user": {
"active": true,
"email": "login@login.com",
"description": "Great coverage",
"metric": {
"key": "uncovered_lines",
+ "name": "Uncovered lines",
+ "domain": "Code Coverage",
"type": "INT"
},
"projectId": "project-uuid",
"projectKey": "project-key",
+ "pending": false,
"user": {
"active": true,
"email": "login@login.com",
import org.sonar.server.component.ComponentTesting;
import org.sonar.server.db.DbClient;
import org.sonar.server.es.EsTester;
+import org.sonar.server.exceptions.BadRequestException;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.exceptions.ServerException;
public void fail_when_value_is_not_well_formatted() throws Exception {
MetricDto metric = insertMetricAndProject(ValueType.BOOL, DEFAULT_PROJECT_UUID);
- expectedException.expect(IllegalArgumentException.class);
- expectedException.expectMessage("Incorrect value 'non-correct-boolean-value' for metric type 'BOOL'");
+ expectedException.expect(BadRequestException.class);
newRequest()
.setParam(CreateAction.PARAM_PROJECT_ID, DEFAULT_PROJECT_UUID)
.setParam(SearchAction.PARAM_PROJECT_ID, DEFAULT_PROJECT_UUID)
.execute();
- response.assertJson(getClass(), "metrics.json");
+ response.assertJson(getClass(), "custom-measures.json");
String responseAsString = response.outputAsString();
assertThat(responseAsString).matches(nameStringValuePattern("id", metric1.getId().toString()));
assertThat(responseAsString).matches(nameStringValuePattern("id", metric2.getId().toString()));
}
private static MetricDto newCustomMetric(String metricKey) {
- return newMetricDto().setEnabled(true).setUserManaged(true).setKey(metricKey).setValueType(ValueType.STRING.name());
+ return newMetricDto().setEnabled(true).setUserManaged(true).setKey(metricKey).setDomain(metricKey + "-domain").setShortName(metricKey + "-name").setValueType(ValueType.STRING.name());
}
private CustomMeasureDto insertCustomMeasure(int id, MetricDto metric) {
--- /dev/null
+{
+ "customMeasures": [
+ {
+ "description": "description-1",
+ "metric": {
+ "key": "metric-key-1",
+ "name": "metric-key-1-name",
+ "domain": "metric-key-1-domain",
+ "type": "STRING"
+ },
+ "projectId": "project-uuid",
+ "projectKey": "project-key",
+ "pending":true,
+ "user": {
+ "active": true,
+ "email": "login@login.com",
+ "login": "login",
+ "name": "Login"
+ },
+ "value": "text-value-1"
+ },
+ {
+ "description": "description-2",
+ "metric": {
+ "key": "metric-key-2",
+ "name": "metric-key-2-name",
+ "domain": "metric-key-2-domain",
+ "type": "STRING"
+ },
+ "projectId": "project-uuid",
+ "projectKey": "project-key",
+ "pending":true,
+ "user": {
+ "active": true,
+ "email": "login@login.com",
+ "login": "login",
+ "name": "Login"
+ },
+ "value": "text-value-2"
+ },
+ {
+ "description": "description-3",
+ "metric": {
+ "key": "metric-key-3",
+ "name": "metric-key-3-name",
+ "domain": "metric-key-3-domain",
+ "type": "STRING"
+ },
+ "projectId": "project-uuid",
+ "projectKey": "project-key",
+ "pending":true,
+ "user": {
+ "active": true,
+ "email": "login@login.com",
+ "login": "login",
+ "name": "Login"
+ },
+ "value": "text-value-3"
+ }
+ ],
+ "p": 1,
+ "ps": 100,
+ "total": 3
+}
+++ /dev/null
-{
- "customMeasures": [
- {
- "description": "description-1",
- "metric": {
- "key": "metric-key-1",
- "type": "STRING"
- },
- "projectId": "project-uuid",
- "projectKey": "project-key",
- "pending":true,
- "user": {
- "active": true,
- "email": "login@login.com",
- "login": "login",
- "name": "Login"
- },
- "value": "text-value-1"
- },
- {
- "description": "description-2",
- "metric": {
- "key": "metric-key-2",
- "type": "STRING"
- },
- "projectId": "project-uuid",
- "projectKey": "project-key",
- "pending":true,
- "user": {
- "active": true,
- "email": "login@login.com",
- "login": "login",
- "name": "Login"
- },
- "value": "text-value-2"
- },
- {
- "description": "description-3",
- "metric": {
- "key": "metric-key-3",
- "type": "STRING"
- },
- "projectId": "project-uuid",
- "projectKey": "project-key",
- "pending":true,
- "user": {
- "active": true,
- "email": "login@login.com",
- "login": "login",
- "name": "Login"
- },
- "value": "text-value-3"
- }
- ],
- "p": 1,
- "ps": 100,
- "total": 3
-}