package com.taskadapter.redmineapi; import com.taskadapter.redmineapi.bean.Attachment; import com.taskadapter.redmineapi.bean.Project; import com.taskadapter.redmineapi.bean.User; import com.taskadapter.redmineapi.bean.WikiPage; import com.taskadapter.redmineapi.bean.WikiPageDetail; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; public class WikiManagerIT { private static RedmineManager redmineManager; private static Project project; private static String projectKey; private static WikiManager manager; private static User currentUser; @BeforeClass public static void beforeClass() throws RedmineException { redmineManager = IntegrationTestHelper.createRedmineManager(); project = IntegrationTestHelper.createProject(redmineManager); projectKey = project.getIdentifier(); manager = redmineManager.getWikiManager(); UserManager userManager = redmineManager.getUserManager(); currentUser = userManager.getCurrentUser(); } @AfterClass public static void oneTimeTearDown() { IntegrationTestHelper.deleteProject(redmineManager, project.getIdentifier()); } @Test public void wikiPageIsCreated() throws Exception { WikiPageDetail wikiPageDetail = createSomeWikiPage(); WikiPageDetail loaded = manager.getWikiPageDetailByProjectAndTitle(projectKey, wikiPageDetail.getTitle()); String title = wikiPageDetail.getTitle(); String urlSafeTitleIsExpected = URLEncoder.encode(title, StandardCharsets.UTF_8.name()); assertThat(loaded.getTitle()).isEqualToIgnoringCase(urlSafeTitleIsExpected); assertThat(loaded.getText()).isEqualTo(wikiPageDetail.getText()); assertThat(loaded.getUser().getId()).isEqualTo(currentUser.getId()); assertThat(loaded.getCreatedOn()).isNotNull(); assertThat(loaded.getUpdatedOn()).isNotNull(); } @Test public void getWikiPagesIndexByProject() throws Exception { createSomeWikiPage(); createSomeWikiPage(); List<WikiPage> wikiPages = manager.getWikiPagesByProject(projectKey); assertThat(wikiPages.size()).isGreaterThan(1); } @Ignore("requires manual configuration, see the source code.") @Test public void getSpecificWikiPageByProject() throws Exception { WikiPageDetail specificPage = manager.getWikiPageDetailByProjectAndTitle("test", "Wiki"); assertThat(specificPage.getParent().getTitle()).isEqualTo("Wiki"); assertThat(specificPage.getVersion()).isEqualTo(2); assertThat(specificPage.getAttachments()).isNotNull(); assertThat(specificPage.getAttachments().size()).isEqualTo(1); Attachment attachment = specificPage.getAttachments().get(0); assertThat(attachment.getFileName()).isEqualTo("happy_penguin.jpg"); assertThat(attachment.getId()).isEqualTo(8); assertThat(attachment.getFileSize()).isEqualTo(72158); assertThat(attachment.getAuthor().getFullName()).isEqualTo("Redmine Admin"); assertThat(attachment.getContentURL()).isEqualTo("http://76.126.10.142/redmine/attachments/download/8/happy_penguin.jpg"); } @Test public void wikiPageIsUpdated() throws Exception { WikiPageDetail specificPage = createSomeWikiPage(); String newText = "updated text"; specificPage.setText(newText); manager.update(projectKey, specificPage); WikiPageDetail updatedPage = manager.getWikiPageDetailByProjectAndTitle(projectKey, specificPage.getTitle()); assertThat(updatedPage.getText()).isEqualTo(newText); } private WikiPageDetail createSomeWikiPage() throws RedmineException { WikiPageDetail wikiPageDetail = new WikiPageDetail(); String title = "title " + System.currentTimeMillis(); wikiPageDetail.setTitle(title); String text = "some text here"; wikiPageDetail.setText(text); manager.update(projectKey, wikiPageDetail); return wikiPageDetail; } }