blob: 544df706dbf801501f38afee2956078161a739d7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015, 2016 Vaughan Hilts and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Vaughan Hilts - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.reviews.internal.core;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.mylyn.reviews.internal.core.BuildResult.BuildStatus;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.junit.Test;
public class TaskBuildStatusMapperTest {
@Test
public void attributeValueDependsOnChildren() {
TaskAttribute attribute1 = createBuildAttribute(
"https://hudson.eclipse.org/mylyn/job/gerrit-mylyn-tasks/1066/");
TaskAttribute attribute2 = createBuildAttribute(
"https://hudson.eclipse.org/mylyn/job/gerrit-mylyn-tasks/1067/");
assertFalse(attribute1.getValue().equals(attribute2.getValue()));
}
private TaskAttribute createBuildAttribute(String url) {
List<BuildResult> results = new ArrayList<BuildResult>();
final String JOB_NAME = "SameJob";
results.add(new BuildResult(0, url, BuildStatus.STARTED, 1, JOB_NAME));
TaskBuildStatusMapper mapper = new TaskBuildStatusMapper(results);
TaskAttribute root = createRootAttribute();
mapper.applyTo(root);
return root;
}
@Test
public void emptyCollectionReturnsRootWithNoChildren() {
List<BuildResult> results = new ArrayList<BuildResult>();
TaskBuildStatusMapper mapper = new TaskBuildStatusMapper(results);
TaskAttribute root = createRootAttribute();
mapper.applyTo(root);
assertEquals(0, root.getAttributes().size());
}
@Test
public void collectionWithSameJobNameShouldTakeHighestJobNumber() throws Exception {
List<BuildResult> results = new ArrayList<BuildResult>();
final String HUDSON_BUILD_URL = "https://hudson.eclipse.org/mylyn/job/gerrit-mylyn-tasks/1066/";
final String JOB_NAME = "SameJob";
results.add(new BuildResult(0, HUDSON_BUILD_URL, BuildStatus.STARTED, 1, JOB_NAME));
results.add(new BuildResult(1, HUDSON_BUILD_URL, BuildStatus.STARTED, 1, JOB_NAME));
TaskBuildStatusMapper mapper = new TaskBuildStatusMapper(results);
TaskAttribute root = createRootAttribute();
mapper.applyTo(root);
assertEquals(1, root.getAttributes().size());
assertNotNull(root.getAttribute("BUILD_RESULT-0"));
TaskAttribute taskAttribute = root.getAttribute("BUILD_RESULT-0");
int buildNumber = Integer.parseInt(taskAttribute.getAttribute("NUMBER").getValue());
assertEquals(1, buildNumber);
assertEquals(JOB_NAME, taskAttribute.getAttribute("JOB").getValue());
assertEquals(HUDSON_BUILD_URL, taskAttribute.getAttribute("URL").getValue());
}
@Test
public void collectionWithDifferentJobNamesProducesUnqiueEntries() {
List<BuildResult> results = new ArrayList<BuildResult>();
String buildUrl = "http://hudson.someurl.com/";
results.add(new BuildResult(0, buildUrl, BuildStatus.STARTED, 1, "SameJob"));
String buildUrl2 = "http://hudson.someurl.com/alpha";
results.add(new BuildResult(1, buildUrl2, BuildStatus.STARTED, 1, "DifferentJob"));
TaskBuildStatusMapper mapper = new TaskBuildStatusMapper(results);
TaskAttribute root = createRootAttribute();
mapper.applyTo(root);
assertEquals(2, root.getAttributes().size());
TaskAttribute firstBuildResultAttribute = root.getAttribute(TaskBuildStatusMapper.ATTR_ID_BUILD_RESULT + "0");
assertNotNull(firstBuildResultAttribute);
assertEquals("0",
firstBuildResultAttribute.getAttribute(TaskBuildStatusMapper.BUILD_NUMBER_ATTRIBUTE_KEY).getValue());
assertEquals("SameJob",
firstBuildResultAttribute.getAttribute(TaskBuildStatusMapper.JOB_NAME_ATTRIBUTE_KEY).getValue());
assertEquals(buildUrl,
firstBuildResultAttribute.getAttribute(TaskBuildStatusMapper.URL_ATTRIBUTE_KEY).getValue());
assertEquals(BuildStatus.STARTED.toString(),
firstBuildResultAttribute.getAttribute(TaskBuildStatusMapper.STATUS_ATTRIBUTE_KEY).getValue());
TaskAttribute secondBuildResultAttribute = root.getAttribute(TaskBuildStatusMapper.ATTR_ID_BUILD_RESULT + "1");
assertNotNull(secondBuildResultAttribute);
assertEquals("1",
secondBuildResultAttribute.getAttribute(TaskBuildStatusMapper.BUILD_NUMBER_ATTRIBUTE_KEY).getValue());
assertEquals("DifferentJob",
secondBuildResultAttribute.getAttribute(TaskBuildStatusMapper.JOB_NAME_ATTRIBUTE_KEY).getValue());
assertEquals(buildUrl2,
secondBuildResultAttribute.getAttribute(TaskBuildStatusMapper.URL_ATTRIBUTE_KEY).getValue());
assertEquals(BuildStatus.STARTED.toString(),
secondBuildResultAttribute.getAttribute(TaskBuildStatusMapper.STATUS_ATTRIBUTE_KEY).getValue());
}
private TaskAttribute createRootAttribute() {
TaskAttributeMapper mapper = new TaskAttributeMapper(new TaskRepository("", ""));
TaskData mockTestData = new TaskData(mapper, "", "", "");
return mockTestData.getRoot();
}
}