blob: f16dd6994f527a29abd6dd18f4f20589f6d6a035 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 Christian Trutz
* 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:
* Christian Trutz - initial API and implementation
*******************************************************************************/
package org.eclipse.egit.github.core.tests;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.verify;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.egit.github.core.Label;
import org.eclipse.egit.github.core.RepositoryId;
import org.eclipse.egit.github.core.client.GitHubClient;
import org.eclipse.egit.github.core.client.GitHubRequest;
import org.eclipse.egit.github.core.client.GitHubResponse;
import org.eclipse.egit.github.core.service.LabelService;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
/**
* Unit tests of {@link LabelService}
*/
@RunWith(MockitoJUnitRunner.class)
public class LabelServiceTest {
@Mock
private GitHubClient gitHubClient;
@Mock
private GitHubResponse response;
private LabelService labelService;
/**
* Test case set up
*
* @throws IOException
*/
@Before
public void before() throws IOException {
doReturn(response).when(gitHubClient).get(any(GitHubRequest.class));
labelService = new LabelService(gitHubClient);
}
/**
* Create label service with null client
*/
@Test(expected = IllegalArgumentException.class)
public void constructorNullArgument() {
new LabelService(null);
}
/**
* Create label service using default constructor
*/
@Test
public void defaultConstuctor() {
assertNotNull(new LabelService().getClient());
}
/**
* Get labels with null user
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void getLabelsNullUser() throws IOException {
labelService.getLabels(null, "not null");
}
/**
* Get labels with null repository name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void getLabelsNullRepositoryName() throws IOException {
labelService.getLabels("not null", null);
}
/**
* Get labels with valid parameters
*
* @throws IOException
*/
@Test
public void getLabels() throws IOException {
labelService.getLabels("lu", "lr");
GitHubRequest request = new GitHubRequest();
request.setUri(Utils.page("/repos/lu/lr/labels"));
verify(gitHubClient).get(request);
}
/**
* Get labels with valid parameters
*
* @throws IOException
*/
@Test
public void getLabelsWithRepositoryId() throws IOException {
RepositoryId repo = new RepositoryId("lu", "lr");
labelService.getLabels(repo);
GitHubRequest request = new GitHubRequest();
request.setUri(Utils.page("/repos/lu/lr/labels"));
verify(gitHubClient).get(request);
}
/**
* Set labels with null user
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void setLabelsNullUser() throws IOException {
labelService.setLabels(null, "not null", "not null",
new LinkedList<Label>());
}
/**
* Set labels with null repository name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void setLabelsNullRepositoryName() throws IOException {
labelService.setLabels("not null", null, "not null",
new LinkedList<Label>());
}
/**
* Set labels with null issue id
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void setLabelsNullIssueId() throws IOException {
labelService.setLabels("not null", "not null", null,
new LinkedList<Label>());
}
/**
* Set labels with empty issue id
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void setLabelsEmptyIssueId() throws IOException {
labelService.setLabels("not null", "not null", "",
new LinkedList<Label>());
}
/**
* Set labels with null labels list
*
* @throws IOException
*/
@Test
public void setLabelsNullLabels() throws IOException {
labelService.setLabels("test_user", "test_repository", "1", null);
TypeToken<List<Label>> labelsToken = new TypeToken<List<Label>>() {
};
verify(gitHubClient).put(
"/repos/test_user/test_repository/issues/1/labels", null,
labelsToken.getType());
}
/**
* Set labels with valid parameters
*
* @throws IOException
*/
@Test
public void setLabels() throws IOException {
List<Label> labels = new LinkedList<Label>();
labelService.setLabels("test_user", "test_repository", "1", labels);
TypeToken<List<Label>> labelsToken = new TypeToken<List<Label>>() {
};
verify(gitHubClient).put(
"/repos/test_user/test_repository/issues/1/labels", labels,
labelsToken.getType());
}
/**
* Set labels with valid parameters
*
* @throws IOException
*/
@Test
public void setLabelsWithRepositoryId() throws IOException {
RepositoryId repo = new RepositoryId("test_user", "test_repository");
List<Label> labels = new LinkedList<Label>();
labelService.setLabels(repo, "1", labels);
TypeToken<List<Label>> labelsToken = new TypeToken<List<Label>>() {
};
verify(gitHubClient).put(
"/repos/test_user/test_repository/issues/1/labels", labels,
labelsToken.getType());
}
/**
* Create label with null user
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void createLabelNullUser() throws IOException {
labelService.createLabel(null, "not null", new Label());
}
/**
* Create label with null repository name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void createLabelNullRepositoryName() throws IOException {
labelService.createLabel("not null", null, new Label());
}
/**
* Create label with null label
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void createLabelNullLabel() throws IOException {
labelService.createLabel("not null", "not null", null);
}
/**
* Create label with valid parameters
*
* @throws IOException
*/
@Test
public void createLabel() throws IOException {
Label label = new Label();
labelService.createLabel("test_user", "test_repository", label);
verify(gitHubClient).post("/repos/test_user/test_repository/labels",
label, Label.class);
}
/**
* Create label with valid parameters
*
* @throws IOException
*/
@Test
public void createLabelWithRepositoryId() throws IOException {
RepositoryId repo = new RepositoryId("test_user", "test_repository");
Label label = new Label();
labelService.createLabel(repo, label);
verify(gitHubClient).post("/repos/test_user/test_repository/labels",
label, Label.class);
}
/**
* Delete label with null user
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void deleteNullUser() throws IOException {
labelService.deleteLabel(null, "repo", "label");
}
/**
* Delete label with empty user
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void deleteEmptyUser() throws IOException {
labelService.deleteLabel("", "repo", "label");
}
/**
* Delete label with null repository name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void deleteNullRepositoryName() throws IOException {
labelService.deleteLabel("user", null, "label");
}
/**
* Delete label with empty repository name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void deleteEmptyRepositoryName() throws IOException {
labelService.deleteLabel("user", "", "label");
}
/**
* Delete label with null name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void deleteNullLabel() throws IOException {
labelService.deleteLabel("user", "repo", null);
}
/**
* Delete label with empty name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void deleteEmptyLabel() throws IOException {
labelService.deleteLabel("user", "repo", "");
}
/**
* Get label with valid parameters
*
* @throws IOException
*/
@Test
public void deleteLabel() throws IOException {
labelService.deleteLabel("user", "repo", "label");
verify(gitHubClient).delete("/repos/user/repo/labels/label");
}
/**
* Get label with valid parameters
*
* @throws IOException
*/
@Test
public void deleteLabelWithRepositoryId() throws IOException {
RepositoryId repo = new RepositoryId("user", "repo");
labelService.deleteLabel(repo, "label");
verify(gitHubClient).delete("/repos/user/repo/labels/label");
}
/**
* Get label with null user
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void getNullUser() throws IOException {
labelService.getLabel(null, "repo", "label");
}
/**
* Get label with empty user
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void getEmptyUser() throws IOException {
labelService.getLabel("", "repo", "label");
}
/**
* Get label with null repository name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void getNullRepositoryName() throws IOException {
labelService.getLabel("user", null, "label");
}
/**
* Get label with empty repository name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void getEmptyRepositoryName() throws IOException {
labelService.getLabel("user", "", "label");
}
/**
* Get label with null name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void getNullLabel() throws IOException {
labelService.getLabel("user", "repo", null);
}
/**
* Get label with empty name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void getEmptyLabel() throws IOException {
labelService.getLabel("user", "repo", "");
}
/**
* Get label with valid parameters
*
* @throws IOException
*/
@Test
public void getLabel() throws IOException {
labelService.getLabel("user", "repo", "bugs");
GitHubRequest request = new GitHubRequest();
request.setUri("/repos/user/repo/labels/bugs");
verify(gitHubClient).get(request);
}
/**
* Get label with valid parameters
*
* @throws IOException
*/
@Test
public void getLabelWithRepositoryId() throws IOException {
RepositoryId repo = new RepositoryId("user", "repo");
labelService.getLabel(repo, "bugs");
GitHubRequest request = new GitHubRequest();
request.setUri("/repos/user/repo/labels/bugs");
verify(gitHubClient).get(request);
}
}