Add and modify tests for ClockManager.
Increase the code coverage of ClockManager to 100%.
Change-Id: I0242c8583f75754092541d4607a02aa46cbea25e
diff --git a/robolectric_tests/src/com/android/customization/model/clock/ClockManagerTest.java b/robolectric_tests/src/com/android/customization/model/clock/ClockManagerTest.java
index 11552de..f431006 100644
--- a/robolectric_tests/src/com/android/customization/model/clock/ClockManagerTest.java
+++ b/robolectric_tests/src/com/android/customization/model/clock/ClockManagerTest.java
@@ -19,6 +19,7 @@
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import android.content.ContentResolver;
import android.provider.Settings.Secure;
@@ -43,11 +44,14 @@
private static final String CLOCK_ID = "id";
private static final String CLOCK_FIELD = "clock";
+ private static final String CLOCK_FACE_SETTING = "fake_clock_face_setting";
@Mock ClockProvider mProvider;
@Mock ThemesUserEventLogger mLogger;
private ContentResolver mContentResolver;
private ClockManager mManager;
+ @Mock private Clockface mMockClockface;
+ @Mock private Callback mMockCallback;
@Before
public void setUp() {
@@ -81,10 +85,48 @@
}
@Test
- public void testGetCurrentClock() {
- // GIVEN that secure settings contains a clock id
- Secure.putString(mContentResolver, ClockManager.CLOCK_FACE_SETTING, CLOCK_ID);
- // THEN the current clock is that id
+ public void testApply_whenJSONExceptionOccurs_callsOnError() {
+ when(mMockClockface.getId()).thenThrow(JSONException.class);
+
+ mManager.apply(mMockClockface, mMockCallback);
+
+ verify(mMockCallback).onError(null);
+ }
+
+ @Test
+ public void testGetCurrentClock_returnsClockId() throws JSONException {
+ // Secure settings contains a clock id
+ JSONObject json = new JSONObject().put(CLOCK_FIELD, CLOCK_ID);
+ Secure.putString(mContentResolver, ClockManager.CLOCK_FACE_SETTING, json.toString());
+
+ // The current clock is that id
assertEquals(CLOCK_ID, mManager.getCurrentClock());
}
+
+ @Test
+ public void testGetCurrentClock_whenJSONExceptionOccurs_returnsClockFaceSetting() {
+ // Secure settings contains a clock face setting with invalid format to cause JSONException.
+ Secure.putString(mContentResolver, ClockManager.CLOCK_FACE_SETTING, CLOCK_FACE_SETTING);
+
+ // The current clock is the clock face setting which is saved in secure settings.
+ assertEquals(CLOCK_FACE_SETTING, mManager.getCurrentClock());
+ }
+
+ @Test
+ public void testGetCurrentClock_withNullIdInSecureSettings_returnsNullId() {
+ // Secure settings contains a null clock id
+ Secure.putString(mContentResolver, ClockManager.CLOCK_FACE_SETTING, /* value= */ null);
+
+ // The current clock is null
+ assertEquals(null, mManager.getCurrentClock());
+ }
+
+ @Test
+ public void testGetCurrentClock_withEmptyIdInSecureSettings_returnsEmptyId() {
+ // Secure settings contains an empty clock id
+ Secure.putString(mContentResolver, ClockManager.CLOCK_FACE_SETTING, /* value= */ "");
+
+ // The current clock is empty
+ assertEquals("", mManager.getCurrentClock());
+ }
}