package br.com.caelum.stella; import static org.junit.Assert.assertEquals; import java.text.MessageFormat; import java.util.Enumeration; import java.util.Locale; import java.util.MissingResourceException; import java.util.ResourceBundle; import org.junit.Test; import br.com.caelum.stella.validation.InvalidValue; /** * @author Fabio Kung */ public class ResourceBundleMessageProducerTest { enum Errors implements InvalidValue { ANY, OTHER, WITH_COMPOSITE_NAME; } @Test public void shouldUseEnumNameLowerCasedAsKey() { final String errorMessage = "message for ANY error"; ResourceBundle bundleMock = new ResourceBundle() { protected Object handleGetObject(final String s) { String errorKey = (MessageFormat.format("{0}.{1}", Errors.class.getSimpleName(), Errors.WITH_COMPOSITE_NAME.name())).toLowerCase(); if (s.equals(errorKey)) { return errorMessage; } return null; } public Enumeration<String> getKeys() { return null; } public Locale getLocale() { return Locale.getDefault(); } }; ResourceBundleMessageProducer producer = new ResourceBundleMessageProducer(bundleMock); ValidationMessage validationMessage = producer.getMessage(Errors.WITH_COMPOSITE_NAME); assertEquals(errorMessage, validationMessage.getMessage()); } @Test public void shouldReturnMessageWhenKeyIsMissingInResourceBundle() { ResourceBundle bundleMock = new ResourceBundle() { protected Object handleGetObject(String s) { throw new MissingResourceException(null, null, null); } public Enumeration<String> getKeys() { return null; } public Locale getLocale() { return Locale.getDefault(); } }; ResourceBundleMessageProducer producer = new ResourceBundleMessageProducer(bundleMock); ValidationMessage validationMessage = producer.getMessage(Errors.WITH_COMPOSITE_NAME); assertEquals("errors : with composite name", validationMessage.getMessage()); } }