1 package com.atlassian.plugins.rest.common.transaction;
2
3 import com.atlassian.plugins.rest.common.interceptor.MethodInvocation;
4 import com.atlassian.sal.api.transaction.TransactionCallback;
5 import com.atlassian.sal.api.transaction.TransactionTemplate;
6 import org.junit.Before;
7 import org.junit.Test;
8
9 import java.lang.reflect.InvocationTargetException;
10
11 import static org.mockito.Mockito.doThrow;
12 import static org.mockito.Mockito.mock;
13 import static org.mockito.Mockito.verify;
14
15 public class TransactionInterceptorTest
16 {
17 private TransactionTemplate transactionTemplate;
18 private TransactionInterceptor transactionInterceptor;
19 private MethodInvocation methodInvocation;
20
21 @Before
22 public void setUp()
23 {
24 transactionTemplate = new TransactionTemplate()
25 {
26
27 public Object execute(TransactionCallback action)
28 {
29 return action.doInTransaction();
30 }
31 };
32 transactionInterceptor = new TransactionInterceptor(transactionTemplate);
33 methodInvocation = mock(MethodInvocation.class);
34 }
35
36
37
38 @Test
39 public void testExecute() throws IllegalAccessException, InvocationTargetException
40 {
41 transactionInterceptor.intercept(methodInvocation);
42 verify(methodInvocation).invoke();
43 }
44
45 @Test(expected = RuntimeException.class)
46 public void testExecuteThrowRuntimeException() throws IllegalAccessException, InvocationTargetException
47 {
48 doThrow(new RuntimeException()).when(methodInvocation).invoke();
49 transactionInterceptor.intercept(methodInvocation);
50 }
51 @Test(expected = IllegalAccessException.class)
52 public void testExecuteThrowIllegalAccessException() throws IllegalAccessException, InvocationTargetException
53 {
54 doThrow(new IllegalAccessException()).when(methodInvocation).invoke();
55 transactionInterceptor.intercept(methodInvocation);
56 }
57
58 @Test(expected = InvocationTargetException.class)
59 public void testExecuteThrowInvocationTargetException() throws IllegalAccessException, InvocationTargetException
60 {
61 doThrow(new InvocationTargetException(new RuntimeException())).when(methodInvocation).invoke();
62 transactionInterceptor.intercept(methodInvocation);
63 }
64 }