Search in sources :

Example 6 with Maybe

use of org.activityinfo.promise.Maybe in project activityinfo by bedatadriven.

the class FormStoreTest method newRecordOffline.

@Test
public void newRecordOffline() {
    TestSetup setup = new TestSetup();
    Survey survey = setup.getSurveyForm();
    // Synchronize the survey form
    setup.setConnected(true);
    setup.getFormStore().setFormOffline(survey.getFormId(), true);
    setup.runScheduled();
    // Go offline...
    setup.setConnected(false);
    // Monitor the pending queue status
    Connection<PendingStatus> pendingStatus = setup.connect(setup.getOfflineStore().getPendingStatus());
    assertThat(pendingStatus.assertLoaded().isEmpty(), equalTo(true));
    // Create a new survey record
    FormInstance newRecordTyped = survey.getGenerator().get();
    RecordTransaction tx = RecordTransaction.builder().create(newRecordTyped).build();
    // Update a record...
    Promise<Void> updateResult = setup.getFormStore().updateRecords(tx);
    assertThat(updateResult.getState(), equalTo(Promise.State.FULFILLED));
    // Now query offline...
    Connection<Maybe<FormRecord>> recordView = setup.connect(setup.getFormStore().getRecord(newRecordTyped.getRef()));
    // It should be listed as a pending change...
    assertThat(pendingStatus.assertLoaded().getCount(), equalTo(1));
    Maybe<FormRecord> record = recordView.assertLoaded();
    assertThat(record.getState(), equalTo(Maybe.State.VISIBLE));
    assertThat(record.get().getRecordId(), equalTo(newRecordTyped.getId().asString()));
    // Finally go online and ensure that results are sent to the server
    setup.setConnected(true);
    setup.getOfflineStore().syncChanges();
    // Our queue should be empty again
    assertThat(pendingStatus.assertLoaded().isEmpty(), equalTo(true));
}
Also used : Maybe(org.activityinfo.promise.Maybe) FormInstance(org.activityinfo.model.form.FormInstance) FormRecord(org.activityinfo.model.form.FormRecord) RecordTransaction(org.activityinfo.model.resource.RecordTransaction) Test(org.junit.Test)

Example 7 with Maybe

use of org.activityinfo.promise.Maybe in project activityinfo by bedatadriven.

the class RecordTreeLoaderTest method simpleSurvey.

@Test
public void simpleSurvey() {
    Survey survey = setup.getSurveyForm();
    Observable<Maybe<RecordTree>> recordTree = setup.getFormStore().getRecordTree(survey.getRecordRef(0));
    Connection<Maybe<RecordTree>> recordTreeView = setup.connect(recordTree);
    RecordTree tree = recordTreeView.assertLoaded().get();
    assertThat(tree.getRoot().get(survey.getNameFieldId()), equalTo(TextValue.valueOf("Melanie")));
}
Also used : RecordTree(org.activityinfo.model.formTree.RecordTree) Survey(org.activityinfo.store.testing.Survey) Maybe(org.activityinfo.promise.Maybe) Test(org.junit.Test)

Aggregations

Maybe (org.activityinfo.promise.Maybe)7 Test (org.junit.Test)6 RecordTree (org.activityinfo.model.formTree.RecordTree)4 RecordRef (org.activityinfo.model.type.RecordRef)4 FormInstance (org.activityinfo.model.form.FormInstance)3 FormTree (org.activityinfo.model.formTree.FormTree)2 LookupKeySet (org.activityinfo.model.formTree.LookupKeySet)2 ReferenceValue (org.activityinfo.model.type.ReferenceValue)2 Predicate (com.google.common.base.Predicate)1 HashMultimap (com.google.common.collect.HashMultimap)1 Multimap (com.google.common.collect.Multimap)1 java.util (java.util)1 Collections.emptyMap (java.util.Collections.emptyMap)1 Level (java.util.logging.Level)1 Logger (java.util.logging.Logger)1 IDBFactoryStub (org.activityinfo.indexedb.IDBFactoryStub)1 RecordLockSet (org.activityinfo.model.database.RecordLockSet)1 FormEvalContext (org.activityinfo.model.form.FormEvalContext)1 FormField (org.activityinfo.model.form.FormField)1 FormRecord (org.activityinfo.model.form.FormRecord)1