package restx.exceptions; import org.joda.time.DateTime; import org.joda.time.DateTimeUtils; import org.junit.Test; import restx.CoreModule; import restx.common.ThreadLocalMillisProvider; import restx.common.UUIDGenerator; import restx.factory.Factory; import java.util.Arrays; import static org.assertj.core.api.Assertions.*; import static restx.common.UUIDGenerator.PlaybackUUIDGenerator.playbackUUIDs; /** * User: xavierhanin * Date: 3/19/13 * Time: 3:04 PM */ public class RestxErrorTest { @ErrorCode(code = "999", description = "My error occurs only during tests") private static enum MyError { @ErrorField("my field") MY_FIELD; } @Test public void should_provide_error_message() throws Exception { ThreadLocalMillisProvider.setCurrentMillisFixed(DateTime.parse("2013-03-19T12:00:00Z").getMillis()); try { RestxErrors errors = new RestxErrors(playbackUUIDs("123456")); RestxError.RestxException restxException = errors.on(MyError.class).set(MyError.MY_FIELD, "my value").raise(); assertThat(restxException).isNotNull(); assertThat(restxException.getMessage()).isNotNull().isEqualTo( "[2013-03-19T12:00:00.000Z] [123456] [400~999] My error occurs only during tests - {MY_FIELD=my value}"); } finally { ThreadLocalMillisProvider.setCurrentMillisSystem(); } } }