package com.ftinc.scoop;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatDelegate;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.Arrays;
import java.util.List;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.*;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.when;
/**
* Project: ThemeEngineTest
* Package: com.ftinc.scoop
* Created by drew.heavner on 6/10/16.
*/
@SuppressWarnings("ResourceType")
@RunWith(MockitoJUnitRunner.class)
public class ScoopTest {
private static final Flavor[] TEST_FLAVORS = new Flavor[]{
new Flavor("Bacon 1", 1),
new Flavor("Bacon 2", 2, 1),
new Flavor("Bacon 3", 3, 2, true)
};
private static final int NIGHT_MODE = AppCompatDelegate.MODE_NIGHT_AUTO;
@Mock
SharedPreferences mMockSharedPreferences;
@Mock
SharedPreferences.Editor mMockSharedPreferencesEditor;
@Before
public void setUp() throws Exception {
when(mMockSharedPreferences.getInt(eq(Scoop.PREFERENCE_DAYNIGHT_KEY), anyInt()))
.thenReturn(NIGHT_MODE);
when(mMockSharedPreferences.getInt(eq(Scoop.PREFERENCE_FLAVOR_KEY), anyInt()))
.thenReturn(1);
when(mMockSharedPreferencesEditor.commit())
.thenReturn(true);
when(mMockSharedPreferencesEditor.putInt(eq(Scoop.PREFERENCE_FLAVOR_KEY), anyInt()))
.thenReturn(mMockSharedPreferencesEditor);
when(mMockSharedPreferencesEditor.putInt(eq(Scoop.PREFERENCE_DAYNIGHT_KEY), anyInt()))
.thenReturn(mMockSharedPreferencesEditor);
when(mMockSharedPreferences.edit())
.thenReturn(mMockSharedPreferencesEditor);
Scoop.waffleCone()
.addFlavor(TEST_FLAVORS)
.setSharedPreferences(mMockSharedPreferences)
.initialize();
}
@Test
public void getDayNightMode() throws Exception {
int mode = Scoop.getInstance().getDayNightMode();
assertThat(mode, is(NIGHT_MODE));
}
@Test
public void getFlavors() throws Exception {
List<Flavor> flavors = Scoop.getInstance().getFlavors();
List<Flavor> testFlavors = Arrays.asList(TEST_FLAVORS);
assertEquals(flavors, testFlavors);
}
@Test
public void getCurrentFlavor() throws Exception {
Flavor currentFlavor = Scoop.getInstance().getCurrentFlavor();
assertEquals(currentFlavor, TEST_FLAVORS[1]);
}
@Test
public void choose() throws Exception {
int choice = 2;
when(mMockSharedPreferences.getInt(eq(Scoop.PREFERENCE_FLAVOR_KEY), anyInt()))
.thenReturn(choice);
Flavor choiceFlavor = TEST_FLAVORS[choice];
Scoop.getInstance().choose(choiceFlavor);
Flavor currentFlavor = Scoop.getInstance().getCurrentFlavor();
assertEquals(choiceFlavor, currentFlavor);
}
}