package com.constellio.app.ui.pages.login;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.services.records.RecordServices;
import com.constellio.model.services.records.RecordServicesException;
import com.constellio.sdk.tests.ConstellioTest;
import com.constellio.sdk.tests.FakeSessionContext;
import com.constellio.sdk.tests.setups.Users;
import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
import java.util.Locale;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
public class LoginPresenter_frAcceptanceTest extends ConstellioTest {
Users users = new Users();
LoginPresenter loginPresenter;
RecordServices recordServices;
@Before
public void setUp()
throws Exception {
givenSystemLanguageIs("fr");
//TODO Francis
givenCollection(zeCollection , Arrays.asList("en", "fr")).withConstellioRMModule().withAllTestUsers();
givenCollection(businessCollection , Arrays.asList("fr")).withConstellioRMModule().withAllTestUsers();
LoginView view = mock(LoginView.class);
doReturn(zeCollection).when(view).getCollection();
doReturn(FakeSessionContext.adminInCollection(zeCollection)).when(view).getSessionContext();
loginPresenter = new LoginPresenter(view);
users.setUp(getModelLayerFactory().newUserServices());
recordServices = getModelLayerFactory().newRecordServices();
}
//GetSessionLanguage
@Test
public void whenGetSessionLanguageThenOk()
throws Exception {
givenUserPreferredLanguageIsEnWhenGetSessionLanguageThenOk();
givenUserWithoutPreferredLanguageWhenGetSessionLanguageThenOk();
givenUserPreferredLanguageIsFrWhenGetSessionLanguageThenOk();
}
private void givenUserPreferredLanguageIsFrWhenGetSessionLanguageThenOk() throws RecordServicesException {
User adminInZeCollection = users.adminIn(zeCollection);
recordServices.add(adminInZeCollection.setLoginLanguageCode("fr"));
User adminInBusiness = users.adminIn(businessCollection);
recordServices.add(adminInBusiness.setLoginLanguageCode("fr"));
assertThat(loginPresenter.getSessionLanguage(adminInZeCollection)).isEqualTo(new Locale("fr"));
assertThat(loginPresenter.getSessionLanguage(adminInBusiness)).isEqualTo(new Locale("fr"));
}
private void givenUserWithoutPreferredLanguageWhenGetSessionLanguageThenOk() throws RecordServicesException {
User adminInZeCollection = users.adminIn(zeCollection);
recordServices.add(adminInZeCollection.setLoginLanguageCode(null));
User adminInBusiness = users.adminIn(businessCollection);
recordServices.add(adminInBusiness.setLoginLanguageCode(null));
assertThat(loginPresenter.getSessionLanguage(adminInZeCollection)).isEqualTo(new Locale("fr"));
assertThat(loginPresenter.getSessionLanguage(adminInBusiness)).isEqualTo(new Locale("fr"));
}
private void givenUserPreferredLanguageIsEnWhenGetSessionLanguageThenOk() throws RecordServicesException {
User adminInZeCollection = users.adminIn(zeCollection);
recordServices.add(adminInZeCollection.setLoginLanguageCode("en"));
User adminInBusiness = users.adminIn(businessCollection);
recordServices.add(adminInBusiness.setLoginLanguageCode("en"));
assertThat(loginPresenter.getSessionLanguage(adminInZeCollection)).isEqualTo(new Locale("en"));
assertThat(loginPresenter.getSessionLanguage(adminInBusiness)).isEqualTo(new Locale("fr"));
}
}