@Test public void getPresentationLocales_shouldReturnLanguageLocaleIfItIsSpecifiedInAllowedListAndThereAreNoCountryLocaleMessageFilesAvailable() { adminService.saveGlobalProperty( new GlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_LOCALE_ALLOWED_LIST, "en_GB, es")); List<Locale> locales = new ArrayList<>(); locales.add(new Locale("pl", "PL")); locales.add(new Locale("en")); locales.add(new Locale("es")); MutableResourceBundleMessageSource mutableResourceBundleMessageSource = Mockito .mock(MutableResourceBundleMessageSource.class); Mockito.when(mutableResourceBundleMessageSource.getLocales()).thenReturn(locales); MutableMessageSource mutableMessageSource = Context.getMessageSourceService().getActiveMessageSource(); Context.getMessageSourceService().setActiveMessageSource(mutableResourceBundleMessageSource); Set<Locale> presentationLocales = adminService.getPresentationLocales(); Context.getMessageSourceService().setActiveMessageSource(mutableMessageSource); assertEquals(2, presentationLocales.size()); assertTrue("en", presentationLocales.contains(new Locale("en"))); assertTrue("es", presentationLocales.contains(new Locale("es"))); }
@Test public void getPresentationLocales_shouldReturnAllCountryLocalesIfLanguageLocaleAndNoCountryLocalesAreSpecifiedInAllowedList() { adminService.saveGlobalProperty( new GlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_LOCALE_ALLOWED_LIST, "en_GB, es")); List<Locale> locales = new ArrayList<>(); locales.add(new Locale("pl", "PL")); locales.add(new Locale("en")); locales.add(new Locale("es")); locales.add(new Locale("es", "CL")); locales.add(new Locale("es", "SN")); MutableResourceBundleMessageSource mutableResourceBundleMessageSource = Mockito .mock(MutableResourceBundleMessageSource.class); Mockito.when(mutableResourceBundleMessageSource.getLocales()).thenReturn(locales); MutableMessageSource mutableMessageSource = Context.getMessageSourceService().getActiveMessageSource(); Context.getMessageSourceService().setActiveMessageSource(mutableResourceBundleMessageSource); Set<Locale> presentationLocales = adminService.getPresentationLocales(); Context.getMessageSourceService().setActiveMessageSource(mutableMessageSource); assertEquals(3, presentationLocales.size()); assertTrue("es_CL", presentationLocales.contains(new Locale("es", "CL"))); assertTrue("es_SN", presentationLocales.contains(new Locale("es", "SN"))); assertTrue("en", presentationLocales.contains(new Locale("en"))); }
@Test public void getPresentationLocales_shouldReturnOnlyCountryLocaleIfBothCountryLocaleAndLanguageLocaleAreSpecifiedInAllowedList() { adminService.saveGlobalProperty( new GlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_LOCALE_ALLOWED_LIST, "en_GB, es, es_CL")); List<Locale> locales = new ArrayList<>(); locales.add(new Locale("pl", "PL")); locales.add(new Locale("en")); locales.add(new Locale("es")); locales.add(new Locale("es", "CL")); MutableResourceBundleMessageSource mutableResourceBundleMessageSource = Mockito .mock(MutableResourceBundleMessageSource.class); Mockito.when(mutableResourceBundleMessageSource.getLocales()).thenReturn(locales); MutableMessageSource mutableMessageSource = Context.getMessageSourceService().getActiveMessageSource(); Context.getMessageSourceService().setActiveMessageSource(mutableResourceBundleMessageSource); Set<Locale> presentationLocales = adminService.getPresentationLocales(); Context.getMessageSourceService().setActiveMessageSource(mutableMessageSource); assertEquals(2, presentationLocales.size()); assertTrue("en", presentationLocales.contains(new Locale("en"))); assertTrue("es_CL", presentationLocales.contains(new Locale("es", "CL"))); }
@Test public void getPresentationLocales_shouldReturnLanguageLocaleIfCountryLocaleIsSpecifiedInAllowedListButCountryLocaleMessageFileIsMissing() { adminService.saveGlobalProperty( new GlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_LOCALE_ALLOWED_LIST, "en_GB, es_CL")); List<Locale> locales = new ArrayList<>(); locales.add(new Locale("pl", "PL")); locales.add(new Locale("en")); locales.add(new Locale("es")); MutableResourceBundleMessageSource mutableResourceBundleMessageSource = Mockito .mock(MutableResourceBundleMessageSource.class); Mockito.when(mutableResourceBundleMessageSource.getLocales()).thenReturn(locales); MutableMessageSource mutableMessageSource = Context.getMessageSourceService().getActiveMessageSource(); Context.getMessageSourceService().setActiveMessageSource(mutableResourceBundleMessageSource); Set<Locale> presentationLocales = adminService.getPresentationLocales(); Context.getMessageSourceService().setActiveMessageSource(mutableMessageSource); assertEquals(2, presentationLocales.size()); assertTrue("en", presentationLocales.contains(new Locale("en"))); assertTrue("es", presentationLocales.contains(new Locale("es"))); }
Mockito.when(mutableResourceBundleMessageSource.getLocales()).thenReturn(locales); MutableMessageSource mutableMessageSource = Context.getMessageSourceService().getActiveMessageSource(); Context.getMessageSourceService().setActiveMessageSource(mutableResourceBundleMessageSource);