package org.fenixedu.cms.api; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.fenixedu.bennu.core.domain.User; import org.fenixedu.cms.domain.CmsTestUtils; import org.fenixedu.cms.domain.Post; import org.fenixedu.cms.domain.PostContentRevision; import org.fenixedu.cms.domain.Site; import org.fenixedu.commons.i18n.LocalizedString; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.FenixFrameworkRunner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.gson.JsonObject; import com.google.gson.JsonParser; @RunWith(FenixFrameworkRunner.class) public class TestVersionResource extends TestCmsApi { protected static final Logger LOGGER = LoggerFactory.getLogger(TestVersionResource.class); @Test public void getOnlyVersion() { // prepare User user = CmsTestUtils.createAuthenticatedUser("getOnlyVersion"); Site site = CmsTestUtils.createSite(user, "getOnlyVersion"); Post post = CmsTestUtils.createPost(site, "getOnlyVersion"); PostContentRevision version = post.getLatestRevision(); // execute String response = getVersionTarget(version).request().get(String.class); LOGGER.debug("getOnlyVersion: response = " + response.replaceAll("(\\r|\\n|\\t)", " ")); // test JsonObject jsonResponse = new JsonParser().parse(response).getAsJsonObject(); assertTrue("response version should have an id field", jsonResponse.has("id")); assertEquals("response version should have same id as the created", version.getExternalId(), jsonResponse.get("id") .getAsString()); assertTrue("response version should have an createdBy field", jsonResponse.has("createdBy")); assertEquals("createdBy response should be equal to expected createdBy", user.getUsername(), jsonResponse .get("createdBy").getAsString()); assertTrue("response version should have an body field", jsonResponse.has("body")); assertEquals("body response should be equal to expected body", version.getBody(), LocalizedString.fromJson(jsonResponse.get("body").getAsJsonObject())); assertTrue("response version should have a post field", jsonResponse.has("post")); assertEquals("post response should be equal to created post", post.getExternalId(), jsonResponse.get("post") .getAsString()); assertTrue("response version should have an revisionDate field", jsonResponse.has("revisionDate")); assertEquals("revisionDate response should be equal to expected revisionDate", version.getRevisionDate().toString(), jsonResponse.get("revisionDate").getAsString()); assertFalse("response version should not contain previous", jsonResponse.has("previous")); assertFalse("response version should not contain next", jsonResponse.has("next")); } @Test public void getMiddleVersion() { // prepare User user = CmsTestUtils.createAuthenticatedUser("getMiddleVersion"); Site site = CmsTestUtils.createSite(user, "getMiddleVersion"); Post post = CmsTestUtils.createPost(site, "getMiddleVersion v1"); PostContentRevision version1 = post.getLatestRevision(); PostContentRevision version2 = CmsTestUtils.createVersion(post, "getMiddleVersion v2"); PostContentRevision version3 = CmsTestUtils.createVersion(post, "getMiddleVersion v3"); // execute String response = getVersionTarget(version2).request().get(String.class); LOGGER.debug("getOnlyVersion: response = " + response.replaceAll("(\\r|\\n|\\t)", " ")); // test JsonObject jsonResponse = new JsonParser().parse(response).getAsJsonObject(); assertTrue("response version should have an id field", jsonResponse.has("id")); assertEquals("response version should have same id as the created", version2.getExternalId(), jsonResponse.get("id") .getAsString()); assertTrue("response version should have an createdBy field", jsonResponse.has("createdBy")); assertEquals("createdBy response should be equal to expected createdBy", user.getUsername(), jsonResponse .get("createdBy").getAsString()); assertTrue("response version should have an body field", jsonResponse.has("body")); assertEquals("body response should be equal to expected body", version2.getBody(), LocalizedString.fromJson(jsonResponse.get("body").getAsJsonObject())); assertTrue("response version should have a post field", jsonResponse.has("post")); assertEquals("post response should be equal to created post", post.getExternalId(), jsonResponse.get("post") .getAsString()); assertTrue("response version should have an revisionDate field", jsonResponse.has("revisionDate")); assertEquals("revisionDate response should be equal to expected revisionDate", version2.getRevisionDate().toString(), jsonResponse.get("revisionDate").getAsString()); assertTrue("response version should have an previous field", jsonResponse.has("previous")); assertEquals("previous response should be equal to expected previous", version1.getExternalId(), jsonResponse.get("previous").getAsString()); assertTrue("response version should have an next field", jsonResponse.has("next")); assertEquals("next response should be equal to expected next", version3.getExternalId(), jsonResponse.get("next") .getAsString()); } }