package ch.alv.components.web.i18n; import ch.alv.components.core.enums.Language; import ch.alv.components.data.model.TextConstant; import ch.alv.components.web.context.ServletRequestProvider; import ch.alv.components.web.dto.TranslatedText; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.assertEquals; /** * Test cases for the {@link ch.alv.components.web.endpoint.SpringBeansEndpointProvider} class. * * @since 1.0.0 */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:spring/i18n-factories-tests.xml") public class RequestAwareTranslatedTextFactoryTest { @Rule public ExpectedException exception = ExpectedException.none(); @Resource private ServletRequestProvider requestProvider; @Resource private RequestAwareTranslatedTextFactory factory; @Test public void testList() { ((MockHttpServletRequest) requestProvider.getRequest()).removeParameter("language"); List<Object> list = new ArrayList<>(); TextConstant constantDe = new TextConstant(); constantDe.setText("testInGerman"); constantDe.setLanguage(Language.GERMAN); TextConstant constantFr = new TextConstant(); constantFr.setText("testInFrench"); constantFr.setLanguage(Language.FRENCH); TextConstant constantIt = new TextConstant(); constantIt.setText("testInItalian"); constantIt.setLanguage(Language.ITALIAN); list.add("nonTextConstantEntry"); list.add(constantFr); list.add(constantDe); list.add(constantIt); TranslatedText text = (TranslatedText) factory.createBean(list, null, null); assertEquals("testInGerman", text.getText()); } @Test public void testListWithLanguage() { ((MockHttpServletRequest) requestProvider.getRequest()).addParameter("language", "fr"); List<Object> list = new ArrayList<>(); TextConstant constantDe = new TextConstant(); constantDe.setText("testInGerman"); constantDe.setLanguage(Language.GERMAN); TextConstant constantFr = new TextConstant(); constantFr.setText("testInFrench"); constantFr.setLanguage(Language.FRENCH); list.add(constantDe); list.add(constantFr); list.add("nonTextConstantEntry"); TranslatedText text = (TranslatedText) factory.createBean(list, null, null); assertEquals("testInFrench", text.getText()); } @Test public void testNotList() { TranslatedText text = (TranslatedText) factory.createBean("test", null, null); assertEquals("", text.getText()); } @Test public void testEmptyList() { TranslatedText text = (TranslatedText) factory.createBean(new ArrayList<>(), null, null); assertEquals("", text.getText()); } }