1+ package com .jaspersoft .jasperserver .jaxrs .client .apiadapters .importexport .exportservice ;
2+
3+ import com .jaspersoft .jasperserver .dto .dashboard .DashboardExportExecution ;
4+ import com .jaspersoft .jasperserver .dto .dashboard .DashboardExportExecutionStatus ;
5+ import com .jaspersoft .jasperserver .dto .dashboard .DashboardParameters ;
6+ import com .jaspersoft .jasperserver .dto .reports .ReportParameter ;
7+ import com .jaspersoft .jasperserver .jaxrs .client .core .JasperserverRestClient ;
8+ import com .jaspersoft .jasperserver .jaxrs .client .core .JerseyRequest ;
9+ import com .jaspersoft .jasperserver .jaxrs .client .core .SessionStorage ;
10+ import com .jaspersoft .jasperserver .jaxrs .client .core .exceptions .handling .DefaultErrorHandler ;
11+ import com .jaspersoft .jasperserver .jaxrs .client .core .operationresult .OperationResult ;
12+ import org .mockito .Mock ;
13+ import org .mockito .Mockito ;
14+ import org .powermock .core .classloader .annotations .PrepareForTest ;
15+ import org .powermock .modules .testng .PowerMockTestCase ;
16+ import org .testng .annotations .AfterMethod ;
17+ import org .testng .annotations .BeforeMethod ;
18+ import org .testng .annotations .Test ;
19+
20+ import java .io .InputStream ;
21+ import java .lang .reflect .Field ;
22+ import java .util .ArrayList ;
23+ import java .util .List ;
24+
25+ import static com .jaspersoft .jasperserver .jaxrs .client .core .JerseyRequest .buildRequest ;
26+ import static org .hamcrest .core .IsInstanceOf .instanceOf ;
27+ import static org .mockito .Mockito .*;
28+ import static org .mockito .MockitoAnnotations .initMocks ;
29+ import static org .powermock .api .mockito .PowerMockito .mockStatic ;
30+ import static org .powermock .api .mockito .PowerMockito .when ;
31+ import static org .powermock .api .support .membermodification .MemberMatcher .field ;
32+ import static org .testng .Assert .*;
33+
34+ /**
35+ * Unit tests for {@link JasperserverRestClient}
36+ */
37+ @ PrepareForTest ({JerseyRequest .class , ExportDashboardAdapter .class , JasperserverRestClient .class , SessionStorage .class })
38+ public class ExportDashboardAdapterTest extends PowerMockTestCase {
39+
40+ @ Mock
41+ private SessionStorage sessionStorageMock ;
42+
43+ @ Mock
44+ private JerseyRequest <InputStream > requestInputStreamMock ;
45+
46+ @ Mock
47+ private OperationResult <InputStream > operationResultInputStreamMock ;
48+
49+ @ Mock
50+ private JerseyRequest <DashboardExportExecution > requestDashboardExportExecution ;
51+
52+ @ Mock
53+ private OperationResult <DashboardExportExecution > operationResultDashboardExportExecution ;
54+
55+ @ Mock
56+ private JerseyRequest <DashboardExportExecutionStatus > requestDashboardExportExecutionStatus ;
57+
58+ @ Mock
59+ private OperationResult <DashboardExportExecutionStatus > operationResultDashboardExportExecutionStatus ;
60+
61+ private ExportDashboardAdapter adapterSpy ;
62+ private String jobId = "some1meaningful2ID" ;
63+ private String dashboardUri = "dashboardUri" ;
64+
65+ @ BeforeMethod
66+ public void before () {
67+ initMocks (this );
68+ adapterSpy = Mockito .spy (new ExportDashboardAdapter (sessionStorageMock , dashboardUri , jobId ));
69+ }
70+
71+ @ Test (testName = "JasperserverRestClient_constructor" )
72+ public void should_create_an_instance_of_JasperserverRestClient_with_proper_fields () throws IllegalAccessException {
73+ // When
74+ Field field = field (ExportDashboardAdapter .class , "dashboardExportExecution" );
75+ Object retrievedField = field .get (adapterSpy );
76+
77+ // Then
78+ assertSame (adapterSpy .getSessionStorage (), sessionStorageMock );
79+ assertNotNull (retrievedField );
80+ assertTrue (instanceOf (DashboardExportExecution .class ).matches (retrievedField ));
81+
82+ assertNotNull (((DashboardExportExecution ) retrievedField ).getParameters ());
83+
84+ }
85+
86+ @ Test (testName = "parameters" )
87+ public void should_add_parameters_to_params_of_ExportTaskDto_instance () throws IllegalAccessException {
88+
89+ List <String > countries = new ArrayList <String >();
90+ countries .add ("Canada" );
91+ countries .add ("Mexica" );
92+ ReportParameter testParam1 = new ReportParameter ();
93+ testParam1 .setName ("countries" );
94+ testParam1 .setValues (countries );
95+ List <String > productFamily = new ArrayList <String >();
96+ productFamily .add ("Food" );
97+ productFamily .add ("Drink" );
98+ ReportParameter testParam2 = new ReportParameter ();
99+ testParam1 .setName ("productFamily" );
100+ testParam1 .setValues (productFamily );
101+ final List <ReportParameter > paramList = new ArrayList <ReportParameter >();
102+ paramList .add (testParam1 );
103+ paramList .add (testParam2 );
104+ DashboardParameters params = new DashboardParameters (paramList );
105+
106+ ExportDashboardAdapter adapter = spy (new ExportDashboardAdapter (sessionStorageMock , dashboardUri , jobId ));
107+
108+ ExportDashboardAdapter retrievedAdapter = adapter .parameters (params );
109+ Field field = field (ExportDashboardAdapter .class , "dashboardExportExecution" );
110+ DashboardExportExecution dashboardExportExecution = (DashboardExportExecution ) field .get (adapter );
111+
112+ verify (adapter , times (1 )).parameters (params );
113+ assertNotNull (retrievedAdapter );
114+ assertTrue (dashboardExportExecution .getParameters ().getDashboardParameters ().size () == 2 );
115+ assertTrue (dashboardExportExecution .getParameters ().getDashboardParameters ().contains (testParam2 ));
116+ }
117+
118+ @ Test (testName = "exportReport" )
119+ public void should_retrieve_streamed_OperationResult_object () {
120+
121+ // Given
122+ mockStatic (JerseyRequest .class );
123+ when (buildRequest (eq (sessionStorageMock ), eq (InputStream .class ),
124+ eq (new String []{"/dashboards" , dashboardUri , "/exportFormat" }))).thenReturn (requestInputStreamMock );
125+ Mockito .doReturn (operationResultInputStreamMock ).when (requestInputStreamMock ).get ();
126+
127+ // When
128+ OperationResult <InputStream > retrieved = adapterSpy .exportReport ();
129+
130+ // Then
131+ assertNotNull (retrieved );
132+ assertSame (retrieved , operationResultInputStreamMock );
133+ }
134+
135+ @ Test (testName = "getAllJobs" )
136+ public void should_retrieve_list_with_all_jobs () {
137+
138+ // Given
139+ mockStatic (JerseyRequest .class );
140+ when (buildRequest (eq (sessionStorageMock ), eq (DashboardExportExecution .class ),
141+ eq (new String []{"/dashboardExecutions" }))).thenReturn (requestDashboardExportExecution );
142+ Mockito .doReturn (operationResultDashboardExportExecution ).when (requestDashboardExportExecution ).get ();
143+
144+ // When
145+ OperationResult <DashboardExportExecution > retrieved = adapterSpy .getAllJobs ();
146+
147+ // Then
148+ assertNotNull (retrieved );
149+ assertSame (retrieved , operationResultDashboardExportExecution );
150+ }
151+
152+ @ Test (testName = "getJob" )
153+ public void should_retrieve_dto_with_job () {
154+
155+ // Given
156+ mockStatic (JerseyRequest .class );
157+ when (buildRequest (eq (sessionStorageMock ), eq (DashboardExportExecution .class ),
158+ eq (new String []{"/dashboardExecutions" , jobId }))).thenReturn (requestDashboardExportExecution );
159+ Mockito .doReturn (operationResultDashboardExportExecution ).when (requestDashboardExportExecution ).get ();
160+
161+ // When
162+ OperationResult <DashboardExportExecution > retrieved = adapterSpy .getJob ();
163+
164+ // Then
165+ assertNotNull (retrieved );
166+ assertSame (retrieved , operationResultDashboardExportExecution );
167+ }
168+
169+ @ Test (testName = "create" )
170+ public void should_return_not_null_op_result () throws IllegalAccessException {
171+
172+ // Given
173+ mockStatic (JerseyRequest .class );
174+ when (buildRequest (eq (sessionStorageMock ), eq (DashboardExportExecution .class ),
175+ eq (new String []{"/dashboardExecutions" }),
176+ any (DefaultErrorHandler .class ))).thenReturn (requestDashboardExportExecution );
177+
178+ DashboardExportExecution dto = new DashboardExportExecution ();
179+ Mockito .doReturn (operationResultDashboardExportExecution ).when (requestDashboardExportExecution ).post (dto );
180+
181+ // When
182+ OperationResult <DashboardExportExecution > retrieved = adapterSpy .create (dto );
183+
184+ // Then
185+ assertNotNull (retrieved );
186+ assertSame (retrieved , operationResultDashboardExportExecution );
187+ }
188+
189+ @ Test (testName = "getJobStatus" )
190+ public void should_retrieve_dto_with_job_status () {
191+
192+ // Given
193+ mockStatic (JerseyRequest .class );
194+ when (buildRequest (eq (sessionStorageMock ), eq (DashboardExportExecutionStatus .class ),
195+ eq (new String []{"/dashboardExecutions" , jobId , "/status" }))).thenReturn (requestDashboardExportExecutionStatus );
196+ Mockito .doReturn (operationResultDashboardExportExecutionStatus ).when (requestDashboardExportExecutionStatus ).get ();
197+
198+ // When
199+ OperationResult <DashboardExportExecutionStatus > retrieved = adapterSpy .getJobStatus ();
200+
201+ // Then
202+ assertNotNull (retrieved );
203+ assertSame (retrieved , operationResultDashboardExportExecutionStatus );
204+ }
205+
206+ @ Test (testName = "getExportResult" )
207+ public void should_retrieve_streamed_Report_object () {
208+
209+ // Given
210+ mockStatic (JerseyRequest .class );
211+ when (buildRequest (eq (sessionStorageMock ), eq (InputStream .class ),
212+ eq (new String []{"/dashboardExecutions" , jobId , "/outputResource" }))).thenReturn (requestInputStreamMock );
213+ Mockito .doReturn (operationResultInputStreamMock ).when (requestInputStreamMock ).get ();
214+
215+ // When
216+ OperationResult <InputStream > retrieved = adapterSpy .getExportResult ();
217+
218+ // Then
219+ assertNotNull (retrieved );
220+ assertSame (retrieved , operationResultInputStreamMock );
221+ }
222+
223+ @ Test (testName = "deleteJob" )
224+ public void should_retrieve_204_result () {
225+
226+ // Given
227+ mockStatic (JerseyRequest .class );
228+ when (buildRequest (eq (sessionStorageMock ), eq (DashboardExportExecution .class ),
229+ eq (new String []{"/dashboardExecutions" , jobId }))).thenReturn (requestDashboardExportExecution );
230+ Mockito .doReturn (operationResultDashboardExportExecution ).when (requestDashboardExportExecution ).delete ();
231+
232+ // When
233+ OperationResult <DashboardExportExecution > retrieved = adapterSpy .deleteJob ();
234+
235+ // Then
236+ assertNotNull (retrieved );
237+ assertSame (retrieved , operationResultDashboardExportExecution );
238+ }
239+
240+ @ AfterMethod
241+ public void after () {
242+ reset (sessionStorageMock , requestInputStreamMock , operationResultInputStreamMock );
243+ }
244+
245+ }
0 commit comments