package org.commcare.android.util;
import org.commcare.CommCareApplication;
import org.commcare.android.mocks.CommCareTaskConnectorFake;
import org.commcare.tasks.FormRecordCleanupTask;
import org.commcare.util.CommCarePlatform;
import org.robolectric.Robolectric;
import static org.junit.Assert.fail;
/**
* Helpers for loading forms into a CommCare app.
*
* @author Phillip Mates (pmates@dimagi.com).
*/
public class SavedFormLoader {
private static final CommCareTaskConnectorFake<Object> fakeConnector =
new CommCareTaskConnectorFake<>();
/**
* Load saved forms into CommCare app via local payload file.
*
* @param payloadFile xml file containing form instances
*/
public static void loadFormsFromPayload(String payloadFile, String recordStatus) {
TestUtils.processResourceTransaction(payloadFile);
CommCarePlatform platform = CommCareApplication.instance().getCommCarePlatform();
FormRecordCleanupTask<Object> task = new FormRecordCleanupTask<Object>(CommCareApplication.instance(), platform, -1, recordStatus) {
@Override
protected void deliverResult(Object receiver, Integer result) {
}
@Override
protected void deliverUpdate(Object receiver, Integer... values) {
}
@Override
protected void deliverError(Object receiver, Exception e) {
fail("Failed to load saved forms from file.");
}
};
task.connect(fakeConnector);
task.execute();
Robolectric.flushBackgroundThreadScheduler();
Robolectric.flushForegroundThreadScheduler();
}
}