package com.truckmuncher.app.authentication;
import com.truckmuncher.testlib.ReadableRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.when;
@RunWith(ReadableRunner.class)
public class UserAccountTest {
@Mock
AuthTokenPreference authTokenPreference;
@Mock
UserIdPreference userIdPreference;
UserAccount userAccount;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
userAccount = new UserAccount(authTokenPreference, userIdPreference);
}
@Test
public void loginSetsAuthToken() {
ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
doNothing().when(authTokenPreference).set(captor.capture());
userAccount.login("AuthToken");
when(authTokenPreference.get()).thenReturn(captor.getValue());
assertThat(userAccount.getAuthToken()).isEqualTo("AuthToken");
}
@Test
public void userIdIsStored() {
ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
doNothing().when(userIdPreference).set(captor.capture());
userAccount.setUserId("UserId");
when(userIdPreference.get()).thenReturn(captor.getValue());
assertThat(userAccount.getUserId()).isEqualTo("UserId");
}
}