Skip to content

Commit b211fe7

Browse files
glaubinixm1guelpf
authored andcommitted
Group: add additional model properties
1 parent e017a71 commit b211fe7

File tree

2 files changed

+76
-6
lines changed

2 files changed

+76
-6
lines changed

lib/Gitlab/Model/Group.php

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,17 @@
99
* @property-read string $name
1010
* @property-read string $path
1111
* @property-read string $description
12+
* @property-read string $visibility
13+
* @property-read bool $lfs_enabled
14+
* @property-read string $avatar_url
15+
* @property-read string $web_url
16+
* @property-read bool $request_access_enabled
17+
* @property-read string $full_name
18+
* @property-read string $full_path
19+
* @property-read int $file_template_project_id
20+
* @property-read int|null $parent_id
1221
* @property-read Project[] $projects
22+
* @property-read Project[] $shared_projects
1323
*/
1424
class Group extends AbstractModel
1525
{
@@ -21,7 +31,17 @@ class Group extends AbstractModel
2131
'name',
2232
'path',
2333
'description',
24-
'projects'
34+
'visibility',
35+
'lfs_enabled',
36+
'avatar_url',
37+
'web_url',
38+
'request_access_enabled',
39+
'full_name',
40+
'full_path',
41+
'file_template_project_id',
42+
'parent_id',
43+
'projects',
44+
'shared_projects',
2545
);
2646

2747
/**
@@ -41,6 +61,14 @@ public static function fromArray(Client $client, array $data)
4161
$data['projects'] = $projects;
4262
}
4363

64+
if (isset($data['shared_projects'])) {
65+
$projects = array();
66+
foreach ($data['shared_projects'] as $project) {
67+
$projects[] = Project::fromArray($client, $project);
68+
}
69+
$data['shared_projects'] = $projects;
70+
}
71+
4472
return $group->hydrate($data);
4573
}
4674

@@ -132,12 +160,12 @@ public function removeMember($user_id)
132160
public function projects()
133161
{
134162
$data = $this->client->groups()->projects($this->id);
135-
163+
136164
$projects = array();
137165
foreach ($data as $project) {
138166
$projects[] = Project::fromArray($this->getClient(), $project);
139167
}
140-
168+
141169
return $projects;
142170
}
143171

test/Gitlab/Tests/Model/GroupTest.php

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,59 @@
77
use Gitlab\Model\Project;
88
use PHPUnit\Framework\TestCase;
99
use Gitlab\Api\Groups;
10-
use Gitlab\Api\Projects;
1110

1211
class GroupTest extends TestCase
1312
{
14-
private function getGroupMock(array $data = [])
13+
public function testFromArray()
1514
{
1615
$client = $this->getMockBuilder(Client::class)
1716
->disableOriginalConstructor()
1817
->getMock();
1918

20-
return Group::fromArray($client, $data);
19+
$data = [
20+
'id' => 1,
21+
'name' => 'Foobar Group',
22+
'path' => 'foo-bar',
23+
'description' => 'An interesting group',
24+
'visibility' => 'public',
25+
'lfs_enabled' => true,
26+
'avatar_url' => 'http://localhost:3000/uploads/group/avatar/1/foo.jpg',
27+
'web_url' => 'http://localhost:3000/groups/foo-bar',
28+
'request_access_enabled' => false,
29+
'full_name' => 'Foobar Group',
30+
'full_path' => 'foo-bar',
31+
'file_template_project_id' => 1,
32+
'parent_id' => null,
33+
'projects' => [
34+
['id' => 1],
35+
],
36+
'shared_projects' => [
37+
['id' => 2],
38+
],
39+
];
40+
41+
$group = Group::fromArray($client, $data);
42+
43+
$this->assertInstanceOf(Group::class, $group);
44+
$this->assertSame($data['id'], $group->id);
45+
$this->assertSame($data['name'], $group->name);
46+
$this->assertSame($data['path'], $group->path);
47+
$this->assertSame($data['description'], $group->description);
48+
$this->assertSame($data['visibility'], $group->visibility);
49+
$this->assertSame($data['lfs_enabled'], $group->lfs_enabled);
50+
$this->assertSame($data['avatar_url'], $group->avatar_url);
51+
$this->assertSame($data['web_url'], $group->web_url);
52+
$this->assertSame($data['request_access_enabled'], $group->request_access_enabled);
53+
$this->assertSame($data['full_name'], $group->full_name);
54+
$this->assertSame($data['full_path'], $group->full_path);
55+
$this->assertSame($data['file_template_project_id'], $group->file_template_project_id);
56+
$this->assertSame($data['parent_id'], $group->parent_id);
57+
58+
$this->assertCount(1, $group->projects);
59+
$this->assertInstanceOf(Project::class, $group->projects[0]);
60+
61+
$this->assertCount(1, $group->shared_projects);
62+
$this->assertInstanceOf(Project::class, $group->shared_projects[0]);
2163
}
2264

2365
public function testProjects()

0 commit comments

Comments
 (0)