mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 01:08:50 -06:00
Implement tests for Preferences
This commit is contained in:
@@ -104,7 +104,7 @@ public class BaseAndroidTest extends TestCase
|
||||
logger = appComponent.getHabitsLogger();
|
||||
modelFactory = appComponent.getModelFactory();
|
||||
|
||||
prefs.reset();
|
||||
prefs.clear();
|
||||
|
||||
fixtures = new HabitFixtures(modelFactory, habitList);
|
||||
fixtures.purgeHabits(appComponent.getHabitList());
|
||||
|
||||
@@ -84,7 +84,7 @@ public class BaseUserInterfaceTest
|
||||
|
||||
private void resetState() throws Exception
|
||||
{
|
||||
prefs.reset();
|
||||
prefs.clear();
|
||||
prefs.setFirstRun(false);
|
||||
prefs.updateLastHint(100, DateUtils.getToday());
|
||||
habitList.removeAll();
|
||||
|
||||
@@ -28,6 +28,10 @@ import java.util.*;
|
||||
|
||||
public class Preferences
|
||||
{
|
||||
|
||||
public static final String DEFAULT_SYNC_SERVER =
|
||||
"https://sync.loophabits.org";
|
||||
|
||||
@NonNull
|
||||
private final Storage storage;
|
||||
|
||||
@@ -138,13 +142,12 @@ public class Preferences
|
||||
|
||||
public long getSnoozeInterval()
|
||||
{
|
||||
return Long.parseLong(storage.getString("pref_snooze_interval", "15"));
|
||||
return storage.getLong("pref_snooze_interval", 15L);
|
||||
}
|
||||
|
||||
public String getSyncAddress()
|
||||
{
|
||||
return storage.getString("pref_sync_address",
|
||||
"https://sync.loophabits.org");
|
||||
return storage.getString("pref_sync_address", DEFAULT_SYNC_SERVER);
|
||||
}
|
||||
|
||||
public void setSyncAddress(String address)
|
||||
@@ -160,6 +163,7 @@ public class Preferences
|
||||
|
||||
id = UUID.randomUUID().toString();
|
||||
storage.putString("pref_sync_client_id", id);
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
@@ -180,8 +184,12 @@ public class Preferences
|
||||
|
||||
public void incrementLaunchCount()
|
||||
{
|
||||
int count = storage.getInt("launch_count", 0);
|
||||
storage.putInt("launch_count", count + 1);
|
||||
storage.putInt("launch_count", getLaunchCount() + 1);
|
||||
}
|
||||
|
||||
public int getLaunchCount()
|
||||
{
|
||||
return storage.getInt("launch_count", 0);
|
||||
}
|
||||
|
||||
public boolean isDeveloper()
|
||||
@@ -234,7 +242,7 @@ public class Preferences
|
||||
listeners.remove(listener);
|
||||
}
|
||||
|
||||
public void reset()
|
||||
public void clear()
|
||||
{
|
||||
storage.clear();
|
||||
}
|
||||
@@ -251,7 +259,7 @@ public class Preferences
|
||||
|
||||
public void setNotificationsSticky(boolean sticky)
|
||||
{
|
||||
storage.getBoolean("pref_sticky_notifications", sticky);
|
||||
storage.putBoolean("pref_sticky_notifications", sticky);
|
||||
for (Listener l : listeners) l.onNotificationsChanged();
|
||||
}
|
||||
|
||||
@@ -287,6 +295,32 @@ public class Preferences
|
||||
storage.putLong("last_hint_timestamp", timestamp.getUnixTime());
|
||||
}
|
||||
|
||||
public void setSyncKey(String key)
|
||||
{
|
||||
storage.putString("pref_sync_key", key);
|
||||
for(Listener l : listeners) l.onSyncFeatureChanged();
|
||||
}
|
||||
|
||||
public void setPureBlackEnabled(boolean enabled)
|
||||
{
|
||||
storage.putBoolean("pref_pure_black", enabled);
|
||||
}
|
||||
|
||||
public int getLastAppVersion()
|
||||
{
|
||||
return storage.getInt("last_version", 0);
|
||||
}
|
||||
|
||||
public void setSnoozeInterval(int interval)
|
||||
{
|
||||
storage.putLong("pref_snooze_interval", interval);
|
||||
}
|
||||
|
||||
public void setNumericalHabitsFeatureEnabled(boolean enabled)
|
||||
{
|
||||
storage.putBoolean("pref_feature_numerical_habits", enabled);
|
||||
}
|
||||
|
||||
public interface Listener
|
||||
{
|
||||
default void onCheckmarkSequenceChanged() {}
|
||||
|
||||
@@ -23,6 +23,7 @@ import android.support.annotation.*;
|
||||
|
||||
import org.isoron.uhabits.core.*;
|
||||
import org.isoron.uhabits.core.models.*;
|
||||
import org.isoron.uhabits.core.ui.*;
|
||||
import org.junit.*;
|
||||
import org.mockito.*;
|
||||
|
||||
@@ -30,6 +31,8 @@ import java.io.*;
|
||||
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.core.IsEqual.equalTo;
|
||||
import static org.junit.Assert.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
public class PreferencesTest extends BaseUnitTest
|
||||
{
|
||||
@@ -53,6 +56,14 @@ public class PreferencesTest extends BaseUnitTest
|
||||
prefs.addListener(listener);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClear() throws Exception
|
||||
{
|
||||
prefs.setDefaultHabitColor(99);
|
||||
prefs.clear();
|
||||
assertThat(prefs.getDefaultHabitColor(0), equalTo(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHabitColor() throws Exception
|
||||
{
|
||||
@@ -86,4 +97,127 @@ public class PreferencesTest extends BaseUnitTest
|
||||
assertThat(prefs.getDefaultScoreSpinnerPosition(), equalTo(1));
|
||||
assertThat(storage.getInt("pref_score_view_interval", 0), equalTo(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLastHint() throws Exception
|
||||
{
|
||||
assertThat(prefs.getLastHintNumber(), equalTo(-1));
|
||||
assertNull(prefs.getLastHintTimestamp());
|
||||
|
||||
prefs.updateLastHint(34, Timestamp.ZERO.plus(100));
|
||||
assertThat(prefs.getLastHintNumber(), equalTo(34));
|
||||
assertThat(prefs.getLastHintTimestamp(), equalTo(Timestamp.ZERO.plus(100)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSync() throws Exception
|
||||
{
|
||||
assertThat(prefs.getLastSync(), equalTo(0L));
|
||||
prefs.setLastSync(100);
|
||||
assertThat(prefs.getLastSync(), equalTo(100L));
|
||||
|
||||
assertThat(prefs.getSyncAddress(),
|
||||
equalTo(Preferences.DEFAULT_SYNC_SERVER));
|
||||
prefs.setSyncAddress("example");
|
||||
assertThat(prefs.getSyncAddress(), equalTo("example"));
|
||||
verify(listener).onSyncFeatureChanged();
|
||||
reset(listener);
|
||||
|
||||
assertThat(prefs.getSyncKey(), equalTo(""));
|
||||
prefs.setSyncKey("123");
|
||||
assertThat(prefs.getSyncKey(), equalTo("123"));
|
||||
verify(listener).onSyncFeatureChanged();
|
||||
reset(listener);
|
||||
|
||||
assertFalse(prefs.isSyncEnabled());
|
||||
prefs.setSyncEnabled(true);
|
||||
assertTrue(prefs.isSyncEnabled());
|
||||
verify(listener).onSyncFeatureChanged();
|
||||
reset(listener);
|
||||
|
||||
String id = prefs.getSyncClientId();
|
||||
assertFalse(id.isEmpty());
|
||||
assertThat(prefs.getSyncClientId(), equalTo(id));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTheme() throws Exception
|
||||
{
|
||||
assertThat(prefs.getTheme(), equalTo(ThemeSwitcher.THEME_LIGHT));
|
||||
prefs.setTheme(ThemeSwitcher.THEME_DARK);
|
||||
assertThat(prefs.getTheme(), equalTo(ThemeSwitcher.THEME_DARK));
|
||||
|
||||
assertFalse(prefs.isPureBlackEnabled());
|
||||
prefs.setPureBlackEnabled(true);
|
||||
assertTrue(prefs.isPureBlackEnabled());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNotifications() throws Exception
|
||||
{
|
||||
assertFalse(prefs.shouldMakeNotificationsSticky());
|
||||
prefs.setNotificationsSticky(true);
|
||||
assertTrue(prefs.shouldMakeNotificationsSticky());
|
||||
|
||||
assertThat(prefs.getSnoozeInterval(), equalTo(15L));
|
||||
prefs.setSnoozeInterval(30);
|
||||
assertThat(prefs.getSnoozeInterval(), equalTo(30L));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAppVersionAndLaunch() throws Exception
|
||||
{
|
||||
assertThat(prefs.getLastAppVersion(), equalTo(0));
|
||||
prefs.setLastAppVersion(23);
|
||||
assertThat(prefs.getLastAppVersion(), equalTo(23));
|
||||
|
||||
assertTrue(prefs.isFirstRun());
|
||||
prefs.setFirstRun(false);
|
||||
assertFalse(prefs.isFirstRun());
|
||||
|
||||
assertThat(prefs.getLaunchCount(), equalTo(0));
|
||||
prefs.incrementLaunchCount();
|
||||
assertThat(prefs.getLaunchCount(), equalTo(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCheckmarks() throws Exception
|
||||
{
|
||||
assertFalse(prefs.isCheckmarkSequenceReversed());
|
||||
prefs.setCheckmarkSequenceReversed(true);
|
||||
assertTrue(prefs.isCheckmarkSequenceReversed());
|
||||
|
||||
assertFalse(prefs.isShortToggleEnabled());
|
||||
prefs.setShortToggleEnabled(true);
|
||||
assertTrue(prefs.isShortToggleEnabled());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNumericalHabits() throws Exception
|
||||
{
|
||||
assertFalse(prefs.isNumericalHabitsFeatureEnabled());
|
||||
prefs.setNumericalHabitsFeatureEnabled(true);
|
||||
assertTrue(prefs.isNumericalHabitsFeatureEnabled());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeveloper() throws Exception
|
||||
{
|
||||
assertFalse(prefs.isDeveloper());
|
||||
prefs.setDeveloper(true);
|
||||
assertTrue(prefs.isDeveloper());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFiltering() throws Exception
|
||||
{
|
||||
assertFalse(prefs.getShowArchived());
|
||||
assertTrue(prefs.getShowCompleted());
|
||||
|
||||
prefs.setShowArchived(true);
|
||||
prefs.setShowCompleted(false);
|
||||
|
||||
assertTrue(prefs.getShowArchived());
|
||||
assertFalse(prefs.getShowCompleted());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user