| 
 | 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