@@ -202,4 +202,109 @@ private void addJobEnvironments(Job job, String... environmentKeys) {
202202 }
203203 job .getSettings ().setEnvironments (environments );
204204 }
205+
206+ @ Test
207+ public void testListJobsWithoutExpandTasks () {
208+ JobsService service = Mockito .mock (JobsService .class );
209+ BaseJob job1 = new BaseJob ().setJobId (100L ).setSettings (new JobSettings ().setName ("job1" ));
210+ BaseJob job2 = new BaseJob ().setJobId (200L ).setSettings (new JobSettings ().setName ("job2" ));
211+ BaseJob job3 = new BaseJob ().setJobId (300L ).setSettings (new JobSettings ().setName ("job3" ));
212+ BaseJob job4 = new BaseJob ().setJobId (400L ).setSettings (new JobSettings ().setName ("job4" ));
213+
214+ List <BaseJob > jobsOnFirstPage = new ArrayList <>();
215+ jobsOnFirstPage .add (job1 );
216+ jobsOnFirstPage .add (job2 );
217+ List <BaseJob > jobsOnSecondPage = new ArrayList <>();
218+ jobsOnSecondPage .add (job3 );
219+ jobsOnSecondPage .add (job4 );
220+ when (service .list (any ()))
221+ .thenReturn (new ListJobsResponse ().setJobs (jobsOnFirstPage ))
222+ .thenReturn (new ListJobsResponse ().setJobs (jobsOnSecondPage ));
223+ JobsExt jobsExt = new JobsExt (service );
224+
225+ ListJobsRequest request = new ListJobsRequest ().setExpandTasks (false );
226+ Iterable <BaseJob > jobsList = jobsExt .list (request );
227+
228+ List <BaseJob > expectedJobsList = new ArrayList <>();
229+ expectedJobsList .add (job1 );
230+ expectedJobsList .add (job2 );
231+ expectedJobsList .add (job3 );
232+ expectedJobsList .add (job4 );
233+ for (BaseJob job : jobsList ) {
234+ BaseJob expectedJob = expectedJobsList .stream ()
235+ .filter (e -> e .getJobId ().equals (job .getJobId ()))
236+ .findFirst ()
237+ .orElse (null );
238+ assertEquals (expectedJob , job );
239+ }
240+ verify (service , times (0 )).get (any ());
241+ }
242+
243+ @ Test
244+ public void testListJobs () {
245+ JobsService service = Mockito .mock (JobsService .class );
246+ BaseJob job1 = new BaseJob ().setJobId (100L ).setSettings (new JobSettings ().setName ("job1" ));
247+ addTasks (job1 , "job1_taskKey1" , "job1_taskKey2" );
248+ BaseJob job2 = new BaseJob ().setJobId (200L ).setSettings (new JobSettings ().setName ("job2" ));
249+ addTasks (job2 , "job2_taskKey1" , "job2_taskKey2" );
250+
251+ Job getJob1_page1 = new Job ()
252+ .setJobId (100L )
253+ .setNextPageToken ("job1_page2token" )
254+ .setSettings (new JobSettings ().setName ("job1" ));
255+ addTasks (getJob1_page1 , "job1_taskKey1" , "job1_taskKey2" );
256+ Job getJob1_page2 = new Job ()
257+ .setJobId (100L )
258+ .setSettings (new JobSettings ().setName ("job1" ));
259+ addTasks (getJob1_page2 , "job1_taskKey3" , "job1_taskKey4" );
260+
261+ Job getJob2_page1 = new Job ()
262+ .setJobId (200L )
263+ .setNextPageToken ("job2_page2token" )
264+ .setSettings (new JobSettings ().setName ("job2" ));
265+ addTasks (getJob2_page1 , "job2_taskKey1" , "job2_taskKey2" );
266+ Job getJob2_page2 = new Job ()
267+ .setJobId (200L )
268+ .setSettings (new JobSettings ().setName ("job2" ));
269+ addTasks (getJob2_page2 , "job2_taskKey3" , "job2_taskKey4" );
270+
271+ doReturn (getJob1_page1 ).when (service ).get (argThat (request -> request != null && request .getJobId () == 100L && request .getPageToken () == null ));
272+ doReturn (getJob1_page2 ).when (service ).get (argThat (request -> request != null && request .getJobId () == 100L && "job1_page2token" .equals (request .getPageToken ())));
273+ doReturn (getJob2_page1 ).when (service ).get (argThat (request -> request != null && request .getJobId () == 200L && request .getPageToken () == null ));
274+ doReturn (getJob2_page2 ).when (service ).get (argThat (request -> request != null && request .getJobId () == 200L && "job2_page2token" .equals (request .getPageToken ())));
275+
276+ List <BaseJob > jobsOnFirstPage = new ArrayList <>();
277+ jobsOnFirstPage .add (job1 );
278+ jobsOnFirstPage .add (job2 );
279+ ListJobsResponse response = new ListJobsResponse ().setJobs (jobsOnFirstPage );
280+ when (service .list (any ())).thenReturn (response );
281+ JobsExt jobsExt = new JobsExt (service );
282+
283+ ListJobsRequest request = new ListJobsRequest ().setExpandTasks (true );
284+ Iterable <BaseJob > jobsList = jobsExt .list (request );
285+
286+ BaseJob expectedJob1 = new BaseJob ().setJobId (100L ).setSettings (new JobSettings ().setName ("job1" ));
287+ addTasks (expectedJob1 , "job1_taskKey1" , "job1_taskKey2" , "job1_taskKey3" , "job1_taskKey4" );
288+ BaseJob expectedJob2 = new BaseJob ().setJobId (200L ).setSettings (new JobSettings ().setName ("job2" ));
289+ addTasks (expectedJob2 , "job2_taskKey1" , "job2_taskKey2" , "job2_taskKey3" , "job2_taskKey4" );
290+ List <BaseJob > expectedJobsList = new ArrayList <>();
291+ expectedJobsList .add (expectedJob1 );
292+ expectedJobsList .add (expectedJob2 );
293+ for (BaseJob job : jobsList ) {
294+ BaseJob expectedJob = expectedJobsList .stream ()
295+ .filter (e -> e .getJobId ().equals (job .getJobId ()))
296+ .findFirst ()
297+ .orElse (null );
298+ assertEquals (expectedJob , job );
299+ }
300+ verify (service , times (4 )).get (any ());
301+ }
302+
303+ private void addTasks (BaseJob job , String ... taskKeys ) {
304+ Collection <Task > tasks = new ArrayList <>();
305+ for (String taskKey : taskKeys ) {
306+ tasks .add (new Task ().setTaskKey (taskKey ));
307+ }
308+ job .getSettings ().setTasks (tasks );
309+ }
205310}
0 commit comments