package com.google.samples.apps.iosched.session; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.support.annotation.NonNull; import com.google.samples.apps.iosched.archframework.QueryEnum; import com.google.samples.apps.iosched.testutils.StubModelHelper; import java.util.HashMap; /** * A stub {@link SessionDetailModel}, to be injected using {@link com.google.samples.apps.iosched * .injection.ModelProvider}. It overrides {@link #requestData(QueryEnum, DataQueryCallback)} to * bypass the loader manager mechanism. Use the classes in {@link com.google.samples.apps.iosched * .mockdata} * to provide the stub cursors. */ public class StubSessionDetailModel extends SessionDetailModel { private HashMap<QueryEnum, Cursor> mFakeData = new HashMap<QueryEnum, Cursor>(); public StubSessionDetailModel(Uri sessionUri, Context context, Cursor sessionCursor, Cursor speakersCursor, Cursor tagMetadataCursor) { super(sessionUri, context, null, null); mFakeData.put(SessionDetailQueryEnum.SESSIONS, sessionCursor); mFakeData.put(SessionDetailQueryEnum.SPEAKERS, speakersCursor); mFakeData.put(SessionDetailQueryEnum.TAG_METADATA, tagMetadataCursor); } /** * Overrides the loader manager mechanism by directly calling {@link #onLoadFinished(QueryEnum, * Cursor)} with a stub {@link Cursor} as provided in the constructor. */ @Override public void requestData(final @NonNull SessionDetailQueryEnum query, final @NonNull DataQueryCallback callback) { new StubModelHelper<SessionDetailModel.SessionDetailQueryEnum>() .overrideLoaderManager(query, callback, mFakeData, mDataQueryCallbacks, this); } }