Skip to content

Commit 65c5478

Browse files
carsonreinkem1guelpf
authored andcommitted
Project must iterate through results to create models
Add test for group model returning projects
1 parent 0fa7752 commit 65c5478

File tree

2 files changed

+65
-2
lines changed

2 files changed

+65
-2
lines changed

lib/Gitlab/Model/Group.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,13 @@ public function removeMember($user_id)
132132
public function projects()
133133
{
134134
$data = $this->client->groups()->projects($this->id);
135-
136-
return Project::fromArray($this->getClient(), $data);
135+
136+
$projects = array();
137+
foreach ($data as $project) {
138+
$projects[] = Project::fromArray($this->getClient(), $project);
139+
}
140+
141+
return $projects;
137142
}
138143

139144
/**

test/Gitlab/Tests/Model/GroupTest.php

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
3+
namespace Gitlab\Tests\Model;
4+
5+
use Gitlab\Client;
6+
use Gitlab\Model\Group;
7+
use Gitlab\Model\Project;
8+
use PHPUnit\Framework\TestCase;
9+
use Gitlab\Api\Groups;
10+
use Gitlab\Api\Projects;
11+
12+
class GroupTest extends TestCase
13+
{
14+
private function getGroupMock(array $data = [])
15+
{
16+
$client = $this->getMockBuilder(Client::class)
17+
->disableOriginalConstructor()
18+
->getMock();
19+
20+
return Group::fromArray($client, $data);
21+
}
22+
23+
public function testProjects()
24+
{
25+
$group_data = [
26+
'id' => 1,
27+
'name' => 'Grouped',
28+
'path' => '',
29+
'description' => 'Amazing group. Wow'
30+
];
31+
$project_data = [
32+
'id' => 1,
33+
'name' => 'A Project'
34+
];
35+
36+
//Mock API methods
37+
$client = $this->getMockBuilder(Client::class)
38+
->disableOriginalConstructor()
39+
->getMock()
40+
;
41+
$groups = $this->getMockBuilder(Groups::class)
42+
->disableOriginalConstructor()
43+
->getMock()
44+
;
45+
$client->method('groups')->willReturn($groups);
46+
$groups->method('projects')->willReturn([$project_data]);
47+
48+
//Create model objects
49+
$group = Group::fromArray($client, $group_data);
50+
$projects = $group->projects();
51+
$this->assertSame(1, count($projects));
52+
53+
$project = $projects[0];
54+
$this->assertInstanceOf(Project::class, $project);
55+
$this->assertSame($project_data['id'], $project->id);
56+
$this->assertSame($project_data['name'], $project->name);
57+
}
58+
}

0 commit comments

Comments
 (0)