@@ -36,7 +36,7 @@ |
||
36 | 36 | 'args' => 'getConstructorArgs', |
37 | 37 | ]; |
38 | 38 | |
39 | - private $inheritance = [ AbstractHelper::class ]; |
|
39 | + private $inheritance = [AbstractHelper::class]; |
|
40 | 40 | |
41 | 41 | private function getConstructorArgs() |
42 | 42 | { |
@@ -58,7 +58,7 @@ |
||
58 | 58 | |
59 | 59 | $this->paginatorMock = $paginator; |
60 | 60 | |
61 | - return [ $paginator ]; |
|
61 | + return [$paginator]; |
|
62 | 62 | } |
63 | 63 | |
64 | 64 | public function testConstruction() |
@@ -58,11 +58,11 @@ discard block |
||
58 | 58 | default: |
59 | 59 | $this->mailServiceMock = $this->getMockBuilder('\Core\Mail\MailService')->disableOriginalConstructor()->getMock(); |
60 | 60 | $this->mailServiceMock->expects($this->atLeastOnce()) |
61 | - ->method('send') |
|
62 | - ->with($this->callback(array($this, 'popMailMock'))); |
|
61 | + ->method('send') |
|
62 | + ->with($this->callback(array($this, 'popMailMock'))); |
|
63 | 63 | $this->mailServiceMock->expects($this->any()) |
64 | - ->method('get')->with('htmltemplate') |
|
65 | - ->will($this->returnCallback(array($this, 'pushMailMock'))); |
|
64 | + ->method('get')->with('htmltemplate') |
|
65 | + ->will($this->returnCallback(array($this, 'pushMailMock'))); |
|
66 | 66 | |
67 | 67 | |
68 | 68 | $this->targetOptions = array('siteName' => 'Test', 'adminEmail' => 'test@admin'); |
@@ -101,27 +101,27 @@ discard block |
||
101 | 101 | public function testAttachsToAndDetachsFromJobEvents() |
102 | 102 | { |
103 | 103 | $events = $this->getMockBuilder('\Zend\EventManager\EventManager') |
104 | - ->disableOriginalConstructor() |
|
105 | - ->getMock(); |
|
104 | + ->disableOriginalConstructor() |
|
105 | + ->getMock(); |
|
106 | 106 | |
107 | 107 | $callback1 = [new MailSenderListenerMock(),'listen1']; |
108 | - $callback2 = [new MailSenderListenerMock(),'listen2']; |
|
109 | - $callback3 = [new MailSenderListenerMock(),'listen3']; |
|
108 | + $callback2 = [new MailSenderListenerMock(),'listen2']; |
|
109 | + $callback3 = [new MailSenderListenerMock(),'listen3']; |
|
110 | 110 | $events->expects($this->exactly(3)) |
111 | - ->method('attach') |
|
112 | - ->withConsecutive( |
|
111 | + ->method('attach') |
|
112 | + ->withConsecutive( |
|
113 | 113 | array(JobEvent::EVENT_JOB_CREATED, array($this->target, 'onJobCreated')), |
114 | 114 | array(JobEvent::EVENT_JOB_ACCEPTED, array($this->target, 'onJobAccepted')), |
115 | 115 | array(JobEvent::EVENT_JOB_REJECTED, array($this->target, 'onJobRejected')) |
116 | - ) |
|
117 | - ->will($this->onConsecutiveCalls($callback1,$callback2,$callback3)) |
|
116 | + ) |
|
117 | + ->will($this->onConsecutiveCalls($callback1,$callback2,$callback3)) |
|
118 | 118 | ; |
119 | 119 | |
120 | 120 | $events->expects($this->exactly(3)) |
121 | - ->method('detach') |
|
122 | - ->withConsecutive( |
|
121 | + ->method('detach') |
|
122 | + ->withConsecutive( |
|
123 | 123 | array($callback1), array($callback2), array($callback3) |
124 | - )->willReturn(true); |
|
124 | + )->willReturn(true); |
|
125 | 125 | |
126 | 126 | $this->target->attach($events); |
127 | 127 | $this->assertAttributeEquals(array($callback1, $callback2, $callback3), 'listeners', $this->target); |
@@ -196,7 +196,7 @@ discard block |
||
196 | 196 | |
197 | 197 | class MailSenderListenerMock |
198 | 198 | { |
199 | - public function listen1(){} |
|
200 | - public function listen2(){} |
|
201 | - public function listen3(){} |
|
199 | + public function listen1(){} |
|
200 | + public function listen2(){} |
|
201 | + public function listen3(){} |
|
202 | 202 | } |
203 | 203 | \ No newline at end of file |
@@ -104,9 +104,9 @@ discard block |
||
104 | 104 | ->disableOriginalConstructor() |
105 | 105 | ->getMock(); |
106 | 106 | |
107 | - $callback1 = [new MailSenderListenerMock(),'listen1']; |
|
108 | - $callback2 = [new MailSenderListenerMock(),'listen2']; |
|
109 | - $callback3 = [new MailSenderListenerMock(),'listen3']; |
|
107 | + $callback1 = [new MailSenderListenerMock(), 'listen1']; |
|
108 | + $callback2 = [new MailSenderListenerMock(), 'listen2']; |
|
109 | + $callback3 = [new MailSenderListenerMock(), 'listen3']; |
|
110 | 110 | $events->expects($this->exactly(3)) |
111 | 111 | ->method('attach') |
112 | 112 | ->withConsecutive( |
@@ -114,7 +114,7 @@ discard block |
||
114 | 114 | array(JobEvent::EVENT_JOB_ACCEPTED, array($this->target, 'onJobAccepted')), |
115 | 115 | array(JobEvent::EVENT_JOB_REJECTED, array($this->target, 'onJobRejected')) |
116 | 116 | ) |
117 | - ->will($this->onConsecutiveCalls($callback1,$callback2,$callback3)) |
|
117 | + ->will($this->onConsecutiveCalls($callback1, $callback2, $callback3)) |
|
118 | 118 | ; |
119 | 119 | |
120 | 120 | $events->expects($this->exactly(3)) |
@@ -196,7 +196,7 @@ discard block |
||
196 | 196 | |
197 | 197 | class MailSenderListenerMock |
198 | 198 | { |
199 | - public function listen1(){} |
|
200 | - public function listen2(){} |
|
201 | - public function listen3(){} |
|
199 | + public function listen1() {} |
|
200 | + public function listen2() {} |
|
201 | + public function listen3() {} |
|
202 | 202 | } |
203 | 203 | \ No newline at end of file |
@@ -129,62 +129,62 @@ discard block |
||
129 | 129 | ->will($this->returnValue('<html />')); |
130 | 130 | |
131 | 131 | $this->viewPhpRendererStrategy = $this->getMockBuilder('\Zend\View\Strategy\PhpRendererStrategy') |
132 | - ->disableOriginalConstructor() |
|
133 | - ->getMock(); |
|
132 | + ->disableOriginalConstructor() |
|
133 | + ->getMock(); |
|
134 | 134 | |
135 | 135 | $this->viewPhpRendererStrategy->expects($this->once()) |
136 | - ->method('getRenderer') |
|
137 | - ->will($this->returnValue($this->renderer)); |
|
136 | + ->method('getRenderer') |
|
137 | + ->will($this->returnValue($this->renderer)); |
|
138 | 138 | |
139 | 139 | $this->response = $this->getMockBuilder('\Zend\Http\Response') |
140 | - ->disableOriginalConstructor() |
|
141 | - ->getMock(); |
|
140 | + ->disableOriginalConstructor() |
|
141 | + ->getMock(); |
|
142 | 142 | |
143 | 143 | $this->jobEvent = $this->getMockBuilder('\Jobs\Listener\Events\JobEvent') |
144 | - ->disableOriginalConstructor() |
|
145 | - ->getMock(); |
|
144 | + ->disableOriginalConstructor() |
|
145 | + ->getMock(); |
|
146 | 146 | |
147 | 147 | $this->job = $this->getMockBuilder('\Jobs\Entity\Job') |
148 | - ->disableOriginalConstructor() |
|
149 | - ->getMock(); |
|
148 | + ->disableOriginalConstructor() |
|
149 | + ->getMock(); |
|
150 | 150 | |
151 | 151 | $this->publisher = $this->getMockBuilder('\Jobs\Entity\Publisher') |
152 | - ->disableOriginalConstructor() |
|
153 | - ->getMock(); |
|
152 | + ->disableOriginalConstructor() |
|
153 | + ->getMock(); |
|
154 | 154 | |
155 | 155 | $this->publisher->expects($this->at(0)) |
156 | - ->method('__get') |
|
157 | - ->with('externalId') |
|
158 | - ->will($this->returnValue('externalId32')); |
|
156 | + ->method('__get') |
|
157 | + ->with('externalId') |
|
158 | + ->will($this->returnValue('externalId32')); |
|
159 | 159 | |
160 | 160 | $this->publisher->expects($this->at(1)) |
161 | - ->method('__get') |
|
162 | - ->with('reference') |
|
163 | - ->will($this->returnValue('reference32')); |
|
161 | + ->method('__get') |
|
162 | + ->with('reference') |
|
163 | + ->will($this->returnValue('reference32')); |
|
164 | 164 | |
165 | 165 | $this->publisher->expects($this->any()) |
166 | - ->method('__set') |
|
167 | - ->will($this->returnCallback($staticClassPrefix . 'publisherSetter')); |
|
166 | + ->method('__set') |
|
167 | + ->will($this->returnCallback($staticClassPrefix . 'publisherSetter')); |
|
168 | 168 | |
169 | 169 | $this->htmlAbsPathFilter = $this->getMockBuilder('\Core\Filter\HtmlAbsPathFilter') |
170 | 170 | ->disableOriginalConstructor() |
171 | 171 | ->getMock(); |
172 | 172 | |
173 | 173 | $this->htmlAbsPathFilter->expects($this->any()) |
174 | - ->method('filter') |
|
175 | - ->will($this->returnCallback($staticClassPrefix . 'absPathFilter')); |
|
174 | + ->method('filter') |
|
175 | + ->will($this->returnCallback($staticClassPrefix . 'absPathFilter')); |
|
176 | 176 | |
177 | 177 | $this->filterManager = $this->getMockBuilder('\Zend\ServiceManager\ServiceManager') |
178 | - ->disableOriginalConstructor() |
|
179 | - ->getMock(); |
|
178 | + ->disableOriginalConstructor() |
|
179 | + ->getMock(); |
|
180 | 180 | |
181 | 181 | $this->filterManager->expects($this->at(0)) |
182 | 182 | ->method('get') |
183 | 183 | ->willReturn($this->htmlAbsPathFilter); |
184 | 184 | |
185 | 185 | $this->restClient = $this->getMockBuilder('\Core\Service\RestClient') |
186 | - ->disableOriginalConstructor() |
|
187 | - ->getMock(); |
|
186 | + ->disableOriginalConstructor() |
|
187 | + ->getMock(); |
|
188 | 188 | |
189 | 189 | //$this->restClient->expects($this->at(0)) |
190 | 190 | // ->method('getHost') |
@@ -200,8 +200,8 @@ discard block |
||
200 | 200 | ->will($this->returnValue($this->response)); |
201 | 201 | |
202 | 202 | $this->organization = $this->getMockBuilder('\Organizations\Entity\Organization') |
203 | - ->disableOriginalConstructor() |
|
204 | - ->getMock(); |
|
203 | + ->disableOriginalConstructor() |
|
204 | + ->getMock(); |
|
205 | 205 | |
206 | 206 | $this->organization->expects($this->at(0)) |
207 | 207 | ->method('__get') |
@@ -209,21 +209,21 @@ discard block |
||
209 | 209 | ->will($this->returnValue('name32')); |
210 | 210 | |
211 | 211 | $this->provider = $this->getMockBuilder('\Jobs\Options\ProviderOptions') |
212 | - ->disableOriginalConstructor() |
|
213 | - ->getMock(); |
|
212 | + ->disableOriginalConstructor() |
|
213 | + ->getMock(); |
|
214 | 214 | |
215 | 215 | $this->providerChannel = $this->getMockBuilder('\Jobs\Options\ChannelOptions') |
216 | - ->disableOriginalConstructor() |
|
217 | - ->getMock(); |
|
216 | + ->disableOriginalConstructor() |
|
217 | + ->getMock(); |
|
218 | 218 | |
219 | 219 | $this->providerChannel->expects($this->any()) |
220 | - ->method('__get') |
|
221 | - ->will($this->returnCallback($staticClassPrefix . 'providerChannelGetter')); |
|
220 | + ->method('__get') |
|
221 | + ->will($this->returnCallback($staticClassPrefix . 'providerChannelGetter')); |
|
222 | 222 | |
223 | 223 | $this->provider->expects($this->any(0)) |
224 | - ->method('__get') |
|
225 | - ->with('channels') |
|
226 | - ->willReturn(array('bbb value' => $this->providerChannel)); |
|
224 | + ->method('__get') |
|
225 | + ->with('channels') |
|
226 | + ->willReturn(array('bbb value' => $this->providerChannel)); |
|
227 | 227 | |
228 | 228 | $this->viewModel = $this->getMockBuilder('\Zend\View\Model\ViewModel') |
229 | 229 | ->disableOriginalConstructor() |
@@ -304,12 +304,12 @@ discard block |
||
304 | 304 | protected function setRestReturn($referenceUpdate, $applyIdUpdate) |
305 | 305 | { |
306 | 306 | $this->response->expects($this->any()) |
307 | - ->method('getBody') |
|
308 | - ->will($this->returnValue(json_encode( |
|
309 | - array( |
|
310 | - 'referenceUpdate' => $referenceUpdate, |
|
311 | - 'applyIdUpdate' => $applyIdUpdate |
|
312 | - )))); |
|
307 | + ->method('getBody') |
|
308 | + ->will($this->returnValue(json_encode( |
|
309 | + array( |
|
310 | + 'referenceUpdate' => $referenceUpdate, |
|
311 | + 'applyIdUpdate' => $applyIdUpdate |
|
312 | + )))); |
|
313 | 313 | } |
314 | 314 | |
315 | 315 |
@@ -110,7 +110,7 @@ discard block |
||
110 | 110 | |
111 | 111 | $this->target = new Publisher($this->serviceManager); |
112 | 112 | |
113 | - $staticClassPrefix = '\\' . __CLASS__ . '::'; |
|
113 | + $staticClassPrefix = '\\'.__CLASS__.'::'; |
|
114 | 114 | |
115 | 115 | $this->log = $this->getMockBuilder('\Zend\Log\Logger') |
116 | 116 | ->disableOriginalConstructor() |
@@ -164,7 +164,7 @@ discard block |
||
164 | 164 | |
165 | 165 | $this->publisher->expects($this->any()) |
166 | 166 | ->method('__set') |
167 | - ->will($this->returnCallback($staticClassPrefix . 'publisherSetter')); |
|
167 | + ->will($this->returnCallback($staticClassPrefix.'publisherSetter')); |
|
168 | 168 | |
169 | 169 | $this->htmlAbsPathFilter = $this->getMockBuilder('\Core\Filter\HtmlAbsPathFilter') |
170 | 170 | ->disableOriginalConstructor() |
@@ -172,7 +172,7 @@ discard block |
||
172 | 172 | |
173 | 173 | $this->htmlAbsPathFilter->expects($this->any()) |
174 | 174 | ->method('filter') |
175 | - ->will($this->returnCallback($staticClassPrefix . 'absPathFilter')); |
|
175 | + ->will($this->returnCallback($staticClassPrefix.'absPathFilter')); |
|
176 | 176 | |
177 | 177 | $this->filterManager = $this->getMockBuilder('\Zend\ServiceManager\ServiceManager') |
178 | 178 | ->disableOriginalConstructor() |
@@ -218,7 +218,7 @@ discard block |
||
218 | 218 | |
219 | 219 | $this->providerChannel->expects($this->any()) |
220 | 220 | ->method('__get') |
221 | - ->will($this->returnCallback($staticClassPrefix . 'providerChannelGetter')); |
|
221 | + ->will($this->returnCallback($staticClassPrefix.'providerChannelGetter')); |
|
222 | 222 | |
223 | 223 | $this->provider->expects($this->any(0)) |
224 | 224 | ->method('__get') |
@@ -107,7 +107,7 @@ |
||
107 | 107 | |
108 | 108 | $wf = new WorkflowSettings(); |
109 | 109 | $wf->setAcceptApplicationByDepartmentManager($flag('acceptApplication')) |
110 | - ->setAssignDepartmentManagersToJobs($flag('assignManagers')); |
|
110 | + ->setAssignDepartmentManagersToJobs($flag('assignManagers')); |
|
111 | 111 | |
112 | 112 | $org->expects($this->once())->method('getWorkflowSettings')->willReturn($wf); |
113 | 113 |
@@ -199,7 +199,7 @@ |
||
199 | 199 | |
200 | 200 | $actual = $this->target->__invoke($event); |
201 | 201 | |
202 | - $this->assertTrue(is_array($actual),'Listener did not return an array!'); |
|
202 | + $this->assertTrue(is_array($actual), 'Listener did not return an array!'); |
|
203 | 203 | $this->assertArrayHasKey('status', $actual); |
204 | 204 | $this->assertEquals('disabled', $actual['status']); |
205 | 205 | } |
@@ -65,19 +65,19 @@ discard block |
||
65 | 65 | |
66 | 66 | $privileges = array('new', 'test', 'edit'); |
67 | 67 | |
68 | - foreach(array($role, $user) as $testObj) |
|
68 | + foreach (array($role, $user) as $testObj) |
|
69 | 69 | { |
70 | 70 | // non user is always false? |
71 | - foreach($privileges as $p) |
|
71 | + foreach ($privileges as $p) |
|
72 | 72 | { |
73 | - $this->assertFalse((bool)$target->assert($acl, $testObj, null, $p)); |
|
73 | + $this->assertFalse((bool) $target->assert($acl, $testObj, null, $p)); |
|
74 | 74 | } |
75 | 75 | |
76 | 76 | // user and wrong privilege is false? |
77 | - foreach($privileges as $p) |
|
77 | + foreach ($privileges as $p) |
|
78 | 78 | { |
79 | 79 | // Casting null to false is safe here, 'edit' for pair user-privilege tested after |
80 | - $this->assertFalse((bool)$target->assert($acl, $testObj, $job, $p)); |
|
80 | + $this->assertFalse((bool) $target->assert($acl, $testObj, $job, $p)); |
|
81 | 81 | } |
82 | 82 | } |
83 | 83 | |
@@ -117,15 +117,15 @@ discard block |
||
117 | 117 | //$user->setOrganization($organization); |
118 | 118 | |
119 | 119 | /** Organization without user **/ |
120 | - $this->assertFalse( $assertion->checkOrganizationPermissions( $user, $job ) ); |
|
120 | + $this->assertFalse($assertion->checkOrganizationPermissions($user, $job)); |
|
121 | 121 | } |
122 | 122 | |
123 | 123 | /** |
124 | 124 | * @dataProvider assertParametersWithoutOrganization |
125 | 125 | */ |
126 | - public function testAssertWithoutOrganisation($input, $expected){ |
|
126 | + public function testAssertWithoutOrganisation($input, $expected) { |
|
127 | 127 | |
128 | - $method="assert".($expected?"True":"False"); |
|
128 | + $method = "assert".($expected ? "True" : "False"); |
|
129 | 129 | |
130 | 130 | $this->$method( |
131 | 131 | $this->target->assert( |
@@ -138,7 +138,7 @@ discard block |
||
138 | 138 | |
139 | 139 | } |
140 | 140 | |
141 | - public function assertParametersWithoutOrganization(){ |
|
141 | + public function assertParametersWithoutOrganization() { |
|
142 | 142 | |
143 | 143 | $userId = 1234; |
144 | 144 | $user = new User(); |
@@ -163,13 +163,13 @@ discard block |
||
163 | 163 | |
164 | 164 | |
165 | 165 | return [ |
166 | - [[new Acl(), null, null, null] , false ], |
|
167 | - [[new Acl(), null, null, Permissions::PERMISSION_CHANGE] , false ], |
|
168 | - [[new Acl(), $user, $jobMock, 'edit'] , true ], |
|
166 | + [[new Acl(), null, null, null], false], |
|
167 | + [[new Acl(), null, null, Permissions::PERMISSION_CHANGE], false], |
|
168 | + [[new Acl(), $user, $jobMock, 'edit'], true], |
|
169 | 169 | ]; |
170 | 170 | } |
171 | 171 | |
172 | - public function testAssertUserIsOrganizationAdmin(){ |
|
172 | + public function testAssertUserIsOrganizationAdmin() { |
|
173 | 173 | |
174 | 174 | $userId = 1234; |
175 | 175 | $user = new User(); |
@@ -192,13 +192,13 @@ discard block |
||
192 | 192 | $this->assertTrue( |
193 | 193 | $this->target->assert( |
194 | 194 | new Acl(), // acl |
195 | - $user, // role |
|
196 | - $jobMock, // resource |
|
195 | + $user, // role |
|
196 | + $jobMock, // resource |
|
197 | 197 | 'edit' // privilege |
198 | 198 | )); |
199 | 199 | } |
200 | 200 | |
201 | - public function testAssertUserIsOwnerOfTheParentOrganization(){ |
|
201 | + public function testAssertUserIsOwnerOfTheParentOrganization() { |
|
202 | 202 | |
203 | 203 | $userId = 1234; |
204 | 204 | $user = new User(); |
@@ -225,13 +225,13 @@ discard block |
||
225 | 225 | $this->assertTrue( |
226 | 226 | $this->target->assert( |
227 | 227 | new Acl(), // acl |
228 | - $user, // role |
|
229 | - $jobMock, // resource |
|
228 | + $user, // role |
|
229 | + $jobMock, // resource |
|
230 | 230 | 'edit' // privilege |
231 | 231 | )); |
232 | 232 | } |
233 | 233 | |
234 | - public function testUserIsEmployeeWithJobsChangePermissions(){ |
|
234 | + public function testUserIsEmployeeWithJobsChangePermissions() { |
|
235 | 235 | |
236 | 236 | $userId = 1234; |
237 | 237 | $user = new User(); |
@@ -265,8 +265,8 @@ discard block |
||
265 | 265 | $this->assertTrue( |
266 | 266 | $this->target->assert( |
267 | 267 | new Acl(), // acl |
268 | - $user, // role |
|
269 | - $jobMock, // resource |
|
268 | + $user, // role |
|
269 | + $jobMock, // resource |
|
270 | 270 | 'edit' // privilege |
271 | 271 | )); |
272 | 272 | } |
@@ -2,7 +2,7 @@ |
||
2 | 2 | $commonModules = include_once __DIR__.'/../../../config/common.modules.php'; |
3 | 3 | |
4 | 4 | return array( |
5 | - 'modules' => array_merge($commonModules,array( |
|
5 | + 'modules' => array_merge($commonModules, array( |
|
6 | 6 | 'Core', |
7 | 7 | 'Auth', |
8 | 8 | 'Jobs', |
@@ -1,6 +1,6 @@ |
||
1 | 1 | <?php |
2 | 2 | |
3 | 3 | /** @var array $testConfig */ |
4 | -$testConfig = include __DIR__ . '/TestConfig.php'; |
|
4 | +$testConfig = include __DIR__.'/TestConfig.php'; |
|
5 | 5 | |
6 | -require_once __DIR__ . '/../../../test/Bootstrap.php'; |
|
6 | +require_once __DIR__.'/../../../test/Bootstrap.php'; |
@@ -6,9 +6,9 @@ discard block |
||
6 | 6 | // This should be an array of module namespaces used in the application. |
7 | 7 | 'modules' => array_merge($commonModules,array( |
8 | 8 | 'Core', |
9 | - 'Auth', |
|
10 | - 'Jobs', |
|
11 | - 'Organizations', |
|
9 | + 'Auth', |
|
10 | + 'Jobs', |
|
11 | + 'Organizations', |
|
12 | 12 | )), |
13 | 13 | |
14 | 14 | // These are various options for the listeners attached to the ModuleManager |
@@ -64,7 +64,7 @@ discard block |
||
64 | 64 | // ), |
65 | 65 | // ) |
66 | 66 | |
67 | - // Initial configuration with which to seed the ServiceManager. |
|
68 | - // Should be compatible with Zend\ServiceManager\Config. |
|
69 | - // 'service_manager' => array(), |
|
67 | + // Initial configuration with which to seed the ServiceManager. |
|
68 | + // Should be compatible with Zend\ServiceManager\Config. |
|
69 | + // 'service_manager' => array(), |
|
70 | 70 | ); |
@@ -4,7 +4,7 @@ |
||
4 | 4 | |
5 | 5 | return array( |
6 | 6 | // This should be an array of module namespaces used in the application. |
7 | - 'modules' => array_merge($commonModules,array( |
|
7 | + 'modules' => array_merge($commonModules, array( |
|
8 | 8 | 'Core', |
9 | 9 | 'Auth', |
10 | 10 | 'Jobs', |