package org.wikibrain.core.dao;
import org.junit.Test;
import org.wikibrain.core.dao.sql.LocalPageSqlDao;
import org.wikibrain.core.dao.sql.TestDaoUtil;
import org.wikibrain.core.dao.sql.WpDataSource;
import org.wikibrain.core.lang.Language;
import org.wikibrain.core.lang.LanguageInfo;
import org.wikibrain.core.model.*;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static org.junit.Assert.*;
public class TestLocalPageDao {
@Test
public void testArticle() throws ClassNotFoundException, IOException, SQLException, DaoException {
WpDataSource wpDs = TestDaoUtil.getWpDataSource();
LanguageInfo lang = LanguageInfo.getByLangCode("en");
LocalPageSqlDao dao = new LocalPageSqlDao(wpDs);
dao.beginLoad();
LocalPage page = new LocalPage(
lang.getLanguage(),
7,
new Title("test", lang),
NameSpace.ARTICLE
);
dao.save(page);
dao.endLoad();
LocalPage savedPage = dao.getByTitle(new Title("test", lang), NameSpace.ARTICLE);
assert (savedPage != null);
assert (page.getLocalId() == savedPage.getLocalId());
assert (page.getTitle().equals(savedPage.getTitle()));
assert (page.getNameSpace().equals(savedPage.getNameSpace()));
savedPage = dao.getById(lang.getLanguage(), 7);
assert (savedPage != null);
assert (page.getLocalId() == savedPage.getLocalId());
assert (page.getTitle().equals(savedPage.getTitle()));
assert (page.getNameSpace().equals(savedPage.getNameSpace()));
List<Integer> pageIds = new ArrayList<Integer>();
pageIds.add(7);
Map<Integer, LocalPage> pages = dao.getByIds(lang.getLanguage(), pageIds);
assert (pages.size() == 1);
assert (pages.get(7).equals(page));
assert (pages.get(7).equals(savedPage));
List<Title> titles = new ArrayList<Title>();
titles.add(new Title("test", lang));
Map<Title, LocalPage> morePages = dao.getByTitles(lang.getLanguage(), titles, NameSpace.ARTICLE);
assert (morePages.size() == 1);
assert (morePages.get(new Title("test", lang)).equals(page));
assert (morePages.get(new Title("test", lang)).equals(savedPage));
int savedId = dao.getIdByTitle("Test", lang.getLanguage(), NameSpace.ARTICLE);
assert (savedId==7);
}
@Test
public void testURL() {
LocalPage lp = new LocalPage(Language.EN, 3, "Barack Obama");
String url = lp.getCompactUrl();
assertEquals("/w/en/3/Barack_Obama", url);
assertFalse(LocalPage.isCompactUrl("s" + url));
assertTrue(LocalPage.isCompactUrl(url));
LocalPage lp2 = LocalPage.fromCompactUrl(url);
assertNotNull(lp2);
assertEquals(lp, lp2);
}
}