package org.wikipedia.readinglist.sync;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.wikipedia.dataclient.WikiSite;
import org.wikipedia.json.GsonMarshaller;
import org.wikipedia.json.GsonUnmarshaller;
import org.wikipedia.page.PageTitle;
import org.wikipedia.readinglist.ReadingList;
import org.wikipedia.readinglist.page.ReadingListPage;
import org.wikipedia.readinglist.page.database.ReadingListDaoProxy;
import org.wikipedia.test.TestRunner;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.wikipedia.readinglist.sync.RemoteReadingLists.RemoteReadingList;
@RunWith(TestRunner.class)
public class RemoteReadingListPageTypeAdapterTest {
private ReadingList localList;
private List<PageTitle> localTitles;
@Before
public void setUp() throws Throwable {
localTitles = new ArrayList<>();
localTitles.add(new PageTitle("Barack Obama", new WikiSite("en.wikipedia.org")));
localTitles.add(new PageTitle("Special:Random", new WikiSite("en.wikipedia.org")));
localTitles.add(new PageTitle("Файл:Файл какой-то", new WikiSite("ru.wikipedia.org")));
String listName = "My list";
long now = System.currentTimeMillis();
localList = ReadingList.builder()
.atime(now)
.mtime(now)
.title("My list")
.key(ReadingListDaoProxy.listKey(listName))
.pages(Collections.<ReadingListPage>emptyList())
.build();
for (PageTitle title : localTitles) {
localList.getPages().add(ReadingListDaoProxy.page(localList, title));
}
}
@Test public void testRemoteReadingListPageTypeAdapter() throws Throwable {
String serialized = GsonMarshaller.marshal(new RemoteReadingList(localList));
RemoteReadingList remoteList = GsonUnmarshaller.unmarshal(RemoteReadingList.class, serialized);
for (int i = 0; i < remoteList.pages().size(); i++) {
assertThat(remoteList.pages().get(i).lang(), is(localTitles.get(i).getWikiSite().languageCode()));
assertThat(remoteList.pages().get(i).namespace(), is(localTitles.get(i).namespace().code()));
assertThat(remoteList.pages().get(i).title(), is(localTitles.get(i).getDisplayText()));
}
}
}