assertEqualAsJson test helper refactor (#3113)

* Refactor test helper

Create a version of the assert that uses the standard parameter
order and deprecate the version that uses inverted order.

* Use consistent Assert class and parameter ordering
This commit is contained in:
Tom Morris 2020-08-23 05:04:44 -04:00 committed by GitHub
parent 42e840dec6
commit 259705ad5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 66 additions and 63 deletions

View File

@ -36,6 +36,6 @@ public class CommandTestBase {
* Convenience method to check that CSRF protection was triggered * Convenience method to check that CSRF protection was triggered
*/ */
protected void assertCSRFCheckFailed() { protected void assertCSRFCheckFailed() {
TestUtils.assertEqualAsJson("{\"code\":\"error\",\"message\":\"Missing or invalid csrf_token parameter\"}", writer.toString()); TestUtils.assertEqualsAsJson(writer.toString(), "{\"code\":\"error\",\"message\":\"Missing or invalid csrf_token parameter\"}");
} }
} }

View File

@ -3,7 +3,7 @@ package com.google.refine.commands.cell;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertEquals;
import static org.testng.AssertJUnit.assertTrue; import static org.testng.Assert.assertTrue;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
@ -59,10 +59,10 @@ public class EditOneCellCommandTests extends RefineTest {
command.doPost(request, response); command.doPost(request, response);
assertEquals("a", project.rows.get(0).cells.get(0).value); assertEquals(project.rows.get(0).cells.get(0).value, "a");
assertEquals("b", project.rows.get(0).cells.get(1).value); assertEquals(project.rows.get(0).cells.get(1).value, "b");
assertEquals("e", project.rows.get(1).cells.get(0).value); assertEquals(project.rows.get(1).cells.get(0).value, "e");
assertEquals("d", project.rows.get(1).cells.get(1).value); assertEquals(project.rows.get(1).cells.get(1).value, "d");
} }
@Test @Test
@ -76,11 +76,11 @@ public class EditOneCellCommandTests extends RefineTest {
command.doPost(request, response); command.doPost(request, response);
assertEquals("a", project.rows.get(0).cells.get(0).value); assertEquals(project.rows.get(0).cells.get(0).value, "a");
assertEquals("b", project.rows.get(0).cells.get(1).value); assertEquals(project.rows.get(0).cells.get(1).value, "b");
assertTrue(project.rows.get(1).cells.get(0).value instanceof Long); assertTrue(project.rows.get(1).cells.get(0).value instanceof Long);
assertEquals(new Long(12345), project.rows.get(1).cells.get(0).value); assertEquals(new Long(12345), project.rows.get(1).cells.get(0).value);
assertEquals("d", project.rows.get(1).cells.get(1).value); assertEquals(project.rows.get(1).cells.get(1).value, "d");
} }
@Test @Test
@ -94,11 +94,11 @@ public class EditOneCellCommandTests extends RefineTest {
command.doPost(request, response); command.doPost(request, response);
assertEquals("a", project.rows.get(0).cells.get(0).value); assertEquals(project.rows.get(0).cells.get(0).value, "a");
assertEquals("b", project.rows.get(0).cells.get(1).value); assertEquals(project.rows.get(0).cells.get(1).value, "b");
assertTrue(project.rows.get(1).cells.get(0).value instanceof Double); assertTrue(project.rows.get(1).cells.get(0).value instanceof Double);
assertEquals(12345.123, project.rows.get(1).cells.get(0).value); assertEquals(project.rows.get(1).cells.get(0).value, 12345.123);
assertEquals("d", project.rows.get(1).cells.get(1).value); assertEquals(project.rows.get(1).cells.get(1).value, "d");
} }
@Test @Test
@ -111,7 +111,7 @@ public class EditOneCellCommandTests extends RefineTest {
command.doPost(request, response); command.doPost(request, response);
assertEquals("c", project.rows.get(1).cells.get(0).value); assertEquals(project.rows.get(1).cells.get(0).value, "c");
TestUtils.assertEqualAsJson("{\"code\":\"error\",\"message\":\"Missing or invalid csrf_token parameter\"}", writer.toString()); TestUtils.assertEqualAsJson("{\"code\":\"error\",\"message\":\"Missing or invalid csrf_token parameter\"}", writer.toString());
} }
} }

View File

@ -94,7 +94,7 @@ public class ExpressionCommandTestBase {
e.printStackTrace(); e.printStackTrace();
} }
} }
TestUtils.assertEqualAsJson(expectedJson, actualJson); TestUtils.assertEqualsAsJson(actualJson, expectedJson);
} }
} }

View File

@ -34,7 +34,6 @@ import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.google.refine.commands.expr.GetExpressionLanguageInfoCommand;
import com.google.refine.util.ParsingUtilities; import com.google.refine.util.ParsingUtilities;
import com.google.refine.util.TestUtils; import com.google.refine.util.TestUtils;
@ -53,10 +52,11 @@ public class GetExpressionLanguageInfoCommandTests extends ExpressionCommandTest
command.doGet(request, response); command.doGet(request, response);
String jsonResponse = writer.toString(); String jsonResponse = writer.toString();
JsonNode result = ParsingUtilities.mapper.readValue(jsonResponse, JsonNode.class); JsonNode result = ParsingUtilities.mapper.readValue(jsonResponse, JsonNode.class);
TestUtils.assertEqualAsJson("{\n" + TestUtils.assertEqualsAsJson(result.get("controls").get("filter").toString(),
"{\n" +
" \"description\" : \"Evaluates expression a to an array. Then for each array element, binds its value to variable name v, evaluates expression test which should return a boolean. If the boolean is true, pushes v onto the result array.\",\n" + " \"description\" : \"Evaluates expression a to an array. Then for each array element, binds its value to variable name v, evaluates expression test which should return a boolean. If the boolean is true, pushes v onto the result array.\",\n" +
" \"params\" : \"expression a, variable v, expression test\",\n" + " \"params\" : \"expression a, variable v, expression test\",\n" +
" \"returns\" : \"array\"\n" + " \"returns\" : \"array\"\n" +
" }", result.get("controls").get("filter").toString()); " }");
} }
} }

View File

@ -42,7 +42,6 @@ import org.testng.annotations.Test;
import com.google.refine.RefineTest; import com.google.refine.RefineTest;
import com.google.refine.commands.Command; import com.google.refine.commands.Command;
import com.google.refine.commands.expr.PreviewExpressionCommand;
import com.google.refine.model.Project; import com.google.refine.model.Project;
import com.google.refine.util.TestUtils; import com.google.refine.util.TestUtils;
@ -80,7 +79,7 @@ public class PreviewExpressionCommandTests extends RefineTest {
" \"results\" : [ \"d_u\", \"h_u\" ]\n" + " \"results\" : [ \"d_u\", \"h_u\" ]\n" +
" }"; " }";
command.doPost(request, response); command.doPost(request, response);
TestUtils.assertEqualAsJson(json, writer.toString()); TestUtils.assertEqualsAsJson(writer.toString(), json);
} }
@Test @Test
@ -97,6 +96,6 @@ public class PreviewExpressionCommandTests extends RefineTest {
" \"type\" : \"parser\"\n" + " \"type\" : \"parser\"\n" +
" }"; " }";
command.doPost(request, response); command.doPost(request, response);
TestUtils.assertEqualAsJson(json, writer.toString()); TestUtils.assertEqualsAsJson(writer.toString(), json);
} }
} }

View File

@ -36,7 +36,6 @@ import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import com.google.refine.commands.Command; import com.google.refine.commands.Command;
import com.google.refine.commands.expr.ToggleStarredExpressionCommand;
import com.google.refine.util.TestUtils; import com.google.refine.util.TestUtils;
public class ToggleStarredExpressionCommandTests extends ExpressionCommandTestBase { public class ToggleStarredExpressionCommandTests extends ExpressionCommandTestBase {
@ -77,9 +76,9 @@ public class ToggleStarredExpressionCommandTests extends ExpressionCommandTestBa
assertResponseJsonIs(json); assertResponseJsonIs(json);
} }
@Test @Test
public void testCSRFProtection() throws ServletException, IOException { public void testCSRFProtection() throws ServletException, IOException {
command.doPost(request, response); command.doPost(request, response);
TestUtils.assertEqualAsJson("{\"code\":\"error\",\"message\":\"Missing or invalid csrf_token parameter\"}", writer.toString()); TestUtils.assertEqualsAsJson(writer.toString(), "{\"code\":\"error\",\"message\":\"Missing or invalid csrf_token parameter\"}");
} }
} }

View File

@ -42,7 +42,6 @@ import org.testng.annotations.Test;
import com.google.refine.RefineTest; import com.google.refine.RefineTest;
import com.google.refine.commands.Command; import com.google.refine.commands.Command;
import com.google.refine.commands.row.GetRowsCommand;
import com.google.refine.model.Project; import com.google.refine.model.Project;
import com.google.refine.util.TestUtils; import com.google.refine.util.TestUtils;
@ -101,7 +100,7 @@ public class GetRowsCommandTest extends RefineTest {
when(request.getParameter("engine")).thenReturn("{\"mode\":\"row-based\",\"facets\":[]}"); when(request.getParameter("engine")).thenReturn("{\"mode\":\"row-based\",\"facets\":[]}");
command.doPost(request, response); command.doPost(request, response);
TestUtils.assertEqualAsJson(rowJson, writer.toString()); TestUtils.assertEqualsAsJson(writer.toString(), rowJson);
} }
@Test @Test
@ -137,6 +136,6 @@ public class GetRowsCommandTest extends RefineTest {
when(request.getParameter("engine")).thenReturn("{\"mode\":\"record-based\",\"facets\":[]}"); when(request.getParameter("engine")).thenReturn("{\"mode\":\"record-based\",\"facets\":[]}");
command.doPost(request, response); command.doPost(request, response);
TestUtils.assertEqualAsJson(recordJson, writer.toString()); TestUtils.assertEqualsAsJson(writer.toString(), recordJson);
} }
} }

View File

@ -192,7 +192,7 @@ public class CancelProcessesCommandTests extends RefineTest {
} catch (IOException e) { } catch (IOException e) {
Assert.fail(); Assert.fail();
} }
TestUtils.assertEqualAsJson("{ \"code\" : \"ok\" }", sw.toString()); TestUtils.assertEqualsAsJson(sw.toString(), "{ \"code\" : \"ok\" }");
} }
@Test @Test

View File

@ -1,7 +1,7 @@
package com.google.refine.importing; package com.google.refine.importing;
import static org.testng.AssertJUnit.assertEquals; import static org.testng.Assert.assertEquals;
import static org.testng.AssertJUnit.assertNotNull; import static org.testng.Assert.assertNotNull;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;

View File

@ -47,10 +47,7 @@ import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import com.google.refine.RefineTest; import com.google.refine.RefineTest;
import com.google.refine.model.Cell;
import com.google.refine.model.Project;
import com.google.refine.model.Recon;
import com.google.refine.model.Row;
import com.google.refine.util.Pool; import com.google.refine.util.Pool;
import com.google.refine.util.TestUtils; import com.google.refine.util.TestUtils;
@ -107,8 +104,8 @@ public class RowTests extends RefineTest {
Row row = new Row(5); Row row = new Row(5);
row.setCell(0, new Cell("I'm not empty", null)); row.setCell(0, new Cell("I'm not empty", null));
row.save(writer, options); row.save(writer, options);
TestUtils.assertEqualAsJson(writer.getBuffer().toString(), TestUtils.assertEqualsAsJson("{\"flagged\":false,\"starred\":false,\"cells\":[{\"v\":\"I'm not empty\"}]}",
"{\"flagged\":false,\"starred\":false,\"cells\":[{\"v\":\"I'm not empty\"}]}"); writer.getBuffer().toString());
} }
// This way of serializing a row with indices is now deprecated, see GetRowsCommand. // This way of serializing a row with indices is now deprecated, see GetRowsCommand.

View File

@ -26,7 +26,7 @@
******************************************************************************/ ******************************************************************************/
package com.google.refine.model.changes; package com.google.refine.model.changes;
import static org.testng.AssertJUnit.assertTrue; import static org.testng.Assert.assertTrue;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -53,9 +53,6 @@ import com.google.refine.model.Project;
import com.google.refine.model.Recon; import com.google.refine.model.Recon;
import com.google.refine.model.ReconCandidate; import com.google.refine.model.ReconCandidate;
import com.google.refine.model.Row; import com.google.refine.model.Row;
import com.google.refine.model.recon.ReconConfig;
import com.google.refine.model.recon.ReconJob;
import com.google.refine.model.recon.StandardReconConfig;
import com.google.refine.model.recon.StandardReconConfig.ColumnDetail; import com.google.refine.model.recon.StandardReconConfig.ColumnDetail;
import com.google.refine.model.recon.StandardReconConfig.ReconResult; import com.google.refine.model.recon.StandardReconConfig.ReconResult;
import com.google.refine.operations.OperationRegistry; import com.google.refine.operations.OperationRegistry;
@ -206,13 +203,13 @@ public class StandardReconConfigTests extends RefineTest {
StandardReconConfig r = StandardReconConfig.reconstruct(config); StandardReconConfig r = StandardReconConfig.reconstruct(config);
Row row = project.rows.get(0); Row row = project.rows.get(0);
ReconJob job = r.createJob(project, 0, row, "title", row.getCell(0)); ReconJob job = r.createJob(project, 0, row, "title", row.getCell(0));
TestUtils.assertEqualAsJson("{" TestUtils.assertEqualsAsJson( job.toString(), "{"
+ "\"query\":\"mulholland drive\"," + "\"query\":\"mulholland drive\","
+ "\"type\":\"Q1234\"," + "\"type\":\"Q1234\","
+ "\"properties\":[" + "\"properties\":["
+ " {\"pid\":\"P123\",\"v\":\"david lynch\"}" + " {\"pid\":\"P123\",\"v\":\"david lynch\"}"
+ "]," + "],"
+ "\"type_strict\":\"should\"}", job.toString()); + "\"type_strict\":\"should\"}");
} }
@Test @Test

View File

@ -40,6 +40,7 @@ import static org.powermock.api.mockito.PowerMockito.mockStatic;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.StringWriter; import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@ -198,7 +199,7 @@ public class ExtendDataOperationTests extends RefineTest {
Set<String> ids = Collections.singleton("Q2"); Set<String> ids = Collections.singleton("Q2");
String json = "{\"ids\":[\"Q2\"],\"properties\":[{\"id\":\"P571\"},{\"id\":\"P159\"},{\"id\":\"P625\"}]}"; String json = "{\"ids\":[\"Q2\"],\"properties\":[{\"id\":\"P571\"},{\"id\":\"P159\"},{\"id\":\"P625\"}]}";
ReconciledDataExtensionJobStub stub = new ReconciledDataExtensionJobStub(config, "http://endpoint"); ReconciledDataExtensionJobStub stub = new ReconciledDataExtensionJobStub(config, "http://endpoint");
TestUtils.assertEqualAsJson(json, stub.formulateQueryStub(ids, config)); TestUtils.assertEqualsAsJson(stub.formulateQueryStub(ids, config), json);
} }
@ -406,15 +407,15 @@ public class ExtendDataOperationTests extends RefineTest {
} }
private void mockHttpCall(String query, String response) throws IOException { private void mockHttpCall(String query, String response) throws IOException {
mockedResponses.put(ParsingUtilities.mapper.readTree(query), response); mockedResponses.put(ParsingUtilities.mapper.readTree(query), response);
} }
InputStream fakeHttpCall(String endpoint, String query) throws IOException { InputStream fakeHttpCall(String endpoint, String query) throws IOException {
JsonNode parsedQuery = ParsingUtilities.mapper.readTree(query); JsonNode parsedQuery = ParsingUtilities.mapper.readTree(query);
if (mockedResponses.containsKey(parsedQuery)) { if (mockedResponses.containsKey(parsedQuery)) {
return IOUtils.toInputStream(mockedResponses.get(parsedQuery)); return IOUtils.toInputStream(mockedResponses.get(parsedQuery), StandardCharsets.UTF_8);
} else { } else {
throw new IllegalArgumentException("HTTP call not mocked for query: "+query); throw new IllegalArgumentException("HTTP call not mocked for query: "+query);
} }
} }
} }

View File

@ -74,9 +74,20 @@ public class TestUtils {
} }
/** /**
* Compare two JSON strings for equality. * Assert that two JSON strings are equal as JSON objects.
*
* @deprecated for 3.5 by Tom Morris Use the method with the same parameter
* order as the rest of the assert
* methods{@link #assertEqualsAsJson(String, String)}
*/ */
public static void assertEqualAsJson(String expected, String actual) { public static void assertEqualAsJson(String expected, String actual) {
assertEqualsAsJson(actual, expected);
}
/**
* Assert that two JSON strings are equal as JSON objects.
*/
public static void assertEqualsAsJson(String actual, String expected) {
try { try {
JsonNode jsonA = mapper.readValue(expected, JsonNode.class); JsonNode jsonA = mapper.readValue(expected, JsonNode.class);
JsonNode jsonB = mapper.readValue(actual, JsonNode.class); JsonNode jsonB = mapper.readValue(actual, JsonNode.class);
@ -85,14 +96,14 @@ public class TestUtils {
fail("Objects above are not equal as JSON strings."); fail("Objects above are not equal as JSON strings.");
} }
} catch(Exception e) { } catch(Exception e) {
fail("\""+expected+"\" and \""+actual+"\" are not equal as JSON strings."); fail("\""+actual+"\" and \""+expected+"\" are not equal as JSON strings.");
} }
} }
public static boolean equalAsJson(String expected, String actual) { public static boolean equalAsJson(String a, String b) {
try { try {
JsonNode jsonA = mapper.readValue(expected, JsonNode.class); JsonNode jsonA = mapper.readValue(a, JsonNode.class);
JsonNode jsonB = mapper.readValue(actual, JsonNode.class); JsonNode jsonB = mapper.readValue(b, JsonNode.class);
return (jsonA == null && jsonB == null) || jsonA.equals(jsonB); return (jsonA == null && jsonB == null) || jsonA.equals(jsonB);
} catch(Exception e) { } catch(Exception e) {
return false; return false;
@ -114,7 +125,7 @@ public class TestUtils {
writer = ParsingUtilities.defaultWriter; writer = ParsingUtilities.defaultWriter;
} }
String jacksonJson = writer.writeValueAsString(o); String jacksonJson = writer.writeValueAsString(o);
assertEqualAsJson(targetJson, jacksonJson); assertEqualsAsJson(jacksonJson, targetJson);
} catch (JsonProcessingException e) { } catch (JsonProcessingException e) {
e.printStackTrace(); e.printStackTrace();
fail("jackson serialization failed"); fail("jackson serialization failed");