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+ }
0 commit comments