/src/plugins/orangehrmPimPlugin/test/Dao/EmployeeLanguageDaoTest.php

https://github.com/orangehrm/OrangeHRM · PHP · 237 lines · 184 code · 31 blank · 22 comment · 0 complexity · 7e6abe82003b8bda6159186d44f6fa8d MD5 · raw file

  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. namespace OrangeHRM\Tests\Pim\Dao;
  20. use OrangeHRM\Config\Config;
  21. use OrangeHRM\Entity\Employee;
  22. use OrangeHRM\Entity\EmployeeLanguage;
  23. use OrangeHRM\Entity\Language;
  24. use OrangeHRM\Pim\Dao\EmployeeLanguageDao;
  25. use OrangeHRM\Pim\Dto\EmployeeAllowedLanguageSearchFilterParams;
  26. use OrangeHRM\Pim\Dto\EmployeeLanguagesSearchFilterParams;
  27. use OrangeHRM\Tests\Util\TestCase;
  28. use OrangeHRM\Tests\Util\TestDataService;
  29. /**
  30. * @group Pim
  31. * @group Dao
  32. */
  33. class EmployeeLanguageDaoTest extends TestCase
  34. {
  35. private EmployeeLanguageDao $employeeLanguageDao;
  36. protected string $fixture;
  37. protected function setUp(): void
  38. {
  39. $this->employeeLanguageDao = new EmployeeLanguageDao();
  40. $this->fixture = Config::get(Config::PLUGINS_DIR) . '/orangehrmPimPlugin/test/fixtures/EmployeeLanguageDao.yml';
  41. TestDataService::populate($this->fixture);
  42. }
  43. public function testSaveEmployeeLanguage(): void
  44. {
  45. $employee = $this->getEntityReference(Employee::class, 3);
  46. $language = $this->getEntityReference(Language::class, 1);
  47. $empLanguage = new EmployeeLanguage();
  48. $empLanguage->setEmployee($employee);
  49. $empLanguage->setLanguage($language);
  50. $empLanguage->setFluency(1);
  51. $empLanguage->setCompetency(1);
  52. $empLanguage->setComment('Test');
  53. $this->employeeLanguageDao->saveEmployeeLanguage($empLanguage);
  54. /** @var EmployeeLanguage $resultEmpLanguage */
  55. $resultEmpLanguage = $this->getEntityManager()->getRepository(EmployeeLanguage::class)->findOneBy(
  56. [
  57. 'employee' => 3,
  58. 'language' => 1,
  59. 'fluency' => 1,
  60. ]
  61. );
  62. $this->assertEquals('Tyler', $resultEmpLanguage->getEmployee()->getFirstName());
  63. $this->assertEquals('English', $resultEmpLanguage->getLanguage()->getName());
  64. $this->assertEquals('Writing', $resultEmpLanguage->getDecorator()->getFluency());
  65. $this->assertEquals('Poor', $resultEmpLanguage->getDecorator()->getCompetency());
  66. $this->assertEquals('Test', $resultEmpLanguage->getComment());
  67. }
  68. public function testGetEmployeeLanguage(): void
  69. {
  70. $resultEmpLanguage = $this->employeeLanguageDao->getEmployeeLanguage(1, 2, 1);
  71. $this->assertEquals('Kayla', $resultEmpLanguage->getEmployee()->getFirstName());
  72. $this->assertEquals('Spanish', $resultEmpLanguage->getLanguage()->getName());
  73. $this->assertEquals('Writing', $resultEmpLanguage->getDecorator()->getFluency());
  74. $this->assertEquals('Basic', $resultEmpLanguage->getDecorator()->getCompetency());
  75. $this->assertEquals('comment2', $resultEmpLanguage->getComment());
  76. $resultEmpLanguage = $this->employeeLanguageDao->getEmployeeLanguage(100, 2, 1);
  77. $this->assertNull($resultEmpLanguage);
  78. $resultEmpLanguage = $this->employeeLanguageDao->getEmployeeLanguage(1, 200, 1);
  79. $this->assertNull($resultEmpLanguage);
  80. $resultEmpLanguage = $this->employeeLanguageDao->getEmployeeLanguage(1, 1, 1);
  81. $this->assertNull($resultEmpLanguage);
  82. }
  83. public function testSearchEmployeeLanguages(): void
  84. {
  85. $employeeLanguagesSearchFilterParams = new EmployeeLanguagesSearchFilterParams();
  86. $empLanguages = $this->employeeLanguageDao->getEmployeeLanguages($employeeLanguagesSearchFilterParams);
  87. $this->assertEmpty($empLanguages);
  88. $employeeLanguagesSearchFilterParams->setEmpNumber(1);
  89. $empLanguages = $this->employeeLanguageDao->getEmployeeLanguages($employeeLanguagesSearchFilterParams);
  90. $this->assertCount(2, $empLanguages);
  91. $resultEmpLanguage = $empLanguages[0];
  92. $this->assertEquals('Kayla', $resultEmpLanguage->getEmployee()->getFirstName());
  93. $this->assertEquals('English', $resultEmpLanguage->getLanguage()->getName());
  94. }
  95. public function testGetSearchEmployeeLanguagesCount(): void
  96. {
  97. $employeeLanguagesSearchFilterParams = new EmployeeLanguagesSearchFilterParams();
  98. $empLanguagesCount = $this->employeeLanguageDao->getEmployeeLanguagesCount(
  99. $employeeLanguagesSearchFilterParams
  100. );
  101. $this->assertEquals(0, $empLanguagesCount);
  102. $employeeLanguagesSearchFilterParams->setEmpNumber(1);
  103. $empLanguagesCount = $this->employeeLanguageDao->getEmployeeLanguagesCount(
  104. $employeeLanguagesSearchFilterParams
  105. );
  106. $this->assertEquals(2, $empLanguagesCount);
  107. $employeeLanguagesSearchFilterParams->setEmpNumber(2);
  108. $empLanguagesCount = $this->employeeLanguageDao->getEmployeeLanguagesCount(
  109. $employeeLanguagesSearchFilterParams
  110. );
  111. $this->assertEquals(1, $empLanguagesCount);
  112. }
  113. public function testGetEmployeeLanguagesWithLanguageIds(): void
  114. {
  115. $employeeLanguagesSearchFilterParams = new EmployeeLanguagesSearchFilterParams();
  116. $employeeLanguagesSearchFilterParams->setEmpNumber(1);
  117. $employeeLanguagesSearchFilterParams->setLanguageIds([1]);
  118. $empLanguages = $this->employeeLanguageDao->getEmployeeLanguages($employeeLanguagesSearchFilterParams);
  119. $this->assertCount(1, $empLanguages);
  120. $resultEmpLanguage = $empLanguages[0];
  121. $this->assertEquals('Kayla', $resultEmpLanguage->getEmployee()->getFirstName());
  122. $this->assertEquals('English', $resultEmpLanguage->getLanguage()->getName());
  123. $employeeLanguagesSearchFilterParams->setLanguageIds([100]);
  124. $empLanguages = $this->employeeLanguageDao->getEmployeeLanguages($employeeLanguagesSearchFilterParams);
  125. $this->assertCount(0, $empLanguages);
  126. $employeeLanguagesSearchFilterParams->setEmpNumber(1);
  127. $employeeLanguagesSearchFilterParams->setLanguageIds([1, 2]);
  128. $empLanguages = $this->employeeLanguageDao->getEmployeeLanguages($employeeLanguagesSearchFilterParams);
  129. $this->assertCount(2, $empLanguages);
  130. $resultEmpLanguage = $empLanguages[0];
  131. $this->assertEquals('Kayla', $resultEmpLanguage->getEmployee()->getFirstName());
  132. $this->assertEquals('English', $resultEmpLanguage->getLanguage()->getName());
  133. $resultEmpLanguage = $empLanguages[1];
  134. $this->assertEquals('Kayla', $resultEmpLanguage->getEmployee()->getFirstName());
  135. $this->assertEquals('Spanish', $resultEmpLanguage->getLanguage()->getName());
  136. }
  137. public function testDeleteEmployeeLanguages(): void
  138. {
  139. $entriesToDelete = [['languageId' => 2, 'fluencyId' => 100]];
  140. $empLanguagesCount = $this->employeeLanguageDao->deleteEmployeeLanguages(2, $entriesToDelete);
  141. $this->assertEquals(0, $empLanguagesCount);
  142. $entriesToDelete = [
  143. ['languageId' => 1, 'fluencyId' => 2],
  144. ['languageId' => 2, 'fluencyId' => 1]
  145. ];
  146. $empLanguagesCount = $this->employeeLanguageDao->deleteEmployeeLanguages(1, $entriesToDelete);
  147. $this->assertEquals(2, $empLanguagesCount);
  148. }
  149. public function testGetAllowedEmployeeLanguages(): void
  150. {
  151. $searchFilterParams = new EmployeeAllowedLanguageSearchFilterParams();
  152. $searchFilterParams->setEmpNumber(1);
  153. $languages = $this->employeeLanguageDao->getAllowedEmployeeLanguages($searchFilterParams);
  154. $this->assertCount(3, $languages);
  155. $this->assertEquals(
  156. ['Dutch', 'English', 'Spanish'],
  157. array_map(
  158. function (Language $language) {
  159. return $language->getName();
  160. },
  161. $languages
  162. )
  163. );
  164. $searchFilterParams = new EmployeeAllowedLanguageSearchFilterParams();
  165. $searchFilterParams->setEmpNumber(4);
  166. $languages = $this->employeeLanguageDao->getAllowedEmployeeLanguages($searchFilterParams);
  167. $this->assertCount(2, $languages);
  168. $this->assertEquals(
  169. ['Dutch', 'Spanish'],
  170. array_map(
  171. function (Language $language) {
  172. return $language->getName();
  173. },
  174. $languages
  175. )
  176. );
  177. $searchFilterParams = new EmployeeAllowedLanguageSearchFilterParams();
  178. $searchFilterParams->setEmpNumber(100);
  179. $languages = $this->employeeLanguageDao->getAllowedEmployeeLanguages($searchFilterParams);
  180. $this->assertCount(3, $languages);
  181. $this->assertEquals(
  182. ['Dutch', 'English', 'Spanish'],
  183. array_map(
  184. function (Language $language) {
  185. return $language->getName();
  186. },
  187. $languages
  188. )
  189. );
  190. }
  191. public function testGetEmployeeAllowedLicensesCount(): void
  192. {
  193. $searchFilterParams = new EmployeeAllowedLanguageSearchFilterParams();
  194. $searchFilterParams->setEmpNumber(1);
  195. $languagesCount = $this->employeeLanguageDao->getAllowedEmployeeLanguagesCount($searchFilterParams);
  196. $this->assertEquals(3, $languagesCount);
  197. $searchFilterParams = new EmployeeAllowedLanguageSearchFilterParams();
  198. $searchFilterParams->setEmpNumber(4);
  199. $languagesCount = $this->employeeLanguageDao->getAllowedEmployeeLanguagesCount($searchFilterParams);
  200. $this->assertEquals(2, $languagesCount);
  201. $searchFilterParams = new EmployeeAllowedLanguageSearchFilterParams();
  202. $searchFilterParams->setEmpNumber(100);
  203. $languagesCount = $this->employeeLanguageDao->getAllowedEmployeeLanguagesCount($searchFilterParams);
  204. $this->assertEquals(3, $languagesCount);
  205. }
  206. }