package org.wikipedia.page; import org.json.JSONObject; import org.junit.Test; import org.junit.runner.RunWith; import org.wikipedia.dataclient.WikiSite; import org.wikipedia.server.BasePageLeadTest; import org.wikipedia.test.TestRunner; import java.util.ArrayList; import java.util.List; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; /** Unit tests for Page. */ @RunWith(TestRunner.class) public class PageTest { private static final WikiSite WIKI = WikiSite.forLanguageCode("en"); @Test public void testMediaWikiMarshalling() throws Throwable { PageTitle title = new PageTitle("Main page", WIKI, "//foo/thumb.jpg"); PageProperties props = new PageProperties(new JSONObject(BasePageLeadTest.getEnglishMainPageJson())); Page page = new Page(title, new ArrayList<Section>(), props, Page.MEDIAWIKI_ORIGIN); assertThat(page.isFromRestBase(), is(false)); Page pageClone = new Page(page.toJSON()); assertThat(pageClone.isFromRestBase(), is(false)); } @Test public void testRestBaseMarshalling() throws Throwable { PageTitle title = new PageTitle("Main page", WIKI, "//foo/thumb.jpg"); PageProperties props = new PageProperties(new JSONObject(BasePageLeadTest.getEnglishMainPageJson())); Page page = new Page(title, new ArrayList<Section>(), props, Page.RESTBASE_ORIGIN); Page pageClone = new Page(page.toJSON()); // = complete unmarshall(marshall(subject)) assertThat(pageClone, is(page)); assertThat(page.isFromRestBase(), is(true)); assertThat(pageClone.isFromRestBase(), is(true)); } @Test public void testConstructorJson() throws Exception { List<Section> sections = new ArrayList<>(); Section headSection = new Section(0, 1, null, null, "Hi there!"); sections.add(headSection); final int numSections = 10; for (int i = 1; i <= numSections; i++) { sections.add(new Section(i, 1, "Something " + i, "Something_" + i, "Content Something" + i)); } PageTitle title = new PageTitle(null, "Test", WikiSite.forLanguageCode("en")); PageProperties props = new PageProperties(new JSONObject("{\"id\":15580374,\"displaytitle\":\"Test\",\"revision\":615503846,\"lastmodified\":\"2001-02-03T04:00:00Z\",\"editable\":true,\"mainpage\":true}")); Page page = new Page(title, sections, props); assertThat(page, is(new Page(page.toJSON()))); } }