package com.pablissimo.sonar;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import com.pablissimo.sonar.model.TsLintIssue;
public class TsLintParserTest {
@Test
public void parsesValidTsLintRecordIntoObject() {
String parseRow1 = "[{\"endPosition\":{\"character\":44,\"line\":23,\"position\":658},\"failure\":\"for statements must be braced\",\"name\":\"Tools.ts\",\"ruleName\":\"curly\",\"startPosition\":{\"character\":6,\"line\":22,\"position\":587}}]";
List<String> toParse = new ArrayList<String>();
toParse.add(parseRow1);
Map<String, List<TsLintIssue>> issues = new TsLintParserImpl().parse(toParse);
assertEquals(1, issues.size());
List<TsLintIssue> fileIssues = issues.get("Tools.ts");
assertEquals(1, fileIssues.size());
TsLintIssue issue = fileIssues.get(0);
assertEquals(44, issue.getEndPosition().getCharacter());
assertEquals(23, issue.getEndPosition().getLine());
assertEquals(658, issue.getEndPosition().getPosition());
assertEquals("for statements must be braced", issue.getFailure());
assertEquals("Tools.ts", issue.getName());
assertEquals("curly", issue.getRuleName());
assertEquals(6, issue.getStartPosition().getCharacter());
assertEquals(22, issue.getStartPosition().getLine());
assertEquals(587, issue.getStartPosition().getPosition());
}
@Test
public void parsesIssuesWithSameNameIntoSameBucket() {
List<String> toParse = new ArrayList<String>();
toParse.add("[{\"name\":\"Tools.ts\",\"ruleName\":\"tools1\"}]");
toParse.add("[{\"name\":\"Tools.ts\",\"ruleName\":\"tools2\"}]");
Map<String, List<TsLintIssue>> issues = new TsLintParserImpl().parse(toParse);
assertEquals(1, issues.size());
assertEquals(2, issues.get("Tools.ts").size());
}
@Test
public void fixesUpBrokenBatchedOutputFromTsLintPriorTo_4_0_0() {
List<String> toParse = new ArrayList<String>();
toParse.add("[{\"name\":\"Tools.ts\",\"ruleName\":\"tools1\"}][{\"name\":\"Tools.ts\",\"ruleName\":\"tools2\"}]");
Map<String, List<TsLintIssue>> issues = new TsLintParserImpl().parse(toParse);
assertEquals(1, issues.size());
assertEquals(2, issues.get("Tools.ts").size());
}
@Test
public void parseAGoodProjectWithNoIssues() {
List<String> toParse = new ArrayList<String>();
toParse.add("");
Map<String, List<TsLintIssue>> issues = new TsLintParserImpl().parse(toParse);
assertEquals(0, issues.size());
}
}