Skip to content

Commit 0d7e58c

Browse files
author
TanyaEf
committed
Added unit tests for InputControlService
1 parent f5a70a7 commit 0d7e58c

File tree

9 files changed

+539
-0
lines changed

9 files changed

+539
-0
lines changed

src/main/java/com/jaspersoft/jasperserver/jaxrs/client/apiadapters/inputControls/InputControlsAdapter.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.AbstractAdapter;
66
import com.jaspersoft.jasperserver.jaxrs.client.core.JerseyRequest;
77
import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage;
8+
import com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.MandatoryParameterNotFoundException;
89
import com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.handling.DefaultErrorHandler;
910
import com.jaspersoft.jasperserver.jaxrs.client.core.operationresult.OperationResult;
1011
import java.util.List;
@@ -19,6 +20,9 @@ public class InputControlsAdapter extends AbstractAdapter{
1920

2021
public InputControlsAdapter container(String uri) {
2122
this.containerUri = uri;
23+
if (containerUri == null) {
24+
throw new MandatoryParameterNotFoundException("Uri of container should be specified");
25+
}
2226
return this;
2327
}
2428

src/main/java/com/jaspersoft/jasperserver/jaxrs/client/apiadapters/inputControls/InputControlsValuesAdapter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ public class InputControlsValuesAdapter extends AbstractAdapter{
2727

2828
public InputControlsValuesAdapter(SessionStorage sessionStorage, String containerUri) {
2929
super(sessionStorage);
30+
if (containerUri == null) {
31+
throw new MandatoryParameterNotFoundException("Uri of container should be specified");
32+
}
3033
this.containerUri = containerUri;
3134
}
3235

Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.inputControls;
2+
3+
import com.jaspersoft.jasperserver.dto.reports.inputcontrols.ReportInputControl;
4+
import com.jaspersoft.jasperserver.dto.reports.inputcontrols.ReportInputControlsListWrapper;
5+
import com.jaspersoft.jasperserver.jaxrs.client.core.JerseyRequest;
6+
import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage;
7+
import com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.MandatoryParameterNotFoundException;
8+
import com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.handling.DefaultErrorHandler;
9+
import com.jaspersoft.jasperserver.jaxrs.client.core.operationresult.OperationResult;
10+
import java.util.LinkedList;
11+
import org.mockito.Mock;
12+
import org.mockito.Mockito;
13+
import org.powermock.core.classloader.annotations.PrepareForTest;
14+
import org.powermock.modules.testng.PowerMockTestCase;
15+
import org.powermock.reflect.Whitebox;
16+
import org.testng.annotations.AfterMethod;
17+
import org.testng.annotations.BeforeMethod;
18+
import org.testng.annotations.Test;
19+
20+
import static com.jaspersoft.jasperserver.jaxrs.client.core.JerseyRequest.buildRequest;
21+
import static org.mockito.Matchers.any;
22+
import static org.mockito.Matchers.anyObject;
23+
import static org.mockito.Matchers.anyString;
24+
import static org.mockito.Matchers.eq;
25+
import static org.mockito.MockitoAnnotations.initMocks;
26+
import static org.powermock.api.mockito.PowerMockito.doReturn;
27+
import static org.powermock.api.mockito.PowerMockito.mockStatic;
28+
import static org.powermock.api.mockito.PowerMockito.spy;
29+
import static org.powermock.api.mockito.PowerMockito.verifyStatic;
30+
import static org.powermock.api.mockito.PowerMockito.when;
31+
import static org.powermock.api.mockito.PowerMockito.whenNew;
32+
import static org.mockito.Mockito.reset;
33+
import static org.testng.Assert.assertEquals;
34+
import static org.testng.Assert.assertNotNull;
35+
import static org.testng.Assert.assertSame;
36+
37+
/**
38+
* @author Tetiana Iefimenko
39+
*/
40+
@PrepareForTest({InputControlsAdapter.class, JerseyRequest.class, OperationResult.class})
41+
public class InputControlsAdapterTest extends PowerMockTestCase {
42+
43+
@Mock
44+
private SessionStorage sessionStorageMock;
45+
@Mock
46+
private JerseyRequest<ReportInputControlsListWrapper> requestMock;
47+
@Mock
48+
private OperationResult<ReportInputControlsListWrapper> operationResultMock;
49+
@Mock
50+
private InputControlsValuesAdapter inputControlsValuesAdapterMock;
51+
52+
private String uri = "uri";
53+
54+
@BeforeMethod
55+
public void before() {
56+
initMocks(this);
57+
}
58+
59+
@Test(expectedExceptions = MandatoryParameterNotFoundException.class)
60+
public void should_throw_an_exception_when_uri_is_null() {
61+
// When
62+
new InputControlsAdapter(sessionStorageMock).container(null);
63+
// Then
64+
// should be thrown an exception
65+
}
66+
67+
68+
@Test
69+
public void should_pass_session_storage_to_parent_adapter() {
70+
// Given
71+
InputControlsAdapter adapter= new InputControlsAdapter(sessionStorageMock);
72+
// When
73+
SessionStorage retrieved = adapter.getSessionStorage();
74+
// Then
75+
assertSame(retrieved, sessionStorageMock);
76+
}
77+
78+
79+
@Test
80+
public void should_return_adapter_instance() throws Exception {
81+
// Given
82+
InputControlsAdapter adapter= new InputControlsAdapter(sessionStorageMock);
83+
whenNew(InputControlsValuesAdapter.class).withArguments(eq(sessionStorageMock), anyString()).thenReturn(inputControlsValuesAdapterMock);
84+
// When
85+
InputControlsValuesAdapter retrieved = adapter.values();
86+
// Then
87+
assertSame(retrieved, inputControlsValuesAdapterMock);
88+
}
89+
90+
@Test(expectedExceptions = IllegalArgumentException.class)
91+
public void should_throw_an_exception_when_sessionStorage_is_null() {
92+
// When
93+
new InputControlsAdapter(null);
94+
// Then
95+
// should be thrown an exception
96+
}
97+
98+
@Test
99+
public void should_return_proper_operation_result_when_invoke_get() {
100+
101+
// Given
102+
mockStatic(JerseyRequest.class);
103+
when(buildRequest(
104+
eq(sessionStorageMock),
105+
eq(ReportInputControlsListWrapper.class),
106+
eq(new String[]{"/reports", uri, "/inputControls"}),
107+
any(DefaultErrorHandler.class))
108+
).thenReturn(requestMock);
109+
110+
doReturn(operationResultMock)
111+
.when(requestMock)
112+
.get();
113+
114+
InputControlsAdapter adapterSpy = spy(new InputControlsAdapter(sessionStorageMock));
115+
adapterSpy.container(uri);
116+
117+
// When
118+
OperationResult<ReportInputControlsListWrapper> retrieved = adapterSpy.get();
119+
120+
// Then
121+
verifyStatic();
122+
buildRequest(
123+
eq(sessionStorageMock),
124+
eq(ReportInputControlsListWrapper.class),
125+
eq(new String[]{"/reports", uri, "/inputControls"}),
126+
any(DefaultErrorHandler.class));
127+
128+
Mockito.verify(requestMock).get();
129+
assertEquals(Whitebox.getInternalState(adapterSpy, "containerUri"), uri);
130+
assertNotNull(retrieved);
131+
assertSame(retrieved, operationResultMock);
132+
}
133+
134+
@Test
135+
public void should_return_proper_operation_result_when_invoke_reorder() {
136+
137+
// Given
138+
mockStatic(JerseyRequest.class);
139+
when(buildRequest(
140+
eq(sessionStorageMock),
141+
eq(ReportInputControlsListWrapper.class),
142+
eq(new String[]{"/reports", uri, "/inputControls"}),
143+
any(DefaultErrorHandler.class))
144+
).thenReturn(requestMock);
145+
146+
doReturn(operationResultMock)
147+
.when(requestMock)
148+
.put(anyObject());
149+
150+
InputControlsAdapter adapterSpy = spy(new InputControlsAdapter(sessionStorageMock));
151+
adapterSpy.container(uri);
152+
153+
// When
154+
OperationResult<ReportInputControlsListWrapper> retrieved = adapterSpy.reorder(new LinkedList<ReportInputControl>());
155+
156+
// Then
157+
verifyStatic();
158+
buildRequest(
159+
eq(sessionStorageMock),
160+
eq(ReportInputControlsListWrapper.class),
161+
eq(new String[]{"/reports", uri, "/inputControls"}),
162+
any(DefaultErrorHandler.class));
163+
164+
Mockito.verify(requestMock).put(anyObject());
165+
assertNotNull(retrieved);
166+
assertSame(retrieved, operationResultMock);
167+
}
168+
169+
@Test
170+
public void should_invoke_adding_parameter() {
171+
172+
// Given
173+
mockStatic(JerseyRequest.class);
174+
when(buildRequest(
175+
eq(sessionStorageMock),
176+
eq(ReportInputControlsListWrapper.class),
177+
eq(new String[]{"/reports", uri, "/inputControls"}),
178+
any(DefaultErrorHandler.class))
179+
).thenReturn(requestMock);
180+
181+
doReturn(requestMock)
182+
.when(requestMock)
183+
.addParam("exclude", "state");
184+
doReturn(operationResultMock)
185+
.when(requestMock)
186+
.get();
187+
188+
InputControlsAdapter adapterSpy = spy(new InputControlsAdapter(sessionStorageMock));
189+
adapterSpy.container(uri).excludeState(true);
190+
191+
// When
192+
OperationResult<ReportInputControlsListWrapper> retrieved = adapterSpy.get();
193+
194+
// Then
195+
verifyStatic();
196+
buildRequest(
197+
eq(sessionStorageMock),
198+
eq(ReportInputControlsListWrapper.class),
199+
eq(new String[]{"/reports", uri, "/inputControls"}),
200+
any(DefaultErrorHandler.class));
201+
202+
Mockito.verify(requestMock).get();
203+
Mockito.verify(requestMock).addParam("exclude", "state");
204+
assertEquals(Whitebox.getInternalState(adapterSpy, "containerUri"), uri);
205+
assertEquals(Whitebox.getInternalState(adapterSpy, "excludeState"), Boolean.TRUE);
206+
assertNotNull(retrieved);
207+
assertSame(retrieved, operationResultMock);
208+
}
209+
210+
@AfterMethod
211+
public void after() {
212+
reset(sessionStorageMock, requestMock, operationResultMock, inputControlsValuesAdapterMock);
213+
}
214+
215+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.inputControls;
2+
3+
import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage;
4+
import org.mockito.Mock;
5+
import org.powermock.core.classloader.annotations.PrepareForTest;
6+
import org.powermock.modules.testng.PowerMockTestCase;
7+
import org.testng.annotations.AfterMethod;
8+
import org.testng.annotations.BeforeMethod;
9+
import org.testng.annotations.Test;
10+
11+
import static org.mockito.MockitoAnnotations.initMocks;
12+
import static org.powermock.api.mockito.PowerMockito.doReturn;
13+
import static org.powermock.api.mockito.PowerMockito.spy;
14+
import static org.testng.Assert.assertEquals;
15+
import static org.testng.Assert.assertSame;
16+
17+
/**
18+
* @author Tetiana Iefimenko
19+
*/
20+
@PrepareForTest({InputControlsService.class})
21+
public class InputControlsServiceTest extends PowerMockTestCase {
22+
@Mock
23+
private SessionStorage sessionStorageMock;
24+
@Mock
25+
private InputControlsAdapter adapterMock;
26+
27+
@BeforeMethod
28+
public void before() {
29+
initMocks(this);
30+
}
31+
32+
@Test
33+
public void should_pass_session_storage_to_parent_adapter() {
34+
// Given
35+
InputControlsService service = new InputControlsService(sessionStorageMock);
36+
// When
37+
SessionStorage retrieved = service.getSessionStorage();
38+
// Then
39+
assertSame(retrieved, sessionStorageMock);
40+
}
41+
42+
@Test(expectedExceptions = IllegalArgumentException.class)
43+
public void should_throw_an_exception_when_sessionStorage_is_null() {
44+
// When
45+
new InputControlsService(null);
46+
// Then
47+
// should be thrown an exception
48+
}
49+
50+
51+
@Test
52+
public void should_return_adapter_instance() {
53+
// Given
54+
InputControlsService serviceSpy = spy(new InputControlsService(sessionStorageMock));
55+
doReturn(adapterMock).when(serviceSpy).inputControls();
56+
// When
57+
InputControlsAdapter retried = serviceSpy.inputControls();
58+
59+
// Then
60+
assertEquals(adapterMock, retried);
61+
}
62+
63+
@AfterMethod
64+
public void after() {
65+
sessionStorageMock = null;
66+
adapterMock = null;
67+
}
68+
}

0 commit comments

Comments
 (0)