Skip to content

Commit e49fba7

Browse files
[11.5] Add approval rules endpoints (#641)
1 parent ff78c2a commit e49fba7

File tree

2 files changed

+97
-0
lines changed

2 files changed

+97
-0
lines changed

src/Api/Projects.php

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1208,6 +1208,40 @@ public function approvalsRules($project_id)
12081208
return $this->get('projects/'.self::encodePath($project_id).'/approval_rules');
12091209
}
12101210

1211+
/**
1212+
* @param int|string $project_id
1213+
* @param array $parameters
1214+
*
1215+
* @return mixed
1216+
*/
1217+
public function createApprovalsRule($project_id, array $parameters = [])
1218+
{
1219+
return $this->post('projects/'.self::encodePath($project_id).'/approval_rules/', $parameters);
1220+
}
1221+
1222+
/**
1223+
* @param int|string $project_id
1224+
* @param int $approval_rule_id
1225+
* @param array $parameters
1226+
*
1227+
* @return mixed
1228+
*/
1229+
public function updateApprovalsRule($project_id, int $approval_rule_id, array $parameters = [])
1230+
{
1231+
return $this->put('projects/'.self::encodePath($project_id).'/approval_rules/'.self::encodePath($approval_rule_id), $parameters);
1232+
}
1233+
1234+
/**
1235+
* @param int|string $project_id
1236+
* @param int $approval_rule_id
1237+
*
1238+
* @return mixed
1239+
*/
1240+
public function deleteApprovalsRule($project_id, int $approval_rule_id)
1241+
{
1242+
return $this->delete('projects/'.self::encodePath($project_id).'/approval_rules/'.self::encodePath($approval_rule_id));
1243+
}
1244+
12111245
/**
12121246
* @param int|string $project_id
12131247
*

tests/Api/ProjectsTest.php

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2270,6 +2270,69 @@ public function shoudGetApprovalsRules(): void
22702270
$this->assertEquals($expectedArray, $api->approvalsRules(1));
22712271
}
22722272

2273+
/**
2274+
* @test
2275+
*/
2276+
public function shoudCreateApprovalsRule(): void
2277+
{
2278+
$expectedArray = [
2279+
[
2280+
'id' => 1,
2281+
'name' => 'All Members',
2282+
'rule_type' => 'any_approver',
2283+
],
2284+
];
2285+
2286+
$api = $this->getApiMock();
2287+
$api->expects($this->once())
2288+
->method('post')
2289+
->with('projects/1/approval_rules/', ['name' => 'All Members', 'rule_type' => 'any_approver'])
2290+
->will($this->returnValue($expectedArray));
2291+
2292+
$this->assertEquals($expectedArray, $api->createApprovalsRule(1, [
2293+
'name' => 'All Members',
2294+
'rule_type' => 'any_approver',
2295+
]));
2296+
}
2297+
2298+
/**
2299+
* @test
2300+
*/
2301+
public function shoudUpdateApprovalsRule(): void
2302+
{
2303+
$expectedArray = [
2304+
[
2305+
'name' => 'Updated Name',
2306+
],
2307+
];
2308+
2309+
$api = $this->getApiMock();
2310+
$api->expects($this->once())
2311+
->method('put')
2312+
->with('projects/1/approval_rules/1', ['name' => 'Updated Name'])
2313+
->will($this->returnValue($expectedArray));
2314+
2315+
$this->assertEquals($expectedArray, $api->updateApprovalsRule(1, 1, [
2316+
'name' => 'Updated Name',
2317+
]));
2318+
}
2319+
2320+
/**
2321+
* @test
2322+
*/
2323+
public function shoudDeleteApprovalsRule(): void
2324+
{
2325+
$expectedBool = true;
2326+
2327+
$api = $this->getApiMock();
2328+
$api->expects($this->once())
2329+
->method('delete')
2330+
->with('projects/1/approval_rules/1')
2331+
->will($this->returnValue($expectedBool));
2332+
2333+
$this->assertEquals($expectedBool, $api->deleteApprovalsRule(1, 1));
2334+
}
2335+
22732336
/**
22742337
* @test
22752338
*/

0 commit comments

Comments
 (0)