### Question:
ParseUser extends ParseObject { static Task<Void> pinCurrentUserIfNeededAsync(ParseUser user) { if (!Parse.isLocalDatastoreEnabled()) { throw new IllegalStateException("Method requires Local Datastore. " + "Please refer to `Parse#enableLocalDatastore(Context)`."); } return getCurrentUserController().setIfNeededAsync(user); } ParseUser(); static ParseQuery<ParseUser> getQuery(); boolean isAuthenticated(); @Override void remove(String key); String getSessionToken(); void setUsername(String username); String getUsername(); void setPassword(String password); void setEmail(String email); String getEmail(); boolean isNew(); @Override void put(String key, Object value); @SuppressWarnings("unchecked") @Override ParseUser fetch(); Task<Void> signUpInBackground(); void signUp(); void signUpInBackground(SignUpCallback callback); static Task<ParseUser> logInInBackground(String username, String password); static ParseUser logIn(String username, String password); static void logInInBackground(final String username, final String password,
      LogInCallback callback); static Task<ParseUser> becomeInBackground(String sessionToken); static ParseUser become(String sessionToken); static void becomeInBackground(final String sessionToken, LogInCallback callback); static ParseUser getCurrentUser(); static Task<Void> logOutInBackground(); static void logOutInBackground(LogOutCallback callback); static void logOut(); static Task<Void> requestPasswordResetInBackground(String email); static void requestPasswordReset(String email); static void requestPasswordResetInBackground(final String email,
      RequestPasswordResetCallback callback); @SuppressWarnings("unchecked") @Override ParseUser fetchIfNeeded(); static void registerAuthenticationCallback(
      String authType, AuthenticationCallback callback); static Task<ParseUser> logInWithInBackground(
      final String authType, final Map<String, String> authData); boolean isLinked(String authType); Task<Void> linkWithInBackground(
      String authType, Map<String, String> authData); Task<Void> unlinkFromInBackground(final String authType); static void enableAutomaticUser(); static Task<Void> enableRevocableSessionInBackground();  }### Answer:
@Test public void testPinCurrentUserIfNeededAsyncWithNoLDSEnabled() throws Exception { thrown.expect(IllegalStateException.class); thrown.expectMessage("Method requires Local Datastore."); ParseUser.pinCurrentUserIfNeededAsync(new ParseUser()); }
@Test public void testPinCurrentUserIfNeededAsync() throws Exception { Parse.enableLocalDatastore(null); ParseUser currentUser = new ParseUser(); currentUser.setObjectId("test"); CachedCurrentUserController currentUserController = mock(CachedCurrentUserController.class); when(currentUserController.setIfNeededAsync(any(ParseUser.class))) .thenReturn(Task.<Void>forResult(null)); ParseCorePlugins.getInstance().registerCurrentUserController(currentUserController); ParseUser user = new ParseUser(); ParseUser.pinCurrentUserIfNeededAsync(user); verify(currentUserController, times(1)).setIfNeededAsync(user); }