Skip to content

Instantly share code, notes, and snippets.

View kmdupr33's full-sized avatar

Matt Dupree kmdupr33

View GitHub Profile
/**
* Background {@link android.app.Service} that adds or removes session Calendar events through
* the {@link CalendarContract} API available in Android 4.0 or above.
*/
public class SessionCalendarService extends IntentService {
private static final String TAG = makeLogTag(SessionCalendarService.class);
public SessionCalendarService() {
super(TAG);
}
public class SessionCalendarUpdater {
//...
private SessionCalendarDatabase mSessionCalendarDatabase;
private SessionCalendarUserPreferences mSessionCalendarUserPreferences;
public SessionCalendarUpdater(SessionCalendarDatabase sessionCalendarDatabase,
SessionCalendarUserPreferences sessionCalendarUserPreferences) {
package com.google.samples.apps.iosched.service;
import android.content.SharedPreferences;
/**
* Created by MattDupree on 4/30/15.
*/
public class AndroidSessionCalendarUserPreferences implements SessionCalendarUserPreferences {
private static final String KEY_SHOULD_SYNC_CAL = "com.google.samples.apps.iosched.KEY_SHOULD_SYNC_CAL";
@kmdupr33
kmdupr33 / SessionDetailViewPresenter.java
Last active August 29, 2015 14:20
Showing injected dependencies and onStop()
public class SessionDetailViewPresenter implements RepositoryManagerCallbacks {
public SessionDetailViewPresenter(SessionDetailView sessionDetailView,
RepositoryManager loaderManager,
ServiceStarter serviceStarter,
long calendarId
) {
mSessionDetailView = sessionDetailView;
mLoaderManager = loaderManager;
@kmdupr33
kmdupr33 / SessionDetailPresnterTests.java
Created May 8, 2015 10:22
A first pass at writing a unit test against onStop
package com.google.samples.apps.iosched.test;
import com.google.samples.apps.iosched.service.CalendarSession;
import com.google.samples.apps.iosched.ui.RepositoryManager;
import com.google.samples.apps.iosched.ui.ServiceStarter;
import com.google.samples.apps.iosched.ui.sessiondetail.SessionDetailViewPresenter;
import com.google.samples.apps.iosched.ui.sessiondetail.SessionDetailViewTranslator;
import junit.framework.TestCase;
@kmdupr33
kmdupr33 / SessionRepositoryManager.java
Created May 8, 2015 10:30
Showing Android-agnostic interface
package com.google.samples.apps.iosched.ui;
import android.os.Bundle;
import com.google.samples.apps.iosched.io.model.Session;
/**
*
* Created by MattDupree on 5/6/15.
*/
@kmdupr33
kmdupr33 / SessionDetailActivity.java
Last active August 29, 2015 14:20
Showing Injection of Android-specific implementation of SessionRepositoryManager
public class SessionDetailActivity extends Activity implements SessionDetailViewTranslator {
@Override
public void onCreate(Bundle savedInstanceState)
//...
ServiceStarter serviceStarter = new AndroidServiceStarter(this);
SessionRepositoryManager repositoryManager = new AndroidSessionRepositoryManager(getLoaderManager());
@kmdupr33
kmdupr33 / MockSessionRepositoryManager.java
Created May 8, 2015 10:41
Showing how we can control SessionDetailPresenter pre-act-state by injecting a mock SessionRepositoryManager
package com.google.samples.apps.iosched.ui.sessiondetail;
import android.os.Bundle;
import com.google.samples.apps.iosched.io.model.Session;
/**
* Created by MattDupree on 5/8/15.
*/
public class MockSessionRepositoryManager implements SessionRepositoryManager{
@kmdupr33
kmdupr33 / SessionDetailPresnterTests.java
Last active August 29, 2015 14:20
Showing a second pass at writing a unit test for onStop() this time with more control over pre-act state
public void testShouldLaunchAddSessionService() {
//Arrange
SessionDetailViewTranslator sessionDetailViewTranslator = mock(SessionDetailViewTranslator.class);
Session session = new Session();
session.startTimestamp = "1431081943";
SessionRepositoryManager repositoryManager = new MockSessionRepositoryManager(session);
@kmdupr33
kmdupr33 / SessionDetailPresenter.java
Last active August 29, 2015 14:20
Showing how we can alter mStarrred by calling onToggleSessionStarred()
public void onToggleSessionStarred() {
mStarred = !mStarred;
}