/* * Copyright 2014, Simon Matić Langford * Copyright 2014, The Sporting Exchange Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.betfair.cougar.core.impl.exception; import com.betfair.cougar.api.fault.CougarApplicationException; import com.betfair.cougar.core.api.ev.ExecutionObserver; import com.betfair.cougar.core.api.ev.ExecutionResult; import com.betfair.cougar.core.api.exception.*; import com.betfair.cougar.core.api.exception.ServerFaultCode; import com.betfair.cougar.core.impl.ev.ServiceExceptionHandlingObserver; import com.betfair.cougar.test.MockException; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; /** * */ public class ServiceExceptionHandlingObserverTest { private ExecutionObserver mockObserver; private ArgumentCaptor<ExecutionResult> captor; private ServiceExceptionHandlingObserver observer; @Before public void before() { mockObserver = mock(ExecutionObserver.class); captor = ArgumentCaptor.forClass(ExecutionResult.class); observer = new ServiceExceptionHandlingObserver(mockObserver); } private ExecutionResult execute(ExecutionResult arg) { observer.onResult(arg); verify(mockObserver).onResult(captor.capture()); return captor.getValue(); } @Test public void successResult() { String text = "message"; ExecutionResult er = execute(new ExecutionResult(text)); assertEquals(ExecutionResult.ResultType.Success, er.getResultType()); assertEquals(text, er.getResult()); } @Test public void cougarException() { CougarException ce = new CougarFrameworkException("Wibble"); ExecutionResult er = execute(new ExecutionResult(ce)); assertEquals(ExecutionResult.ResultType.Fault, er.getResultType()); assertEquals(ce, er.getFault()); } @Test public void cougarClientException() { CougarException ce = new ClientException(ServerFaultCode.ServiceCheckedException,"message",new MockException()); ExecutionResult er = execute(new ExecutionResult(ce)); assertEquals(ExecutionResult.ResultType.Fault, er.getResultType()); assertTrue(er.getFault() instanceof CougarServiceException); assertEquals(ServerFaultCode.ServiceRuntimeException, er.getFault().getServerFaultCode()); assertEquals(ce, er.getFault().getCause()); } @Test public void serviceCheckedException() { CougarApplicationException cae = new MockException(); ExecutionResult er = execute(new ExecutionResult(cae)); assertEquals(ExecutionResult.ResultType.Fault, er.getResultType()); assertEquals(cae, er.getFault().getCause()); } private class ClientException extends CougarClientException { private ClientException(ServerFaultCode fault, String message, CougarApplicationException dae) { super(fault, message, dae); } } }