package br.com.citframework.util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; /** * Classe de testes para valida��o do comportamento de {@link UtilI18N} * * @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a> * @since 04/02/2015 * */ @RunWith(value = MockitoJUnitRunner.class) public class UtilI18NTest { @Mock private HttpServletRequest request; @Mock private HttpSession session; private static final String LOCALE = "locale"; private static final String PROPERTY_KEY = "citcorpore.comum.ano"; private static final String PROPERTY_NOTFOUND_KEY = "property.notfound.key"; private static final String EXPECTED_PROPERTY_VALUE_EN = "Year"; private static final String EXPECTED_PROPERTY_VALUE_ES = "A�o"; private static final String EXPECTED_PROPERTY_VALUE_PT = "Ano"; private static final String EXPECTED_PROPERTY_NOTFOUND_VALUE = "property.notfound.key"; private static final String UNKNOWN_SIGLA = "UK"; @Test public void testInternacionalizaLocaleStringEN() { final String value = UtilI18N.internacionaliza(UtilI18N.ENGLISH_SIGLA, PROPERTY_KEY); Assert.assertEquals(EXPECTED_PROPERTY_VALUE_EN, value); } @Test public void testInternacionalizaLocaleStringES() { final String value = UtilI18N.internacionaliza(UtilI18N.SPANISH_SIGLA, PROPERTY_KEY); Assert.assertEquals(EXPECTED_PROPERTY_VALUE_ES, value); } @Test public void testInternacionalizaLocaleStringPT() { final String value = UtilI18N.internacionaliza(UtilI18N.PORTUGUESE_SIGLA, PROPERTY_KEY); Assert.assertEquals(EXPECTED_PROPERTY_VALUE_PT, value); } @Test public void testInternacionalizaEmptyLocaleString() { final String value = UtilI18N.internacionaliza("", PROPERTY_KEY); Assert.assertEquals(EXPECTED_PROPERTY_VALUE_PT, value); } @Test public void testInternacionalizaUnknownLocaleString() { final String value = UtilI18N.internacionaliza(UNKNOWN_SIGLA, PROPERTY_KEY); Assert.assertEquals(PROPERTY_KEY, value); } @Test public void testInternacionalizaLocaleRequestEN() { Mockito.when(request.getSession(true)).thenReturn(session); Mockito.when(session.getAttribute(LOCALE)).thenReturn(UtilI18N.ENGLISH_SIGLA); final String value = UtilI18N.internacionaliza(request, PROPERTY_KEY); Assert.assertEquals(EXPECTED_PROPERTY_VALUE_EN, value); } @Test public void testInternacionalizaLocaleRequestES() { Mockito.when(request.getSession(true)).thenReturn(session); Mockito.when(session.getAttribute(LOCALE)).thenReturn(UtilI18N.SPANISH_SIGLA); final String value = UtilI18N.internacionaliza(request, PROPERTY_KEY); Assert.assertEquals(EXPECTED_PROPERTY_VALUE_ES, value); } @Test public void testInternacionalizaLocaleRequestPT() { Mockito.when(request.getSession(true)).thenReturn(session); Mockito.when(session.getAttribute(LOCALE)).thenReturn(UtilI18N.PORTUGUESE_SIGLA); final String value = UtilI18N.internacionaliza(request, PROPERTY_KEY); Assert.assertEquals(EXPECTED_PROPERTY_VALUE_PT, value); } @Test public void testInternacionalizaEmptyLocaleRequest() { Mockito.when(request.getSession(true)).thenReturn(session); Mockito.when(session.getAttribute(LOCALE)).thenReturn(""); final String value = UtilI18N.internacionaliza(request, PROPERTY_KEY); Assert.assertEquals(EXPECTED_PROPERTY_VALUE_PT, value); } @Test public void testInternacionalizaUnknownLocaleRequest() { Mockito.when(request.getSession(true)).thenReturn(session); Mockito.when(session.getAttribute(LOCALE)).thenReturn(UNKNOWN_SIGLA); final String value = UtilI18N.internacionaliza(request, PROPERTY_KEY); Assert.assertEquals(PROPERTY_KEY, value); } @Test public void testInternacionalizaNullLocaleRequest() { Mockito.when(request.getSession(true)).thenReturn(session); final String value = UtilI18N.internacionaliza(request, PROPERTY_KEY); Assert.assertEquals(EXPECTED_PROPERTY_VALUE_PT, value); } @Test public void testInternacionalizaNotFoundKey() { final String value = UtilI18N.internacionaliza(UtilI18N.PORTUGUESE_SIGLA, PROPERTY_NOTFOUND_KEY); Assert.assertEquals(EXPECTED_PROPERTY_NOTFOUND_VALUE, value); } @Test public void testInternacionalizaWithParams() { final String expected = "1 is not a valid value for latitude."; final String value = UtilI18N.internacionaliza(UtilI18N.ENGLISH_SIGLA, "geographic.latitude.invalid", 1); Assert.assertEquals(expected, value); } @Test public void testInternacionalizaNotFoundKeyWithParams() { final String value = UtilI18N.internacionaliza(UtilI18N.ENGLISH_SIGLA, PROPERTY_NOTFOUND_KEY, 1); Assert.assertEquals(EXPECTED_PROPERTY_NOTFOUND_VALUE, value); } @Test(expected = IllegalArgumentException.class) public void testInternacionalizLocaleStringKeyIsNull() { UtilI18N.internacionaliza(UtilI18N.PORTUGUESE_SIGLA, null); } @Test(expected = IllegalArgumentException.class) public void testInternacionalizLocaleRequestKeyIsNull() { Mockito.when(request.getSession(true)).thenReturn(session); Mockito.when(session.getAttribute(LOCALE)).thenReturn(UtilI18N.SPANISH_SIGLA); UtilI18N.internacionaliza(request, null); } }