package dw.xmlrpc.itest;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import dw.xmlrpc.DokuJClient;
import dw.xmlrpc.exception.DokuException;
import dw.xmlrpc.exception.DokuPageLockedException;
public class TestHelper {
/**
* Assert that the actual Date is equal to the expected one.
* Since we don't want to bother with timezones, we add a margin
*/
static void assertDatesNear(int year, int month, int day, int hour, int minute, int second, Date actual){
Date date = buildDate(year, month, day, hour, minute, second);
int marginInMs = 24 * 3600 * 1000 + 1;
assertTrue(Math.abs(date.getTime() - actual.getTime()) < marginInMs);
}
static Date buildDate(int year, int month, int day, int hour, int minute, int second){
TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
cal.set(year, month, day, hour, minute, second);
return cal.getTime();
}
public static void assertPagesAreLockForMe(Iterable<String> pageIds, DokuJClient client) throws DokuException {
for(String pageId : pageIds){
assertPageIsLockForMe(pageId, client);
}
}
public static void assertPageIsLockForMe(String pageId, DokuJClient client) throws DokuException{
boolean lockExceptionCaught = false;
try {
client.appendPage(pageId, "something");
} catch ( DokuPageLockedException e){
lockExceptionCaught = true;
}
assertTrue(lockExceptionCaught);
}
public static void assertPagesAreUnlockForMe(Iterable<String> pageIds, DokuJClient client) throws DokuException {
for(String pageId : pageIds){
assertPageIsUnlockForMe(pageId, client);
}
}
public static void assertPageIsUnlockForMe(String pageId, DokuJClient client) throws DokuException{
String initialContent = client.getPage(pageId);
try {
client.appendPage(pageId, "something");
} catch (DokuPageLockedException e){
fail();
}
//Clean page content
client.putPage(pageId, initialContent);
}
}