UserDataStoreFactory { public UserDataStore create(int userId) { UserDataStore userDataStore; if (!this.userCache.isExpired() && this.userCache.isCached(userId)) { userDataStore = new DiskUserDataStore(this.userCache); } else { userDataStore = createCloudDataStore(); } return userDataStore; } UserDataStoreFactory(Context applicationContext);  UserDataStoreFactory(Context context, UserCache userCache); void setUserCache(UserCache userCache); UserDataStore create(int userId); UserDataStore createCloudDataStore();  }
@Test public void testCreateDiskDataStore() { given(mockUserCache.isCached(FAKE_USER_ID)).willReturn(true); given(mockUserCache.isExpired()).willReturn(false); UserDataStore userDataStore = userDataStoreFactory.create(FAKE_USER_ID); assertThat(userDataStore, is(notNullValue())); assertThat(userDataStore, is(instanceOf(DiskUserDataStore.class))); verify(mockUserCache).isCached(FAKE_USER_ID); verify(mockUserCache).isExpired(); }