package org.commcare.android.tests.processing; import junit.framework.Assert; import org.commcare.CommCareApplication; import org.commcare.CommCareTestApplication; import org.commcare.android.CommCareTestRunner; import org.commcare.models.database.HybridFileBackedSqlStorage; import org.commcare.models.database.StoreFixturesOnFilesystemTests; import org.javarosa.core.model.instance.FormInstance; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.annotation.Config; import java.util.NoSuchElementException; /** * @author Phillip Mates (pmates@dimagi.com). */ @Config(application = CommCareTestApplication.class) @RunWith(CommCareTestRunner.class) public class FixtureLoadingTest { @Before public void setup() { StoreFixturesOnFilesystemTests.installAppWithFixtureData(this.getClass(), "odk_level_ipm_restore_with_empty_fixture.xml"); } /** * Ensure parsing doesn't stop at empty fixtures, but continues on, * committing subsequent fixtures */ @Test public void testEmptyFixtureFollowedByNormalFixture() { HybridFileBackedSqlStorage<FormInstance> userFixtureStorage = CommCareApplication.instance().getFileBackedUserStorage("fixture", FormInstance.class); boolean didntFindEmptyFixture = false; try { userFixtureStorage.getRecordForValues(new String[]{FormInstance.META_ID}, new String[]{"commtrack:locations"}); } catch (NoSuchElementException e) { didntFindEmptyFixture = true; } Assert.assertTrue(didntFindEmptyFixture); userFixtureStorage.getRecordForValues(new String[]{FormInstance.META_ID}, new String[]{"commtrack:programs"}); } }