1<?php
2/**
3 * OrangeHRM is a comprehensive Human Resource Management (HRM) System that captures
4 * all the essential functionalities required for any enterprise.
5 * Copyright (C) 2006 OrangeHRM Inc., http://www.orangehrm.com
6 *
7 * OrangeHRM is free software; you can redistribute it and/or modify it under the terms of
8 * the GNU General Public License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * OrangeHRM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 * See the GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along with this program;
16 * if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA  02110-1301, USA
18 */
19
20
21/**
22 * Test classes
23 *
24 * @group API
25 */
26
27use Orangehrm\Rest\Api\Leave\LeaveEntitlementAPI;
28use Orangehrm\Rest\Api\Leave\Entity\LeaveEntitlement;
29use Orangehrm\Rest\Http\Request;
30use Orangehrm\Rest\Http\Response;
31
32class ApiLeaveEntitlementAPITest extends PHPUnit_Framework_TestCase
33{
34    private $entitlementApi;
35
36    /**
37     * Set up method
38     */
39    protected function setUp()
40    {
41        $sfEvent = new sfEventDispatcher();
42        $sfRequest = new sfWebRequest($sfEvent);
43        $request = new Request($sfRequest);
44        $this->entitlementApi = new LeaveEntitlementAPI($request);
45
46    }
47
48    public function testSaveEntitlement()
49    {
50        $requestParams = $this->getMockBuilder('\Orangehrm\Rest\Http\RequestParams')
51            ->disableOriginalConstructor()
52            ->setMethods(array('getUrlParam'))
53            ->getMock();
54        $requestParams->expects($this->any())
55            ->method('getUrlParam')
56            ->with('id')
57            ->will($this->returnValue(1));
58
59        $sfEvent   = new sfEventDispatcher();
60        $sfRequest = new sfWebRequest($sfEvent);
61        $request = new Request($sfRequest);
62
63        $leaveEntitlement = new \LeaveEntitlement();
64        $leaveEntitlement->setLeaveTypeId('1');
65        $leaveEntitlement->setEmpNumber(32);
66        $leaveEntitlement->setNoOfDays(14);
67        $leaveEntitlement->setFromDate('2016-04-20');
68        $leaveEntitlement->setToDate('2017-04-20');
69        $leaveEntitlement->setEntitlementType(1);
70
71        $entitlementsCollection = new Doctrine_Collection('LeaveEntitlement');
72        $entitlementsCollection[] = $leaveEntitlement;
73
74        $entitlementApi = $this->getMockBuilder('Orangehrm\Rest\Api\Leave\LeaveEntitlementAPI')
75            ->setMethods(array('createEntitlement'))
76            ->setConstructorArgs(array($request))
77            ->getMock();
78        $entitlementApi->expects($this->once())
79            ->method('createEntitlement')
80            ->will($this->returnValue($leaveEntitlement));
81
82
83        $entitlementApi->setRequestParams($requestParams);
84
85        $entitlementService = $this->getMockBuilder('LeaveEntitlementService')->getMock();
86        $entitlementService->expects($this->any())
87            ->method('saveLeaveEntitlement')
88            ->with($leaveEntitlement)
89            ->will($this->returnValue($entitlementsCollection));
90
91        $entitlementApi->setLeaveEntitlementService($entitlementService);
92        $ResponseReturned = $entitlementApi->saveEntitlement($leaveEntitlement);
93
94        $success =  new Response(array('success' => 'Successfully Saved'), array());
95
96        $this->assertEquals($success, $ResponseReturned);
97
98    }
99
100    public function testGetLeaveEntitlements()
101    {
102        $requestParams = $this->getMockBuilder('\Orangehrm\Rest\Http\RequestParams')
103            ->disableOriginalConstructor()
104            ->setMethods(array('getUrlParam'))
105            ->getMock();
106        $requestParams->expects($this->any())
107            ->method('getUrlParam')
108            ->with('id')
109            ->will($this->returnValue(1));
110
111        $sfEvent   = new sfEventDispatcher();
112        $sfRequest = new sfWebRequest($sfEvent);
113        $request = new Request($sfRequest);
114
115        $leaveEntitlement = new \LeaveEntitlement();
116        $leaveEntitlement->setLeaveTypeId(1);
117        $leaveEntitlement->setEmpNumber(32);
118        $leaveEntitlement->setNoOfDays(14);
119        $leaveEntitlement->setFromDate('2016-04-20');
120        $leaveEntitlement->setToDate('2017-04-20');
121        $leaveEntitlement->setEntitlementType(1);
122        $leaveEntitlement->setId(1);
123
124        $entitlementsCollection = new Doctrine_Collection('LeaveEntitlement');
125        $entitlementsCollection[] = $leaveEntitlement;
126        $searchParameters = new \LeaveEntitlementSearchParameterHolder();
127        $leaveEntitlementEntity = new LeaveEntitlement(1);
128        $leaveEntitlementEntity->buildEntitlement($leaveEntitlement);
129
130        $searchParameters->setEmpNumber(32);
131        $searchParameters->setLeaveTypeId(1);
132        $searchParameters->setFromDate('2016-04-20');
133        $searchParameters->setToDate('2017-04-20');
134
135        $entitlementApi = $this->getMockBuilder('Orangehrm\Rest\Api\Leave\LeaveEntitlementAPI')
136            ->setMethods(array('getFilters'))
137            ->setConstructorArgs(array($request))
138            ->getMock();
139        $entitlementApi->expects($this->once())
140            ->method('getFilters')
141            ->will($this->returnValue($searchParameters));
142
143        $entitlementApi->setRequestParams($requestParams);
144
145        $entitlementService = $this->getMockBuilder('LeaveEntitlementService')->getMock();
146        $entitlementService->expects($this->any())
147            ->method('searchLeaveEntitlements')
148            ->with($searchParameters)
149            ->will($this->returnValue($entitlementsCollection));
150
151        $entitlementApi->setLeaveEntitlementService($entitlementService);
152        $ResponseReturned = $entitlementApi->getLeaveEntitlements();
153        $testResponse = null;
154        $testResponse[] = $leaveEntitlementEntity->toArray();
155
156
157        $success =  new Response($testResponse, array());
158
159        $this->assertEquals($success, $ResponseReturned);
160
161    }
162
163
164}