diff options
author | 2015-03-16 15:26:36 -0700 | |
---|---|---|
committer | 2015-03-16 17:08:35 -0700 | |
commit | bff393ce13554588d3906df4e5f464199acb23ae (patch) | |
tree | 261bbec3f3a6a78e0351423ecfb326b6520a5cf3 /tests/src/com/android/inputmethod/latin/settings/AccountsSettingsFragmentTests.java | |
parent | 52dafe8c321663338ba458f7ad1a08c0c838f156 (diff) | |
download | latinime-bff393ce13554588d3906df4e5f464199acb23ae.tar.gz latinime-bff393ce13554588d3906df4e5f464199acb23ae.tar.xz latinime-bff393ce13554588d3906df4e5f464199acb23ae.zip |
Fix NPE in AccountSettingsFragment.
Bug 19773815.
Change-Id: Ib5eb27cdf385c81d1a3822836f424fa29c0bbaa8
Diffstat (limited to 'tests/src/com/android/inputmethod/latin/settings/AccountsSettingsFragmentTests.java')
-rw-r--r-- | tests/src/com/android/inputmethod/latin/settings/AccountsSettingsFragmentTests.java | 101 |
1 files changed, 62 insertions, 39 deletions
diff --git a/tests/src/com/android/inputmethod/latin/settings/AccountsSettingsFragmentTests.java b/tests/src/com/android/inputmethod/latin/settings/AccountsSettingsFragmentTests.java index 81a0f6934..0878e74cb 100644 --- a/tests/src/com/android/inputmethod/latin/settings/AccountsSettingsFragmentTests.java +++ b/tests/src/com/android/inputmethod/latin/settings/AccountsSettingsFragmentTests.java @@ -16,7 +16,12 @@ package com.android.inputmethod.latin.settings; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + import android.app.AlertDialog; +import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.test.ActivityInstrumentationTestCase2; @@ -24,6 +29,11 @@ import android.test.suitebuilder.annotation.MediumTest; import android.view.View; import android.widget.ListView; +import com.android.inputmethod.latin.utils.ManagedProfileUtils; + +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -33,6 +43,8 @@ public class AccountsSettingsFragmentTests private static final String FRAG_NAME = AccountsSettingsFragment.class.getName(); private static final long TEST_TIMEOUT_MILLIS = 5000; + @Mock private ManagedProfileUtils mManagedProfileUtils; + public AccountsSettingsFragmentTests() { super(TestFragmentActivity.class); } @@ -40,11 +52,22 @@ public class AccountsSettingsFragmentTests @Override protected void setUp() throws Exception { super.setUp(); + + // Initialize the mocks. + MockitoAnnotations.initMocks(this); + ManagedProfileUtils.setTestInstance(mManagedProfileUtils); + Intent intent = new Intent(); intent.putExtra(TestFragmentActivity.EXTRA_SHOW_FRAGMENT, FRAG_NAME); setActivityIntent(intent); } + @Override + public void tearDown() throws Exception { + ManagedProfileUtils.setTestInstance(null); + super.tearDown(); + } + public void testEmptyAccounts() { final AccountsSettingsFragment fragment = (AccountsSettingsFragment) getActivity().mFragment; @@ -61,36 +84,26 @@ public class AccountsSettingsFragmentTests DialogHolder() {} } - public void testMultipleAccounts_noCurrentAccount() { + public void testMultipleAccounts_noSettingsForManagedProfile() { + when(mManagedProfileUtils.hasManagedWorkProfile(any(Context.class))).thenReturn(true); + final AccountsSettingsFragment fragment = (AccountsSettingsFragment) getActivity().mFragment; - final DialogHolder dialogHolder = new DialogHolder(); - final CountDownLatch latch = new CountDownLatch(1); + final AlertDialog dialog = initDialog(fragment, null).mDialog; + final ListView lv = dialog.getListView(); - getActivity().runOnUiThread(new Runnable() { - @Override - public void run() { - final AlertDialog dialog = fragment.createAccountPicker( - new String[] { - "1@example.com", - "2@example.com", - "3@example.com", - "4@example.com"}, - null, null /* positiveButtonListner */); - dialog.show(); - dialogHolder.mDialog = dialog; - latch.countDown(); - } - }); + // Nothing to check/uncheck. + assertNull(fragment.findPreference(AccountsSettingsFragment.PREF_ACCCOUNT_SWITCHER)); + } - try { - latch.await(TEST_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); - } catch (InterruptedException ex) { - fail(); - } - getInstrumentation().waitForIdleSync(); - final AlertDialog dialog = dialogHolder.mDialog; + public void testMultipleAccounts_noCurrentAccount() { + when(mManagedProfileUtils.hasManagedWorkProfile(any(Context.class))).thenReturn(false); + + final AccountsSettingsFragment fragment = + (AccountsSettingsFragment) getActivity().mFragment; + final AlertDialog dialog = initDialog(fragment, null).mDialog; final ListView lv = dialog.getListView(); + // The 1st account should be checked by default. assertEquals("checked-item", 0, lv.getCheckedItemPosition()); // There should be 4 accounts in the list. @@ -105,10 +118,32 @@ public class AccountsSettingsFragmentTests } public void testMultipleAccounts_currentAccount() { + when(mManagedProfileUtils.hasManagedWorkProfile(any(Context.class))).thenReturn(false); + final AccountsSettingsFragment fragment = (AccountsSettingsFragment) getActivity().mFragment; + final AlertDialog dialog = initDialog(fragment, "3@example.com").mDialog; + final ListView lv = dialog.getListView(); + + // The 3rd account should be checked by default. + assertEquals("checked-item", 2, lv.getCheckedItemPosition()); + // There should be 4 accounts in the list. + assertEquals("count", 4, lv.getCount()); + // The sign-out button should be shown + assertEquals(View.VISIBLE, + dialog.getButton(DialogInterface.BUTTON_NEUTRAL).getVisibility()); + assertEquals(View.VISIBLE, + dialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()); + assertEquals(View.VISIBLE, + dialog.getButton(DialogInterface.BUTTON_POSITIVE).getVisibility()); + } + + private DialogHolder initDialog( + final AccountsSettingsFragment fragment, + final String selectedAccount) { final DialogHolder dialogHolder = new DialogHolder(); final CountDownLatch latch = new CountDownLatch(1); + getActivity().runOnUiThread(new Runnable() { @Override public void run() { @@ -118,7 +153,7 @@ public class AccountsSettingsFragmentTests "2@example.com", "3@example.com", "4@example.com"}, - "3@example.com", null /* positiveButtonListner */); + selectedAccount, null /* positiveButtonListner */); dialog.show(); dialogHolder.mDialog = dialog; latch.countDown(); @@ -131,18 +166,6 @@ public class AccountsSettingsFragmentTests fail(); } getInstrumentation().waitForIdleSync(); - final AlertDialog dialog = dialogHolder.mDialog; - final ListView lv = dialog.getListView(); - // The 3rd account should be checked by default. - assertEquals("checked-item", 2, lv.getCheckedItemPosition()); - // There should be 4 accounts in the list. - assertEquals("count", 4, lv.getCount()); - // The sign-out button should be shown - assertEquals(View.VISIBLE, - dialog.getButton(DialogInterface.BUTTON_NEUTRAL).getVisibility()); - assertEquals(View.VISIBLE, - dialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()); - assertEquals(View.VISIBLE, - dialog.getButton(DialogInterface.BUTTON_POSITIVE).getVisibility()); + return dialogHolder; } } |