package org.fenixedu.cms.api; import static org.junit.Assert.assertTrue; import java.util.HashSet; import java.util.Locale; import java.util.Set; import org.fenixedu.bennu.core.domain.User; import org.fenixedu.cms.api.json.PostRevisionAdapter; 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.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonParser; @RunWith(FenixFrameworkRunner.class) public class TestPostVersionResource extends TestCmsApi { protected static final Logger LOGGER = LoggerFactory.getLogger(TestPostVersionResource.class); @Test public void getPostSeveralVersions() { // prepare Set<JsonElement> expectedJsonVersions = new HashSet<JsonElement>(); User user = CmsTestUtils.createAuthenticatedUser("getPostSeveralVersions"); Site site = CmsTestUtils.createSite(user, "getPostSeveralVersions"); Post post = CmsTestUtils.createPost(site, "getPostSeveralVersions"); PostContentRevision version1 = post.getLatestRevision(); LocalizedString postEditBody = new LocalizedString(Locale.UK, "post body uk edit " + "getPostSeveralVersions").with(Locale.US, "post body us edit " + "getPostSeveralVersions"); post.setBody(postEditBody); PostContentRevision version2 = post.getLatestRevision(); JsonElement version1json = removeNullKeys(new PostRevisionAdapter().view(version1, ctx)); expectedJsonVersions.add(version1json); JsonElement version2json = removeNullKeys(new PostRevisionAdapter().view(version2, ctx)); expectedJsonVersions.add(version2json); // execute String response = getPostVersionsTarget(post).request().get(String.class); LOGGER.debug("getPostSeveralVersions: response = " + response.replaceAll("(\\r|\\n|\\t)", " ")); //test assertTrue("version list from postshouldn't be empty", !response.isEmpty() && !response.equals(EMPTY_RESPONSE)); JsonArray jsonResponseArray = new JsonParser().parse(response).getAsJsonArray(); assertTrue("response should contain two versions", jsonResponseArray.size() == 2); assertTrue("response should include version1 and version2", expectedJsonVersions.contains(jsonResponseArray.get(0)) && expectedJsonVersions.contains(jsonResponseArray.get(1))); } }