From 9ae5296a33d4d5bd809bbbb65bac07a8b1a48cfa Mon Sep 17 00:00:00 2001 From: Flavio Mattos Date: Mon, 13 May 2019 16:35:28 -0700 Subject: [PATCH] Revert "HW-52030 Added User Repository (#2)" This reverts commit ad2376e6b7e7212d74855b1d91f5c15d3d0bf5c2. --- .../ui/repository/RepositoryFactory.java | 6 - .../android/ui/repository/UserRepository.java | 58 ----- .../ui/repository/UserRepositoryImpl.java | 71 ------- .../ui/repository/UserRepositoryImplTest.java | 200 ------------------ 4 files changed, 335 deletions(-) delete mode 100644 ui/src/main/java/com/hyperwallet/android/ui/repository/UserRepository.java delete mode 100644 ui/src/main/java/com/hyperwallet/android/ui/repository/UserRepositoryImpl.java delete mode 100644 ui/src/test/java/com/hyperwallet/android/ui/repository/UserRepositoryImplTest.java diff --git a/ui/src/main/java/com/hyperwallet/android/ui/repository/RepositoryFactory.java b/ui/src/main/java/com/hyperwallet/android/ui/repository/RepositoryFactory.java index ec2a3a935..ee5b44ea3 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/repository/RepositoryFactory.java +++ b/ui/src/main/java/com/hyperwallet/android/ui/repository/RepositoryFactory.java @@ -31,12 +31,10 @@ public class RepositoryFactory { private static RepositoryFactory sInstance; private TransferMethodConfigurationRepository mTransferMethodConfigurationRepository; private TransferMethodRepository mTransferMethodRepository; - private UserRepository mUserRepository; private RepositoryFactory() { mTransferMethodConfigurationRepository = new TransferMethodConfigurationRepositoryImpl(); mTransferMethodRepository = new TransferMethodRepositoryImpl(); - mUserRepository = new UserRepositoryImpl(); } public static synchronized RepositoryFactory getInstance() { @@ -54,10 +52,6 @@ public TransferMethodRepository getTransferMethodRepository() { return mTransferMethodRepository; } - public UserRepository getUserRepository() { - return mUserRepository; - } - public static void clearInstance() { sInstance = null; } diff --git a/ui/src/main/java/com/hyperwallet/android/ui/repository/UserRepository.java b/ui/src/main/java/com/hyperwallet/android/ui/repository/UserRepository.java deleted file mode 100644 index 8ee119fa8..000000000 --- a/ui/src/main/java/com/hyperwallet/android/ui/repository/UserRepository.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2018 Hyperwallet - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated - * documentation files (the "Software"), to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and - * to permit persons to whom the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies or substantial portions of - * the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO - * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.hyperwallet.android.ui.repository; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.hyperwallet.android.model.HyperwalletErrors; -import com.hyperwallet.android.model.HyperwalletUser; - -/** - * User Repository Contract - */ -public interface UserRepository { - /** - * Load user information - * - * @param callback @see {@link UserRepository.LoadUserCallback} - */ - void loadUser(@NonNull final LoadUserCallback callback); - - /** - * Set user to null - */ - void refreshUser(); - - /** - * Callback interface that responses to action when invoked to - * Load User information - *

- * When User is properly loaded - * {@link UserRepository.LoadUserCallback#onUserLoaded(HyperwalletUser)} - * is invoked otherwise {@link UserRepository.LoadUserCallback#onError(HyperwalletErrors)} - * is called to further log or show error information - */ - interface LoadUserCallback { - - void onUserLoaded(@Nullable final HyperwalletUser user); - - void onError(@NonNull final HyperwalletErrors errors); - } -} diff --git a/ui/src/main/java/com/hyperwallet/android/ui/repository/UserRepositoryImpl.java b/ui/src/main/java/com/hyperwallet/android/ui/repository/UserRepositoryImpl.java deleted file mode 100644 index 561d4cf85..000000000 --- a/ui/src/main/java/com/hyperwallet/android/ui/repository/UserRepositoryImpl.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2018 Hyperwallet - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated - * documentation files (the "Software"), to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and - * to permit persons to whom the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies or substantial portions of - * the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO - * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.hyperwallet.android.ui.repository; - -import android.os.Handler; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.VisibleForTesting; - -import com.hyperwallet.android.Hyperwallet; -import com.hyperwallet.android.exception.HyperwalletException; -import com.hyperwallet.android.listener.HyperwalletListener; -import com.hyperwallet.android.model.HyperwalletUser; - -public class UserRepositoryImpl implements UserRepository { - - private Handler mHandler = new Handler(); - private HyperwalletUser mUser; - - @VisibleForTesting - Hyperwallet getHyperwallet() { - return Hyperwallet.getDefault(); - } - - @Override - public void loadUser(@NonNull final LoadUserCallback callback) { - if (mUser == null) { - getHyperwallet().getUser(new HyperwalletListener() { - @Override - public void onSuccess(@Nullable HyperwalletUser result) { - mUser = result; - callback.onUserLoaded(mUser); - } - - @Override - public void onFailure(HyperwalletException exception) { - callback.onError(exception.getHyperwalletErrors()); - } - - @Override - public Handler getHandler() { - return mHandler; - } - }); - } else { - callback.onUserLoaded(mUser); - } - } - - @Override - public void refreshUser() { - mUser = null; - } -} diff --git a/ui/src/test/java/com/hyperwallet/android/ui/repository/UserRepositoryImplTest.java b/ui/src/test/java/com/hyperwallet/android/ui/repository/UserRepositoryImplTest.java deleted file mode 100644 index 5d97211f8..000000000 --- a/ui/src/test/java/com/hyperwallet/android/ui/repository/UserRepositoryImplTest.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.hyperwallet.android.ui.repository; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasItem; -import static org.hamcrest.Matchers.nullValue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - -import static com.hyperwallet.android.model.HyperwalletUser.ProfileTypes.INDIVIDUAL; -import static com.hyperwallet.android.model.HyperwalletUser.UserStatuses.PRE_ACTIVATED; -import static com.hyperwallet.android.model.HyperwalletUser.VerificationStatuses.NOT_REQUIRED; - -import com.hyperwallet.android.Hyperwallet; -import com.hyperwallet.android.exception.HyperwalletException; -import com.hyperwallet.android.listener.HyperwalletListener; -import com.hyperwallet.android.model.HyperwalletError; -import com.hyperwallet.android.model.HyperwalletErrors; -import com.hyperwallet.android.model.HyperwalletUser; - -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.ArgumentCaptor; -import org.mockito.ArgumentMatchers; -import org.mockito.Captor; -import org.mockito.Mock; -import org.mockito.Spy; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.junit.MockitoJUnit; -import org.mockito.junit.MockitoRule; -import org.mockito.stubbing.Answer; -import org.robolectric.RobolectricTestRunner; - -import java.util.ArrayList; -import java.util.List; - -@RunWith(RobolectricTestRunner.class) -public class UserRepositoryImplTest { - @Mock - private Hyperwallet mHyperwallet; - @Captor - private ArgumentCaptor mErrorCaptor; - @Captor - private ArgumentCaptor mUserCaptor; - @Rule - public MockitoRule mMockito = MockitoJUnit.rule(); - @Spy - UserRepositoryImpl mUserRepository; - - @Before - public void setup() { - doReturn(mHyperwallet).when(mUserRepository).getHyperwallet(); - } - - @Test - public void testLoadUser_returnsUser() { - HyperwalletUser.Builder builder = new HyperwalletUser.Builder(); - final HyperwalletUser user = builder - .token("usr-f9154016-94e8-4686-a840-075688ac07b5") - .status(PRE_ACTIVATED) - .verificationStatus(NOT_REQUIRED) - .createdOn("2017-10-30T22:15:45") - .clientUserId("123456") - .profileType(INDIVIDUAL) - .firstName("Some") - .lastName("Guy") - .dateOfBirth("1991-01-01") - .email("testUser@hyperwallet.com") - .addressLine1("575 Market Street") - .city("San Francisco") - .stateProvince("CA") - .country("US") - .postalCode("94105") - .language("en") - .programToken("prg-83836cdf-2ce2-4696-8bc5-f1b86077238c") - .build(); - - doAnswer(new Answer() { - @Override - public Object answer(InvocationOnMock invocation) { - HyperwalletListener listener = (HyperwalletListener) invocation.getArguments()[0]; - listener.onSuccess(user); - return listener; - } - }).when(mHyperwallet).getUser(ArgumentMatchers.>any()); - UserRepository.LoadUserCallback mockCallback = mock(UserRepository.LoadUserCallback.class); - - mUserRepository.loadUser(mockCallback); - - verify(mockCallback).onUserLoaded(mUserCaptor.capture()); - verify(mockCallback, never()).onError(any(HyperwalletErrors.class)); - - HyperwalletUser resultUser = mUserCaptor.getValue(); - assertThat(resultUser.getToken(), is("usr-f9154016-94e8-4686-a840-075688ac07b5")); - assertThat(resultUser.getStatus(), is(PRE_ACTIVATED)); - assertThat(resultUser.getVerificationStatus(), is(NOT_REQUIRED)); - assertThat(resultUser.getCreatedOn(), is("2017-10-30T22:15:45")); - assertThat(resultUser.getClientUserId(), is("123456")); - assertThat(resultUser.getProfileType(), is(INDIVIDUAL)); - assertThat(resultUser.getFirstName(), is("Some")); - assertThat(resultUser.getLastName(), is("Guy")); - assertThat(resultUser.getDateOfBirth(), is("1991-01-01")); - assertThat(resultUser.getEmail(), is("testUser@hyperwallet.com")); - assertThat(resultUser.getAddressLine1(), is("575 Market Street")); - assertThat(resultUser.getCity(), is("San Francisco")); - assertThat(resultUser.getStateProvince(), is("CA")); - assertThat(resultUser.getCountry(), is("US")); - assertThat(resultUser.getPostalCode(), is("94105")); - assertThat(resultUser.getLanguage(), is("en")); - assertThat(resultUser.getProgramToken(), is("prg-83836cdf-2ce2-4696-8bc5-f1b86077238c")); - } - - @Test - public void testLoadUser_returnsNoUser() { - - doAnswer(new Answer() { - @Override - public Object answer(InvocationOnMock invocation) { - HyperwalletListener listener = (HyperwalletListener) invocation.getArguments()[0]; - listener.onSuccess(null); - return listener; - } - }).when(mHyperwallet).getUser(ArgumentMatchers.>any()); - UserRepository.LoadUserCallback mockCallback = mock(UserRepository.LoadUserCallback.class); - - mUserRepository.loadUser(mockCallback); - - verify(mockCallback).onUserLoaded(mUserCaptor.capture()); - verify(mockCallback, never()).onError(any(HyperwalletErrors.class)); - - HyperwalletUser user = mUserCaptor.getValue(); - assertThat(user, is(nullValue())); - } - - - @Test - public void testLoadUser_withError() { - - final HyperwalletError error = new HyperwalletError("test message", "TEST_CODE"); - - doAnswer(new Answer() { - @Override - public Object answer(InvocationOnMock invocation) { - HyperwalletListener listener = (HyperwalletListener) invocation.getArguments()[0]; - List errorList = new ArrayList<>(); - errorList.add(error); - HyperwalletErrors errors = new HyperwalletErrors(errorList); - listener.onFailure(new HyperwalletException(errors)); - return listener; - } - }).when(mHyperwallet).getUser(ArgumentMatchers.>any()); - UserRepository.LoadUserCallback mockCallback = mock( - UserRepository.LoadUserCallback.class); - - mUserRepository.loadUser(mockCallback); - - verify(mockCallback, never()).onUserLoaded(ArgumentMatchers.any()); - verify(mockCallback).onError(mErrorCaptor.capture()); - - assertThat(mErrorCaptor.getValue().getErrors(), hasItem(error)); - } - - @Test - public void testRefreshUser_verifyHyperwalletCallGetUser() { - HyperwalletUser.Builder builder = new HyperwalletUser.Builder(); - final HyperwalletUser user = builder - .token("usr-f9154016-94e8-4686-a840-075688ac07b5") - .profileType(INDIVIDUAL) - .build(); - - doAnswer(new Answer() { - @Override - public Object answer(InvocationOnMock invocation) { - HyperwalletListener listener = (HyperwalletListener) invocation.getArguments()[0]; - listener.onSuccess(user); - return listener; - } - }).when(mHyperwallet).getUser(ArgumentMatchers.>any()); - UserRepository.LoadUserCallback mockCallback = mock(UserRepository.LoadUserCallback.class); - - mUserRepository.loadUser(mockCallback); - - verify(mHyperwallet).getUser(ArgumentMatchers.>any()); - - mUserRepository.loadUser(mockCallback); - verify(mHyperwallet).getUser(ArgumentMatchers.>any()); - - mUserRepository.refreshUser(); - mUserRepository.loadUser(mockCallback); - verify(mHyperwallet, times(2)).getUser(ArgumentMatchers.>any()); - - } -}