package com.truckmuncher.app.vendor.menuadmin; import android.content.ContentProviderOperation; import android.content.ContentProviderResult; import android.content.ContentValues; import android.content.Intent; import android.content.OperationApplicationException; import android.support.annotation.NonNull; import com.truckmuncher.app.data.Contract; import com.truckmuncher.app.data.PublicContract; import com.truckmuncher.app.test.VerifiableContentProvider; import com.truckmuncher.testlib.ReadableRobolectricTestRunner; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.shadows.ShadowContentResolver; import java.util.ArrayList; import static org.assertj.core.api.Assertions.assertThat; @RunWith(ReadableRobolectricTestRunner.class) public class MenuItemDiffServiceTest { @Test public void newIntentBuildsAsExpected() { ContentValues blt = new ContentValues(); blt.put(PublicContract.Menu.MENU_ITEM_NAME, "BLT"); ContentValues[] valuesList = new ContentValues[]{blt}; Intent intent = MenuItemDiffService.newIntent(Robolectric.application, valuesList); assertThat(intent.getComponent().getClassName()).isEqualTo(MenuItemDiffService.class.getName()); assertThat(intent.getExtras().get("content_values")).isNotNull(); } @Test public void onHandleIntentPerformsBulkInsertWithSyncToNetworkDirective() { VerifiableContentProvider provider = new VerifiableContentProvider(); ShadowContentResolver.registerProvider(PublicContract.CONTENT_AUTHORITY, provider); provider.enqueue(new VerifiableContentProvider.ApplyBatchEvent() { @NonNull @Override public ContentProviderResult[] onApplyBatch(@NonNull ArrayList<ContentProviderOperation> operations) throws OperationApplicationException { assertThat(operations).hasSize(1); assertThat(Contract.isSyncToNetwork(operations.get(0).getUri())).isTrue(); return new ContentProviderResult[0]; } }); Intent intent = MenuItemDiffService.newIntent(Robolectric.application, new ContentValues[]{new ContentValues()}); MenuItemDiffService service = new MenuItemDiffService(); service.onHandleIntent(intent); provider.assertThatCursorsAreClosed(); provider.assertThatQueuesAreEmpty(); } }