Skip to content

Commit 7c9d379

Browse files
Correct project forks list parameters (#896)
1 parent fa2db9a commit 7c9d379

3 files changed

Lines changed: 47 additions & 46 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1515
* Add support for `Projects::updateDeployKey`
1616
* Add support for project push rules
1717
* Add support for additional parameters in `Projects::fork`
18+
* Correct project forks list parameter handling
1819
* Add support for group hook endpoints
1920
* Add support for `job_inputs` and `job_variables_attributes` in `Jobs::play`
2021
* Add support for `inputs` in `Projects::createPipeline`

src/Api/Projects.php

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -849,28 +849,29 @@ public function languages(int|string $project_id): mixed
849849
* @param array $parameters {
850850
*
851851
* @var bool $archived Limit by archived status
852-
* @var string $visibility Limit by visibility public, internal, or private
853-
* @var string $order_by Return projects ordered by id, name, path, created_at, updated_at,
854-
* last_activity_at, repository_size, storage_size, packages_size or
855-
* wiki_size fields (default is created_at)
856-
* @var string $sort Return projects sorted in asc or desc order (default is desc)
857-
* @var string $search Return list of projects matching the search criteria
858-
* @var bool $simple Return only the ID, URL, name, and path of each project
859-
* @var bool $owned Limit by projects owned by the current user
860852
* @var bool $membership Limit by projects that the current user is a member of
853+
* @var int $min_access_level Limit by current user minimal access level
854+
* @var string $order_by Return projects ordered by id, name, path, created_at, updated_at, star_count, or last_activity_at
855+
* @var bool $owned Limit by projects owned by the current user
856+
* @var string $search Return list of projects matching the search criteria
857+
* @var bool $simple Return only limited fields for each project
858+
* @var string $sort Return projects sorted in asc or desc order
861859
* @var bool $starred Limit by projects starred by the current user
862860
* @var bool $statistics Include project statistics
861+
* @var \DateTimeInterface $updated_after Limit results to projects last updated after the specified time
862+
* @var \DateTimeInterface $updated_before Limit results to projects last updated before the specified time
863+
* @var string $visibility Limit by visibility public, internal, or private
864+
* @var bool $with_custom_attributes Include custom attributes in response
863865
* @var bool $with_issues_enabled Limit by enabled issues feature
864866
* @var bool $with_merge_requests_enabled Limit by enabled merge requests feature
865-
* @var int $min_access_level Limit by current user minimal access level
866-
* @var \DateTimeInterface $updated_before limit results to projects last updated before the specified time
867-
* @var \DateTimeInterface $updated_after limit results to projects last updated after the specified time
868-
* @var bool $with_custom_attributes Include custom attributes in response
869867
* }
868+
*
869+
* @throws UndefinedOptionsException If an option name is undefined
870+
* @throws InvalidOptionsException If an option doesn't fulfill the specified validation rules
870871
*/
871872
public function forks(int|string $project_id, array $parameters = []): mixed
872873
{
873-
$resolver = $this->createOptionsResolver();
874+
$resolver = new OptionsResolver();
874875
$booleanNormalizer = function (Options $resolver, $value): string {
875876
return $value ? 'true' : 'false';
876877
};
@@ -881,31 +882,30 @@ public function forks(int|string $project_id, array $parameters = []): mixed
881882
->setAllowedTypes('archived', 'bool')
882883
->setNormalizer('archived', $booleanNormalizer)
883884
;
884-
$resolver->setDefined('visibility')
885-
->setAllowedValues('visibility', ['public', 'internal', 'private'])
885+
$resolver->setDefined('membership')
886+
->setAllowedTypes('membership', 'bool')
887+
->setNormalizer('membership', $booleanNormalizer)
886888
;
887-
$orderBy = [
888-
'id', 'name', 'path', 'created_at', 'updated_at', 'last_activity_at',
889-
'repository_size', 'storage_size', 'packages_size', 'wiki_size',
890-
];
889+
$resolver->setDefined('min_access_level')
890+
->setAllowedValues('min_access_level', [null, 5, 10, 15, 20, 25, 30, 40, 50])
891+
;
892+
$orderBy = ['id', 'name', 'path', 'created_at', 'updated_at', 'star_count', 'last_activity_at'];
891893
$resolver->setDefined('order_by')
892894
->setAllowedValues('order_by', $orderBy)
893895
;
894-
$resolver->setDefined('sort')
895-
->setAllowedValues('sort', ['asc', 'desc'])
896+
$resolver->setDefined('owned')
897+
->setAllowedTypes('owned', 'bool')
898+
->setNormalizer('owned', $booleanNormalizer)
899+
;
900+
$resolver->setDefined('search')
901+
->setAllowedTypes('search', 'string')
896902
;
897-
$resolver->setDefined('search');
898903
$resolver->setDefined('simple')
899904
->setAllowedTypes('simple', 'bool')
900905
->setNormalizer('simple', $booleanNormalizer)
901906
;
902-
$resolver->setDefined('owned')
903-
->setAllowedTypes('owned', 'bool')
904-
->setNormalizer('owned', $booleanNormalizer)
905-
;
906-
$resolver->setDefined('membership')
907-
->setAllowedTypes('membership', 'bool')
908-
->setNormalizer('membership', $booleanNormalizer)
907+
$resolver->setDefined('sort')
908+
->setAllowedValues('sort', ['asc', 'desc'])
909909
;
910910
$resolver->setDefined('starred')
911911
->setAllowedTypes('starred', 'bool')
@@ -915,29 +915,29 @@ public function forks(int|string $project_id, array $parameters = []): mixed
915915
->setAllowedTypes('statistics', 'bool')
916916
->setNormalizer('statistics', $booleanNormalizer)
917917
;
918-
$resolver->setDefined('with_issues_enabled')
919-
->setAllowedTypes('with_issues_enabled', 'bool')
920-
->setNormalizer('with_issues_enabled', $booleanNormalizer)
921-
;
922-
$resolver->setDefined('with_merge_requests_enabled')
923-
->setAllowedTypes('with_merge_requests_enabled', 'bool')
924-
->setNormalizer('with_merge_requests_enabled', $booleanNormalizer)
925-
;
926-
$resolver->setDefined('min_access_level')
927-
->setAllowedValues('min_access_level', [null, 10, 20, 30, 40, 50])
918+
$resolver->setDefined('updated_after')
919+
->setAllowedTypes('updated_after', \DateTimeInterface::class)
920+
->setNormalizer('updated_after', $datetimeNormalizer)
928921
;
929922
$resolver->setDefined('updated_before')
930923
->setAllowedTypes('updated_before', \DateTimeInterface::class)
931924
->setNormalizer('updated_before', $datetimeNormalizer)
932925
;
933-
$resolver->setDefined('updated_after')
934-
->setAllowedTypes('updated_after', \DateTimeInterface::class)
935-
->setNormalizer('updated_after', $datetimeNormalizer)
926+
$resolver->setDefined('visibility')
927+
->setAllowedValues('visibility', ['public', 'internal', 'private'])
936928
;
937929
$resolver->setDefined('with_custom_attributes')
938930
->setAllowedTypes('with_custom_attributes', 'bool')
939931
->setNormalizer('with_custom_attributes', $booleanNormalizer)
940932
;
933+
$resolver->setDefined('with_issues_enabled')
934+
->setAllowedTypes('with_issues_enabled', 'bool')
935+
->setNormalizer('with_issues_enabled', $booleanNormalizer)
936+
;
937+
$resolver->setDefined('with_merge_requests_enabled')
938+
->setAllowedTypes('with_merge_requests_enabled', 'bool')
939+
->setNormalizer('with_merge_requests_enabled', $booleanNormalizer)
940+
;
941941

942942
return $this->get($this->getProjectPath($project_id, 'forks'), $resolver->resolve($parameters));
943943
}

tests/Api/ProjectsTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2120,7 +2120,7 @@ public function shouldGetForksUsingParameters(): void
21202120
->with('projects/1/forks', [
21212121
'archived' => 'false',
21222122
'visibility' => 'public',
2123-
'order_by' => 'id',
2123+
'order_by' => 'star_count',
21242124
'sort' => 'asc',
21252125
'search' => 'term',
21262126
'simple' => 'true',
@@ -2130,7 +2130,7 @@ public function shouldGetForksUsingParameters(): void
21302130
'statistics' => 'false',
21312131
'with_issues_enabled' => 'false',
21322132
'with_merge_requests_enabled' => 'false',
2133-
'min_access_level' => 30,
2133+
'min_access_level' => 15,
21342134
'updated_after' => $updated_after->format('c'),
21352135
'updated_before' => $updated_before->format('c'),
21362136
'with_custom_attributes' => 'true',
@@ -2140,7 +2140,7 @@ public function shouldGetForksUsingParameters(): void
21402140
$this->assertEquals($expectedArray, $api->forks(1, [
21412141
'archived' => false,
21422142
'visibility' => 'public',
2143-
'order_by' => 'id',
2143+
'order_by' => 'star_count',
21442144
'sort' => 'asc',
21452145
'search' => 'term',
21462146
'simple' => true,
@@ -2150,7 +2150,7 @@ public function shouldGetForksUsingParameters(): void
21502150
'statistics' => false,
21512151
'with_issues_enabled' => false,
21522152
'with_merge_requests_enabled' => false,
2153-
'min_access_level' => 30,
2153+
'min_access_level' => 15,
21542154
'updated_after' => $updated_after,
21552155
'updated_before' => $updated_before,
21562156
'with_custom_attributes' => true,

0 commit comments

Comments
 (0)