From 5417de9a3e82b2109b6e556e4824e0f34d471fca Mon Sep 17 00:00:00 2001 From: Sean Flanigan Date: Tue, 24 Sep 2013 17:52:10 +1000 Subject: [PATCH] Avoid mutation of test data; use DTOUtil.toXML instead of toString --- .../zanata/rest/service/RestUtilsTest.java | 36 ++++++++++++----- .../service/TranslationServiceRestTest.java | 40 ++++++++++++++----- 2 files changed, 55 insertions(+), 21 deletions(-) diff --git a/zanata-war/src/test/java/org/zanata/rest/service/RestUtilsTest.java b/zanata-war/src/test/java/org/zanata/rest/service/RestUtilsTest.java index 6e0eb035d8..f784467447 100644 --- a/zanata-war/src/test/java/org/zanata/rest/service/RestUtilsTest.java +++ b/zanata-war/src/test/java/org/zanata/rest/service/RestUtilsTest.java @@ -15,6 +15,7 @@ import org.testng.annotations.BeforeTest; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import org.zanata.rest.dto.DTOUtil; import org.zanata.rest.dto.VersionInfo; import org.zanata.rest.dto.resource.Resource; import org.zanata.rest.dto.resource.ResourceMeta; @@ -50,27 +51,42 @@ public void prepareSeam() @DataProvider(name = "ResourceTestData") public Object[][] getResourceTestData() { - return new Object[][] { new Object[] { resourceTestFactory.getPoHeaderTest() }, new Object[] { resourceTestFactory.getPotEntryHeaderTest() }, new Object[] { resourceTestFactory.getTextFlowCommentTest() } -, new Object[] { resourceTestFactory.getTextFlowTest2() } + // @formatter:off + return new Object[][] { + new Object[] { "getPoHeaderTest", resourceTestFactory.getPoHeaderTest() }, + new Object[] { "getPotEntryHeaderTest", resourceTestFactory.getPotEntryHeaderTest() }, + new Object[] { "getTextFlowCommentTest", resourceTestFactory.getTextFlowCommentTest() }, + new Object[] { "getTextFlowTest2", resourceTestFactory.getTextFlowTest2() } }; + // @formatter:on } @DataProvider(name = "ResourceMetaTestData") public Object[][] getResourceMetaTestData() { - return new Object[][] { new Object[] { resourceTestFactory.getResourceMeta() }, new Object[] { resourceTestFactory.getPoHeaderResourceMeta() } + // @formatter:off + return new Object[][] { + new Object[] { "getResourceMeta", resourceTestFactory.getResourceMeta() }, + new Object[] { "getPoHeaderResourceMeta", resourceTestFactory.getPoHeaderResourceMeta() } }; + // @formatter:on } @DataProvider(name = "TranslationTestData") public Object[][] getTranslationTestData() { - return new Object[][] { new Object[] { transTestFactory.getPoTargetHeaderTextFlowTargetTest() }, new Object[] { transTestFactory.getTestObject() }, new Object[] { transTestFactory.getTestObject2() }, new Object[] { transTestFactory.getTextFlowTargetCommentTest() } + // @formatter:off + return new Object[][] { + new Object[] { "getPoTargetHeaderTextFlowTargetTest", transTestFactory.getPoTargetHeaderTextFlowTargetTest() }, + new Object[] { "getTestObject", transTestFactory.getTestObject() }, + new Object[] { "getTestObject2", transTestFactory.getTestObject2() }, + new Object[] { "getTextFlowTargetCommentTest", transTestFactory.getTextFlowTargetCommentTest() } }; + // @formatter:on } @Test(dataProvider = "ResourceTestData") - public void testUnmarshallResource(Resource res) throws UnsupportedEncodingException + public void testUnmarshallResource(String desc, Resource res) throws UnsupportedEncodingException { // SeamMockClientExecutor test = new SeamMockClientExecutor(); // ClientRequest client = test.createRequest("http://example.com/"); @@ -83,13 +99,13 @@ private void testRestUtilUnmarshall(T entity, Class InputStream messageBody = null; try { - String testStr = entity.toString(); + String testStr = DTOUtil.toXML(entity); log.info("expect:" + testStr); messageBody = new ByteArrayInputStream(testStr.getBytes("UTF-8")); T unmarshall = restUtils.unmarshall(type, messageBody, MediaType.APPLICATION_XML_TYPE, new Headers()); - Log.info("got:" + unmarshall.toString()); - assertThat(entity.toString(), is(testStr)); + Log.info("got:" + DTOUtil.toXML(unmarshall)); + assertThat(DTOUtil.toXML(entity), is(testStr)); } finally { @@ -142,13 +158,13 @@ public void testUnmarshallJasonTranslationsResource() @Test(dataProvider = "TranslationTestData") - public void testUnmarshallTranslation(TranslationsResource res) throws UnsupportedEncodingException + public void testUnmarshallTranslation(String desc, TranslationsResource res) throws UnsupportedEncodingException { testRestUtilUnmarshall(res, TranslationsResource.class); } @Test(dataProvider = "ResourceMetaTestData") - public void testUnmarshallResourceMeta(ResourceMeta res) throws UnsupportedEncodingException + public void testUnmarshallResourceMeta(String desc, ResourceMeta res) throws UnsupportedEncodingException { testRestUtilUnmarshall(res, ResourceMeta.class); } diff --git a/zanata-war/src/test/java/org/zanata/rest/service/TranslationServiceRestTest.java b/zanata-war/src/test/java/org/zanata/rest/service/TranslationServiceRestTest.java index 33f3e27980..68950d4f48 100644 --- a/zanata-war/src/test/java/org/zanata/rest/service/TranslationServiceRestTest.java +++ b/zanata-war/src/test/java/org/zanata/rest/service/TranslationServiceRestTest.java @@ -1,6 +1,7 @@ package org.zanata.rest.service; import javax.ws.rs.core.Response.Status; +import javax.xml.bind.JAXBException; import org.jboss.resteasy.client.ClientResponse; import org.mockito.Mockito; @@ -11,6 +12,7 @@ import org.testng.annotations.Test; import org.zanata.common.LocaleId; import org.zanata.rest.StringSet; +import org.zanata.rest.dto.DTOUtil; import org.zanata.rest.dto.resource.Resource; import org.zanata.rest.dto.resource.TranslationsResource; import org.zanata.seam.SeamAutowire; @@ -36,12 +38,12 @@ public Object[][] getTestData() { // @formatter:off return new Object[][] - { - new Object[] { transTestFactory.getTestObject() }, - new Object[] { transTestFactory.getPoTargetHeaderTextFlowTargetTest() }, - new Object[] { transTestFactory.getTextFlowTargetCommentTest() }, - new Object[] { transTestFactory.getAllExtension() } - }; + { + new Object[] { "getTestObject", transTestFactory.getTestObject() }, + new Object[] { "getPoTargetHeaderTextFlowTargetTest", transTestFactory.getPoTargetHeaderTextFlowTargetTest() }, + new Object[] { "getTextFlowTargetCommentTest", transTestFactory.getTextFlowTargetCommentTest() }, + new Object[] { "getAllExtension", transTestFactory.getAllExtension() } + }; // @formatter:on } @@ -81,8 +83,9 @@ public void testDeleteTranslation() } @Test(dataProvider = "TranslationTestData") - public void testPutGetTranslation(TranslationsResource sr) + public void testPutGetTranslation(String desc, TranslationsResource sr) { + sr = cloneDTO(sr); Resource res = resourceTestFactory.getTextFlowTest(); sourceDocResource.putResource(res.getName(), res, new StringSet("gettext;comment")); log.debug("successful put resource:" + res.getName()); @@ -97,8 +100,9 @@ public void testPutGetTranslation(TranslationsResource sr) } @Test(dataProvider = "TranslationTestData") - public void testPutGetTranslationNoExtension(TranslationsResource sr) + public void testPutGetTranslationNoExtension(String desc, TranslationsResource sr) { + sr = cloneDTO(sr); Resource res = resourceTestFactory.getTextFlowTest(); sourceDocResource.putResource(res.getName(), res, new StringSet("gettext;comment")); log.debug("successful put resource:" + res.getName()); @@ -113,9 +117,10 @@ public void testPutGetTranslationNoExtension(TranslationsResource sr) assertThat(base.toString(), is(get.toString())); } - @Test(dataProvider = "TranslationTestData") - public void testPutNoExtensionGetTranslation(TranslationsResource sr) + @Test(dataProvider = "TranslationTestData", dependsOnMethods = { "testPutGetTranslation" }) + public void testPutNoExtensionGetTranslation(String desc, TranslationsResource sr) { + sr = cloneDTO(sr); Resource res = resourceTestFactory.getTextFlowTest(); sourceDocResource.putResource(res.getName(), res, new StringSet("gettext;comment")); log.debug("successful put resource:" + res.getName()); @@ -131,8 +136,9 @@ public void testPutNoExtensionGetTranslation(TranslationsResource sr) } @Test(dataProvider = "TranslationTestData") - public void testPutGetNoExtensionTranslation(TranslationsResource sr) + public void testPutGetNoExtensionTranslation(String desc, TranslationsResource sr) { + sr = cloneDTO(sr); Resource res = resourceTestFactory.getTextFlowTest(); sourceDocResource.putResource(res.getName(), res, new StringSet("gettext;comment")); log.debug("successful put resource:" + res.getName()); @@ -147,4 +153,16 @@ public void testPutGetNoExtensionTranslation(TranslationsResource sr) assertThat(base.toString(), is(get.toString())); } + private T cloneDTO(T dto) + { + try + { + return (T) DTOUtil.toObject(DTOUtil.toXML(dto), dto.getClass()); + } + catch (JAXBException e) + { + throw new RuntimeException(e); + } + } + }