split method of CSVRowParserTests is now unit tested. 3 tests fail (related to issue #19) - behaviour of CSV importer needs some further work.
logger now correct on GridworksServletTests git-svn-id: http://google-refine.googlecode.com/svn/trunk@777 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
parent
ae986ebe49
commit
9b2aa5290c
@ -22,7 +22,7 @@ import com.metaweb.gridworks.commands.Command;
|
|||||||
|
|
||||||
public class GridworksServletTests {
|
public class GridworksServletTests {
|
||||||
// logging
|
// logging
|
||||||
final static protected Logger logger = LoggerFactory.getLogger("CancelProcessesCommandTests");
|
final static protected Logger logger = LoggerFactory.getLogger("GridworksServletTests");
|
||||||
|
|
||||||
//System under test
|
//System under test
|
||||||
GridworksServletStub SUT = null;
|
GridworksServletStub SUT = null;
|
||||||
@ -45,6 +45,7 @@ public class GridworksServletTests {
|
|||||||
request = mock(HttpServletRequest.class);
|
request = mock(HttpServletRequest.class);
|
||||||
response = mock(HttpServletResponse.class);
|
response = mock(HttpServletResponse.class);
|
||||||
command = mock(Command.class);
|
command = mock(Command.class);
|
||||||
|
|
||||||
GridworksServletStub.InsertCommand(TEST_COMMAND_NAME,command); //inject mock into command container
|
GridworksServletStub.InsertCommand(TEST_COMMAND_NAME,command); //inject mock into command container
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,8 +57,14 @@ public class GridworksServletTests {
|
|||||||
command = null;
|
command = null;
|
||||||
GridworksServletStub.RemoveCommand(TEST_COMMAND_NAME); //remove mock to clean command container
|
GridworksServletStub.RemoveCommand(TEST_COMMAND_NAME); //remove mock to clean command container
|
||||||
}
|
}
|
||||||
|
//-------------------AutoSaveTimerTask tests-----------
|
||||||
|
//TODO would need to mock Timer and inject it into GridworksServlet. Also need to deal with ProjectManager.singleton
|
||||||
|
//-------------------init tests------------------------
|
||||||
|
//TODO need to stub super.init(), mock Timer and inject it into GridworksServlet
|
||||||
|
//-------------------destroy tests---------------------
|
||||||
|
//TODO need to mock Timer and inject it into GridworksServlet. Also need to deal with ProjectManager.singleton
|
||||||
|
|
||||||
//--------------------doGet tests---------------------
|
//--------------------doGet tests----------------------
|
||||||
@Test
|
@Test
|
||||||
public void doGetRegressionTest(){
|
public void doGetRegressionTest(){
|
||||||
whenGetCommandNameThenReturn(TEST_COMMAND_PATH);
|
whenGetCommandNameThenReturn(TEST_COMMAND_PATH);
|
||||||
@ -136,7 +143,6 @@ public class GridworksServletTests {
|
|||||||
verifyError404Called();
|
verifyError404Called();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//----------------getCommandName tests----------------
|
//----------------getCommandName tests----------------
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -149,7 +155,7 @@ public class GridworksServletTests {
|
|||||||
verify(request, times(1)).getPathInfo();
|
verify(request, times(1)).getPathInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
//helpers
|
//------------helpers
|
||||||
protected void whenGetCommandNameThenReturn(String commandName){
|
protected void whenGetCommandNameThenReturn(String commandName){
|
||||||
when(request.getPathInfo()).thenReturn(commandName);
|
when(request.getPathInfo()).thenReturn(commandName);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,105 @@
|
|||||||
|
package com.metaweb.gridworks.tests.importers.parsers;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.LineNumberReader;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import com.metaweb.gridworks.importers.parsers.CSVRowParser;
|
||||||
|
|
||||||
|
public class CSVRowParserTests {
|
||||||
|
// logging
|
||||||
|
final static protected Logger logger = LoggerFactory.getLogger("CSVRowParserTests");
|
||||||
|
|
||||||
|
//constants
|
||||||
|
String SAMPLE_ROW = "NDB_No,Shrt_Desc,Water";
|
||||||
|
String ROW_WITH_QUOTED_COMMA = "01001,\"BUTTER,WITH SALT\",15.87";
|
||||||
|
String UNCLOSED_QUOTED_ROW = "\"Open quoted value, with commas";
|
||||||
|
String LEADING_QUOTE_WITH_COMMA = "value1, \"Open quoted, with commas\" and close quote but no comma, value3";
|
||||||
|
String QUOTED = "value1, value2 with \"quote\" in middle, value3";
|
||||||
|
|
||||||
|
String SAMPLE_CSV = SAMPLE_ROW + "\n" + ROW_WITH_QUOTED_COMMA; //Unix line endings?
|
||||||
|
|
||||||
|
//System Under Test
|
||||||
|
CSVRowParser SUT = null;
|
||||||
|
|
||||||
|
//mocked dependencies
|
||||||
|
LineNumberReader lineReader = null;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void SetUp(){
|
||||||
|
lineReader = mock(LineNumberReader.class);
|
||||||
|
SUT = new CSVRowParser();
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void TearDown(){
|
||||||
|
lineReader = null;
|
||||||
|
SUT = null;
|
||||||
|
}
|
||||||
|
//------------split tests-------------------------
|
||||||
|
@Test
|
||||||
|
public void split(){
|
||||||
|
List<String> splitLine = SUT.split(SAMPLE_ROW, lineReader);
|
||||||
|
Assert.assertEquals(3, splitLine.size());
|
||||||
|
Assert.assertEquals("NDB_No", splitLine.get(0));
|
||||||
|
Assert.assertEquals("Shrt_Desc", splitLine.get(1));
|
||||||
|
Assert.assertEquals("Water", splitLine.get(2));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void splitWithQuotedComma(){
|
||||||
|
List<String> splitLine = SUT.split(ROW_WITH_QUOTED_COMMA, lineReader);
|
||||||
|
Assert.assertEquals(3, splitLine.size());
|
||||||
|
Assert.assertEquals("01001", splitLine.get(0));
|
||||||
|
Assert.assertEquals("BUTTER,WITH SALT", splitLine.get(1));
|
||||||
|
Assert.assertEquals("15.87", splitLine.get(2));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void splitWithUnclosedQuote(){
|
||||||
|
try {
|
||||||
|
when(lineReader.readLine()).thenReturn("");
|
||||||
|
} catch (IOException e) {
|
||||||
|
Assert.fail();
|
||||||
|
}
|
||||||
|
List<String> splitLine = SUT.split(UNCLOSED_QUOTED_ROW, lineReader);
|
||||||
|
Assert.assertEquals(1, splitLine.size());
|
||||||
|
Assert.assertEquals(UNCLOSED_QUOTED_ROW, splitLine.get(0));
|
||||||
|
|
||||||
|
try {
|
||||||
|
verify(lineReader, times(1)).readLine();
|
||||||
|
} catch (IOException e) {
|
||||||
|
Assert.fail();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void splitWithLeadingQuoteWithComma(){
|
||||||
|
List<String> splitLine = SUT.split(LEADING_QUOTE_WITH_COMMA, lineReader);
|
||||||
|
Assert.assertEquals(3, splitLine.size());
|
||||||
|
Assert.assertEquals("value1", splitLine.get(0));
|
||||||
|
Assert.assertEquals("\"Open quoted, with commas\" and close quote but no comma", splitLine.get(0));
|
||||||
|
Assert.assertEquals("value3", splitLine.get(2));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void splitWithQuoteInsideValue(){
|
||||||
|
List<String> splitLine = SUT.split(QUOTED, lineReader);
|
||||||
|
Assert.assertEquals(3, splitLine.size());
|
||||||
|
Assert.assertEquals("value1", splitLine.get(0));
|
||||||
|
Assert.assertEquals("value2 with \"quote\" in middle", splitLine.get(1));
|
||||||
|
Assert.assertEquals("value3", splitLine.get(2));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user