package fr.techad.sonar.gerrit.review;
import static org.fest.assertions.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.assertj.core.util.Lists;
import org.junit.Test;
import fr.techad.sonar.gerrit.utils.ReviewUtils;
public class ReviewInputTest {
private static final String DEFAULT_MESSAGE = "Looks good to me.";
private static final String NEW_MESSAGE = "A new message";
private static final String PLUS_ONE_LABEL = "+1 Label";
private static final String MINUS_ONE_LABEL = "-1 Label";
private static final String OTHER_LABEL = "other Label";
private static final Integer PLUS_ONE = new Integer(1);
private static final Integer MINUS_ONE = new Integer(-1);
private static final Integer OTHER_VALUE = new Integer(42);
private static final String KEY_COMMENT1 = "Key1";
private static final String KEY_COMMENT2 = "Key2";
@Test
public void shouldHaveAMessage() {
ReviewInput reviewInput = new ReviewInput();
assertEquals(DEFAULT_MESSAGE, reviewInput.getMessage());
reviewInput.setMessage(NEW_MESSAGE);
assertEquals(NEW_MESSAGE, reviewInput.getMessage());
}
@Test
public void shouldHaveAPlusOneLabel() {
ReviewInput reviewInput = new ReviewInput();
reviewInput.setLabelToPlusOne(PLUS_ONE_LABEL);
Map<String, Integer> labels = reviewInput.getLabels();
assertEquals(1, labels.size());
assertEquals(PLUS_ONE, labels.get(PLUS_ONE_LABEL));
}
@Test
public void shouldHaveAMinusOneLabel() {
ReviewInput reviewInput = new ReviewInput();
reviewInput.setLabelToMinusOne(MINUS_ONE_LABEL);
Map<String, Integer> labels = reviewInput.getLabels();
assertEquals(1, labels.size());
assertEquals(MINUS_ONE, labels.get(MINUS_ONE_LABEL));
}
@Test
public void shouldHaveAOtherLabel() {
ReviewInput reviewInput = new ReviewInput();
reviewInput.setValueAndLabel(OTHER_VALUE, OTHER_LABEL);
Map<String, Integer> labels = reviewInput.getLabels();
assertEquals(1, labels.size());
assertEquals(OTHER_VALUE, labels.get(OTHER_LABEL));
}
@Test
public void shouldHaveSeveralLabel() {
ReviewInput reviewInput = new ReviewInput();
reviewInput.setLabelToPlusOne(PLUS_ONE_LABEL);
reviewInput.setValueAndLabel(OTHER_VALUE, OTHER_LABEL);
reviewInput.setLabelToMinusOne(MINUS_ONE_LABEL);
Map<String, Integer> labels = reviewInput.getLabels();
assertEquals(3, labels.size());
assertEquals(OTHER_VALUE, labels.get(OTHER_LABEL));
assertEquals(PLUS_ONE, labels.get(PLUS_ONE_LABEL));
assertEquals(MINUS_ONE, labels.get(MINUS_ONE_LABEL));
}
@Test
public void shouldEmptyTheComments() {
ReviewInput reviewInput = new ReviewInput();
ArrayList<ReviewFileComment> list = Lists.newArrayList();
list.add(new ReviewFileComment());
reviewInput.addComments(KEY_COMMENT1, list);
assertEquals(1, reviewInput.size());
reviewInput.emptyComments();
assertEquals(0, reviewInput.size());
}
@Test
public void shouldHaveTheComments() {
ReviewInput reviewInput = new ReviewInput();
ArrayList<ReviewFileComment> list1 = Lists.newArrayList();
list1.add(new ReviewFileComment());
list1.add(new ReviewFileComment());
reviewInput.addComments(KEY_COMMENT1, list1);
ArrayList<ReviewFileComment> list2 = Lists.newArrayList();
list2.add(new ReviewFileComment());
reviewInput.addComments(KEY_COMMENT2, list2);
assertEquals(2, reviewInput.size());
Map<String, List<ReviewFileComment>> comments = reviewInput.getComments();
assertEquals(2, comments.get(KEY_COMMENT1).size());
assertEquals(1, comments.get(KEY_COMMENT2).size());
}
@Test
public void shouldHaveTheUnmodifiedComments() {
ReviewInput reviewInput = new ReviewInput();
ArrayList<ReviewFileComment> list1 = Lists.newArrayList();
list1.add(new ReviewFileComment());
list1.add(new ReviewFileComment());
reviewInput.addComments(KEY_COMMENT1, list1);
list1.add(new ReviewFileComment());
assertEquals(1, reviewInput.size());
Map<String, List<ReviewFileComment>> comments = reviewInput.getComments();
assertEquals(2, comments.get(KEY_COMMENT1).size());
}
@Test
public void shouldHaveAToString() {
ReviewInput reviewInput = new ReviewInput();
reviewInput.setLabelToPlusOne(PLUS_ONE_LABEL);
reviewInput.setMessage(NEW_MESSAGE);
ArrayList<ReviewFileComment> list1 = Lists.newArrayList();
list1.add(new ReviewFileComment());
assertEquals("ReviewInput [message=A new message, labels={+1 Label=1}, comments={}]", reviewInput.toString());
}
@Test
public void shoulsHaveAEmptyReview() {
ReviewInput reviewInput = new ReviewInput();
reviewInput.emptyComments();
assertThat(reviewInput.isEmpty()).isTrue();
}
@Test
public void shouldHaveANoEmptyReview() {
ReviewInput reviewInput = new ReviewInput();
ArrayList<ReviewFileComment> list = Lists.newArrayList();
list.add(new ReviewFileComment());
reviewInput.addComments(KEY_COMMENT1, list);
assertThat(reviewInput.isEmpty()).isFalse();
}
}