package org.ovirt.engine.core.utils.servlet;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.ovirt.engine.core.utils.MockConfigRule.mockConfig;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
import org.ovirt.engine.core.common.config.ConfigValues;
import org.ovirt.engine.core.utils.MockConfigRule;
@RunWith(MockitoJUnitRunner.class)
public class UnsupportedLocaleHelperTest {
static final List<String> unvalidatedUnsupportedLocales = new ArrayList<>();
@ClassRule
public static MockConfigRule mcr =
new MockConfigRule(mockConfig(ConfigValues.UnsupportedLocalesFilterOverrides, unvalidatedUnsupportedLocales));
List<String> allLocales;
@Before
public void setUp() throws Exception {
allLocales = getAllLocales();
unvalidatedUnsupportedLocales.clear();
}
@Test
public void testGetDisplayLocales() {
List<String> displayLocales = new ArrayList<>();
List<String> locales = UnsupportedLocaleHelper.getDisplayedLocales(allLocales, displayLocales, new ArrayList<>());
assertNotNull("Result should not be null", locales);
assertEquals("There should be 8 locales", 8, locales.size());
}
@Test
public void testGetDisplayLocalesUnsupported() {
List<String> displayLocales = new ArrayList<>();
List<String> unSupportedLocales = new ArrayList<>();
unSupportedLocales.add("pt_BR");
List<String> locales = UnsupportedLocaleHelper.getDisplayedLocales(allLocales, displayLocales, unSupportedLocales);
assertNotNull("Result should not be null", locales);
assertEquals("There should be 7 locales", 7, locales.size());
assertFalse("Locales should not contain 'pt_BR'", locales.contains("pt_BR"));
}
@Test
public void testGetDisplayLocalesWithUnsupportedHiding2() {
List<String> unSupportedLocales = new ArrayList<>();
unSupportedLocales.add("de_DE");
List<String> locales = UnsupportedLocaleHelper.getDisplayedLocales(allLocales, new ArrayList<>(), unSupportedLocales);
assertNotNull("Result should not be null", locales);
assertEquals("There should be 7 locales", 7, locales.size());
assertFalse("Locales should not contain 'de_DE'", locales.contains("de_DE"));
}
@Test
public void testGetDisplayLocalesWithUnsupportedShowing() {
List<String> unSupportedLocales = new ArrayList<>();
unSupportedLocales.add("de_DE");
List<String> displayUnsupported = new ArrayList<>();
displayUnsupported.add("de_DE");
List<String> locales = UnsupportedLocaleHelper.getDisplayedLocales(allLocales, displayUnsupported,
unSupportedLocales);
assertNotNull("Result should not be null", locales);
assertEquals("There should be 8 locales", 8, locales.size());
assertTrue("Locales should contain 'de_DE'", locales.contains("de_DE"));
}
@Test
public void testGetLocalesKeysUnSupported() {
unvalidatedUnsupportedLocales.add("ko_KR");
List<String> locales = UnsupportedLocaleHelper.getLocalesKeys(ConfigValues.UnsupportedLocalesFilterOverrides);
assertNotNull("Result should not be null", locales);
assertEquals("There should be 1 locales", 1, locales.size());
assertEquals("Locale should be ko_KR", "ko_KR", locales.get(0));
}
@Test
public void testGetLocalesKeysWithInvalid() {
unvalidatedUnsupportedLocales.add("ko_KR");
unvalidatedUnsupportedLocales.add("abcdds");
List<String> locales = UnsupportedLocaleHelper.getLocalesKeys(ConfigValues.UnsupportedLocalesFilterOverrides);
assertNotNull("Result should not be null", locales);
assertEquals("There should be 1 locales", 1, locales.size());
assertEquals("Locale should be ko_KR", "ko_KR", locales.get(0));
}
@Test
public void testGetLocalesKeysDisplayLocalesEmpty() {
List<String> locales = UnsupportedLocaleHelper.getLocalesKeys(ConfigValues.UnsupportedLocalesFilterOverrides);
assertNotNull("Result should not be null", locales);
assertEquals("There should be 0 locales", 0, locales.size());
}
private List<String> getAllLocales() {
List<String> result = new ArrayList<>();
result.add("de_DE");
result.add("en_US");
result.add("fr_FR");
result.add("es_ES");
result.add("ja_JP");
result.add("ko_KR");
result.add("pt_BR");
result.add("zh_CN");
return result;
}
}