@@ -36,7 +36,18 @@ describe('TaskExecutionsDetailsComponent', () => {
36
36
errorMessage : null ,
37
37
externalExecutionId : 'footask-d465ffe7-6874-42f7-ab04-191e9e6c6376'
38
38
} } ;
39
-
39
+ const commonTestExecutionDetailsWithJobIds = { 1 : {
40
+ executionId : 1 ,
41
+ exitCode : 0 ,
42
+ taskName : 'footask' ,
43
+ startTime : moment ( '2017-08-10T05:46:19.079Z' ) ,
44
+ endTime : moment ( '2017-08-10T05:46:19.098Z' ) ,
45
+ exitMessage : null ,
46
+ arguments : [ '--spring.cloud.task.executionid=1' ] ,
47
+ jobExecutionIds : [ 1 , 2 , 3 ] ,
48
+ errorMessage : null ,
49
+ externalExecutionId : 'footask-d465ffe7-6874-42f7-ab04-191e9e6c6376'
50
+ } } ;
40
51
41
52
beforeEach ( async ( ( ) => {
42
53
activeRoute = new MockActivatedRoute ( ) ;
@@ -99,7 +110,56 @@ describe('TaskExecutionsDetailsComponent', () => {
99
110
expect ( des [ 12 ] . nativeElement . textContent ) . toContain ( 'Batch Job' ) ;
100
111
expect ( des [ 13 ] . query ( By . css ( 'span' ) ) . nativeElement . classList . contains ( 'glyphicon-remove' ) ) . toBe ( true ) ;
101
112
expect ( des [ 14 ] . nativeElement . textContent ) . toContain ( 'Job Execution Ids' ) ;
102
- expect ( des [ 15 ] . nativeElement . textContent ) . toBe ( '' ) ;
113
+ expect ( des [ 15 ] . nativeElement . textContent ) . toContain ( 'N/A' ) ;
114
+ expect ( des [ 16 ] . nativeElement . textContent ) . toContain ( 'Start Time' ) ;
115
+ expect ( des [ 17 ] . nativeElement . textContent ) . toContain ( expectedStart ) ;
116
+ expect ( des [ 18 ] . nativeElement . textContent ) . toContain ( 'End Time' ) ;
117
+ expect ( des [ 19 ] . nativeElement . textContent ) . toContain ( expectedStop ) ;
118
+ expect ( des [ 20 ] . nativeElement . textContent ) . toContain ( 'Duration' ) ;
119
+ expect ( des [ 21 ] . nativeElement . textContent ) . toContain ( '00:00:00.019' ) ;
120
+ expect ( des [ 22 ] . nativeElement . textContent ) . toContain ( 'Exit Code' ) ;
121
+ expect ( des [ 23 ] . nativeElement . textContent ) . toContain ( '0' ) ;
122
+ expect ( des [ 24 ] . nativeElement . textContent ) . toContain ( 'Exit Message' ) ;
123
+ expect ( des [ 25 ] . nativeElement . textContent ) . toContain ( 'N/A' ) ;
124
+ } ) ;
125
+
126
+ it ( 'Execution details should get populated with Job Execution Ids' , ( ) => {
127
+ activeRoute . testParams = commonTestParams ;
128
+ tasksService . testExecutionDetails = commonTestExecutionDetailsWithJobIds ;
129
+
130
+ de = fixture . debugElement . query ( By . css ( 'div' ) ) ;
131
+ el = de . nativeElement ;
132
+ fixture . detectChanges ( ) ;
133
+ const expectedStart = moment ( '2017-08-10T05:46:19.079Z' ) . format ( 'Y-MM-DD[T]HH:mm:ss.SSS[Z]' ) ;
134
+ const expectedStop = moment ( '2017-08-10T05:46:19.098Z' ) . format ( 'Y-MM-DD[T]HH:mm:ss.SSS[Z]' ) ;
135
+
136
+ expect ( el . textContent ) . toContain ( 'Task Execution Details - Execution ID: 1' ) ;
137
+
138
+ const des : DebugElement [ ] = fixture . debugElement . queryAll ( By . css ( 'tbody td' ) ) ;
139
+ expect ( des . length ) . toBe ( 26 ) ;
140
+ expect ( des [ 0 ] . nativeElement . textContent ) . toContain ( 'Execution Id' ) ;
141
+ expect ( des [ 1 ] . nativeElement . textContent ) . toContain ( commonTestExecutionDetails [ 1 ] . executionId ) ;
142
+ expect ( des [ 2 ] . nativeElement . textContent ) . toContain ( 'Task Name' ) ;
143
+ expect ( des [ 3 ] . nativeElement . textContent ) . toContain ( 'footask' ) ;
144
+ expect ( des [ 4 ] . nativeElement . textContent ) . toContain ( 'Arguments' ) ;
145
+ expect ( des [ 5 ] . nativeElement . textContent ) . toContain ( '--spring.cloud.task.executionid=1' ) ;
146
+ expect ( des [ 6 ] . nativeElement . textContent ) . toContain ( 'External Execution Id' ) ;
147
+ expect ( des [ 7 ] . nativeElement . textContent ) . toContain ( 'footask-d465ffe7-6874-42f7-ab04-191e9e6c6376' ) ;
148
+ expect ( des [ 8 ] . nativeElement . textContent ) . toContain ( 'Start Time' ) ;
149
+ expect ( des [ 9 ] . nativeElement . textContent ) . toContain ( expectedStart ) ;
150
+ expect ( des [ 10 ] . nativeElement . textContent ) . toContain ( 'End Time' ) ;
151
+ expect ( des [ 11 ] . nativeElement . textContent ) . toContain ( expectedStop ) ;
152
+ expect ( des [ 12 ] . nativeElement . textContent ) . toContain ( 'Batch Job' ) ;
153
+
154
+ expect ( des [ 13 ] . query ( By . css ( 'span' ) ) . nativeElement . classList . contains ( 'glyphicon-ok' ) ) . toBe ( true ) ;
155
+ expect ( des [ 14 ] . nativeElement . textContent ) . toContain ( 'Job Execution Ids' ) ;
156
+ const jobExecutionIdButtons = fixture . debugElement . queryAll ( By . css ( '#jobExecutionIds button' ) ) ;
157
+ expect ( jobExecutionIdButtons . length ) . toEqual ( 3 ) ;
158
+
159
+ expect ( jobExecutionIdButtons [ 0 ] . nativeElement . innerHTML . trim ( ) ) . toEqual ( '1' ) ;
160
+ expect ( jobExecutionIdButtons [ 1 ] . nativeElement . innerHTML . trim ( ) ) . toEqual ( '2' ) ;
161
+ expect ( jobExecutionIdButtons [ 2 ] . nativeElement . innerHTML . trim ( ) ) . toEqual ( '3' ) ;
162
+
103
163
expect ( des [ 16 ] . nativeElement . textContent ) . toContain ( 'Start Time' ) ;
104
164
expect ( des [ 17 ] . nativeElement . textContent ) . toContain ( expectedStart ) ;
105
165
expect ( des [ 18 ] . nativeElement . textContent ) . toContain ( 'End Time' ) ;
@@ -123,4 +183,28 @@ describe('TaskExecutionsDetailsComponent', () => {
123
183
el . click ( ) ;
124
184
expect ( navigate ) . toHaveBeenCalledWith ( [ 'tasks/executions' ] ) ;
125
185
} ) ;
186
+
187
+ it ( 'Job Execution Id button should navigate to job execution details page on click' , ( ) => {
188
+ activeRoute . testParams = commonTestParams ;
189
+ tasksService . testExecutionDetails = commonTestExecutionDetailsWithJobIds ;
190
+
191
+ de = fixture . debugElement . query ( By . css ( 'div' ) ) ;
192
+ el = de . nativeElement ;
193
+ fixture . detectChanges ( ) ;
194
+
195
+ const jobExecutionIdButtons = fixture . debugElement . queryAll ( By . css ( '#jobExecutionIds button' ) ) ;
196
+
197
+ const navigate = spyOn ( ( < any > component ) . router , 'navigate' ) ;
198
+ fixture . detectChanges ( ) ;
199
+
200
+ jobExecutionIdButtons [ 0 ] . nativeElement . click ( ) ;
201
+ expect ( navigate ) . toHaveBeenCalledWith ( [ 'jobs/executions/1' ] ) ;
202
+
203
+ jobExecutionIdButtons [ 1 ] . nativeElement . click ( ) ;
204
+ expect ( navigate ) . toHaveBeenCalledWith ( [ 'jobs/executions/1' ] ) ;
205
+
206
+ jobExecutionIdButtons [ 2 ] . nativeElement . click ( ) ;
207
+ expect ( navigate ) . toHaveBeenCalledWith ( [ 'jobs/executions/1' ] ) ;
208
+ } ) ;
209
+
126
210
} ) ;
0 commit comments