@@ -369,3 +369,258 @@ func TestGetRun(t *testing.T) {
369369 assert .EqualValues (t , 999 , run .Tasks [0 ].RunId )
370370 })
371371}
372+
373+ func TestGetJob (t * testing.T ) {
374+ ctx := context .Background ()
375+
376+ t .Run ("job with no pagination" , func (t * testing.T ) {
377+ var requestMocks qa.HTTPFixtures = []qa.HTTPFixture {
378+ {
379+ Method : "GET" ,
380+ Resource : "/api/2.2/jobs/get?job_id=514594995218126" ,
381+ Response : Job {
382+ Settings : & JobSettings {
383+ Tasks : []Task {
384+ {
385+ TaskKey : "task1" ,
386+ },
387+ {
388+ TaskKey : "task2" ,
389+ },
390+ {
391+ TaskKey : "task3" ,
392+ },
393+ {
394+ TaskKey : "task4" ,
395+ },
396+ },
397+ },
398+ },
399+ },
400+ {
401+ Method : "GET" ,
402+ ReuseRequest : true ,
403+ Resource : "/api/2.1/jobs/get?run_id=514594995218126" ,
404+ Response : Job {
405+ Settings : & JobSettings {
406+ Tasks : []Task {
407+ {
408+ TaskKey : "task1" ,
409+ },
410+ {
411+ TaskKey : "task2" ,
412+ },
413+ {
414+ TaskKey : "task3" ,
415+ },
416+ {
417+ TaskKey : "task4" ,
418+ },
419+ },
420+ },
421+ },
422+ },
423+ }
424+ client , server := requestMocks .Client (t )
425+ defer server .Close ()
426+
427+ mockJobsImpl := & jobsImpl {
428+ client : client ,
429+ }
430+ api := & JobsAPI {jobsImpl : * mockJobsImpl }
431+
432+ request := GetJobRequest {JobId : 514594995218126 }
433+ job , err := api .Get (ctx , request )
434+
435+ assert .NoError (t , err )
436+ assert .Equal (t , 4 , len (job .Settings .Tasks ))
437+ assert .EqualValues (t , "task1" , job .Settings .Tasks [0 ].TaskKey )
438+ assert .EqualValues (t , "task4" , job .Settings .Tasks [3 ].TaskKey )
439+ })
440+
441+ t .Run ("job with multiple pages" , func (t * testing.T ) {
442+ var requestMocks qa.HTTPFixtures = []qa.HTTPFixture {
443+ {
444+ Method : "GET" ,
445+ Resource : "/api/2.2/jobs/get?job_id=514594995218126" ,
446+ Response : Job {
447+ Settings : & JobSettings {
448+ Tasks : []Task {
449+ {
450+ TaskKey : "task1" ,
451+ },
452+ {
453+ TaskKey : "task2" ,
454+ },
455+ },
456+ JobClusters : []JobCluster {
457+ {
458+ JobClusterKey : "cluster1" ,
459+ },
460+ {
461+ JobClusterKey : "cluster2" ,
462+ },
463+ },
464+ Parameters : []JobParameterDefinition {
465+ {
466+ Name : "param1" ,
467+ Default : "default1" ,
468+ },
469+ {
470+ Name : "param2" ,
471+ Default : "default2" ,
472+ },
473+ },
474+ Environments : []JobEnvironment {
475+ {
476+ EnvironmentKey : "env1" ,
477+ },
478+ },
479+ },
480+ NextPageToken : "token1" ,
481+ },
482+ },
483+ {
484+ Method : "GET" ,
485+ Resource : "/api/2.2/jobs/get?job_id=514594995218126&page_token=token1" ,
486+ Response : Job {
487+ Settings : & JobSettings {
488+ Tasks : []Task {
489+ {
490+ TaskKey : "task3" ,
491+ },
492+ {
493+ TaskKey : "task4" ,
494+ },
495+ },
496+ JobClusters : []JobCluster {
497+ {
498+ JobClusterKey : "cluster3" ,
499+ },
500+ {
501+ JobClusterKey : "cluster4" ,
502+ },
503+ },
504+ Parameters : []JobParameterDefinition {
505+ {
506+ Name : "param3" ,
507+ Default : "default3" ,
508+ },
509+ },
510+ Environments : []JobEnvironment {
511+ {
512+ EnvironmentKey : "env2" ,
513+ },
514+ },
515+ },
516+ NextPageToken : "token2" ,
517+ },
518+ },
519+ {
520+ Method : "GET" ,
521+ Resource : "/api/2.2/jobs/get?job_id=514594995218126&page_token=token2" ,
522+ Response : Job {
523+ Settings : & JobSettings {
524+ Tasks : []Task {
525+ {
526+ TaskKey : "task5" ,
527+ },
528+ },
529+ Environments : []JobEnvironment {
530+ {
531+ EnvironmentKey : "env3" ,
532+ },
533+ },
534+ },
535+ },
536+ },
537+ {
538+ Method : "GET" ,
539+ ReuseRequest : true ,
540+ Resource : "/api/2.1/jobs/get?run_id=514594995218126" ,
541+ Response : Job {
542+ Settings : & JobSettings {
543+ Tasks : []Task {
544+ {
545+ TaskKey : "task1" ,
546+ },
547+ {
548+ TaskKey : "task2" ,
549+ },
550+ {
551+ TaskKey : "task3" ,
552+ },
553+ {
554+ TaskKey : "task4" ,
555+ },
556+ {
557+ TaskKey : "task5" ,
558+ },
559+ },
560+ JobClusters : []JobCluster {
561+ {
562+ JobClusterKey : "cluster1" ,
563+ },
564+ {
565+ JobClusterKey : "cluster2" ,
566+ },
567+ {
568+ JobClusterKey : "cluster3" ,
569+ },
570+ {
571+ JobClusterKey : "cluster4" ,
572+ },
573+ },
574+ Parameters : []JobParameterDefinition {
575+ {
576+ Name : "param1" ,
577+ Default : "default1" ,
578+ },
579+ {
580+ Name : "param2" ,
581+ Default : "default2" ,
582+ },
583+ {
584+ Name : "param3" ,
585+ Default : "default3" ,
586+ },
587+ },
588+ Environments : []JobEnvironment {
589+ {
590+ EnvironmentKey : "env1" ,
591+ },
592+ {
593+ EnvironmentKey : "env2" ,
594+ },
595+ {
596+ EnvironmentKey : "env3" ,
597+ },
598+ },
599+ },
600+ },
601+ },
602+ }
603+ client , server := requestMocks .Client (t )
604+ defer server .Close ()
605+
606+ mockJobsImpl := & jobsImpl {
607+ client : client ,
608+ }
609+ api := & JobsAPI {jobsImpl : * mockJobsImpl }
610+
611+ request := GetJobRequest {JobId : 514594995218126 }
612+ job , err := api .Get (ctx , request )
613+
614+ assert .NoError (t , err )
615+ assert .Equal (t , 5 , len (job .Settings .Tasks ))
616+ assert .Equal (t , 4 , len (job .Settings .JobClusters ))
617+ assert .Equal (t , 3 , len (job .Settings .Parameters ))
618+ assert .Equal (t , 3 , len (job .Settings .Environments ))
619+ assert .EqualValues (t , "task1" , job .Settings .Tasks [0 ].TaskKey )
620+ assert .EqualValues (t , "task4" , job .Settings .Tasks [3 ].TaskKey )
621+ assert .EqualValues (t , "task5" , job .Settings .Tasks [4 ].TaskKey )
622+ assert .EqualValues (t , "cluster3" , job .Settings .JobClusters [2 ].JobClusterKey )
623+ assert .EqualValues (t , "param3" , job .Settings .Parameters [2 ].Name )
624+ assert .EqualValues (t , "env3" , job .Settings .Environments [2 ].EnvironmentKey )
625+ })
626+ }
0 commit comments