You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
6.2 KiB
177 lines
6.2 KiB
<?php |
|
|
|
namespace OpenEMR\Tests\Services; |
|
|
|
use PHPUnit\Framework\TestCase; |
|
use OpenEMR\Common\Uuid\UuidRegistry; |
|
use OpenEMR\Services\FacilityService; |
|
use OpenEMR\Tests\Fixtures\FacilityFixtureManager; |
|
|
|
/** |
|
* Facility Service Tests |
|
* @coversDefaultClass OpenEMR\Services\FacilityService |
|
* |
|
* @package OpenEMR |
|
* @link http://www.open-emr.org |
|
* @author Yash Bothra <yashrajbothra786gmail.com> |
|
* @copyright Copyright (c) 2020 Yash Bothra <yashrajbothra786gmail.com> |
|
* @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3 |
|
*/ |
|
class FacilityServiceTest extends TestCase |
|
{ |
|
/** |
|
* @var FacilityService |
|
*/ |
|
private $facilityService; |
|
|
|
/** |
|
* @var FacilityFixtureManager |
|
*/ |
|
private $fixtureManager; |
|
|
|
protected function setUp(): void |
|
{ |
|
$this->facilityService = new FacilityService(); |
|
$this->fixtureManager = new FacilityFixtureManager(); |
|
$this->facilityFixture = (array) $this->fixtureManager->getSingleFacilityFixture(); |
|
} |
|
|
|
protected function tearDown(): void |
|
{ |
|
$this->fixtureManager->removeFixtures(); |
|
} |
|
|
|
/** |
|
* @covers ::insert when the data is invalid |
|
*/ |
|
public function testInsertFailure() |
|
{ |
|
$this->facilityFixture["name"] = "A"; |
|
$this->facilityFixture["facility_npi"] = "12345"; |
|
unset($this->facilityFixture["name"]); |
|
|
|
$actualResult = $this->facilityService->insert($this->facilityFixture); |
|
|
|
$this->assertFalse($actualResult->isValid()); |
|
|
|
$this->assertArrayHasKey("name", $actualResult->getValidationMessages()); |
|
$this->assertArrayHasKey("facility_npi", $actualResult->getValidationMessages()); |
|
$this->assertEquals(2, count($actualResult->getValidationMessages())); |
|
} |
|
|
|
/** |
|
* @covers ::insert when the data is valid |
|
*/ |
|
public function testInsertSuccess() |
|
{ |
|
$actualResult = $this->facilityService->insert($this->facilityFixture); |
|
$this->assertTrue($actualResult->isValid()); |
|
$this->assertEquals(1, count($actualResult->getData())); |
|
|
|
$dataResult = $actualResult->getData()[0]; |
|
$this->assertIsArray($dataResult); |
|
$this->assertArrayHasKey("id", $dataResult); |
|
$this->assertGreaterThan(0, $dataResult["id"]); |
|
$this->assertArrayHasKey("uuid", $dataResult); |
|
|
|
$this->assertEquals(0, count($actualResult->getValidationMessages())); |
|
$this->assertTrue($actualResult->isValid()); |
|
$this->assertEquals(0, count($actualResult->getInternalErrors())); |
|
$this->assertFalse($actualResult->hasInternalErrors()); |
|
} |
|
|
|
/** |
|
* @covers ::update when the data is not valid |
|
*/ |
|
public function testUpdateFailure() |
|
{ |
|
$this->facilityService->insert($this->facilityFixture); |
|
|
|
$this->facilityFixture["name"] = "A"; |
|
|
|
$actualResult = $this->facilityService->update("not-a-uuid", $this->facilityFixture); |
|
|
|
$this->assertFalse($actualResult->isValid()); |
|
|
|
$this->assertArrayHasKey("name", $actualResult->getValidationMessages()); |
|
$this->assertArrayHasKey("uuid", $actualResult->getValidationMessages()); |
|
$this->assertEquals(2, count($actualResult->getValidationMessages())); |
|
} |
|
|
|
/** |
|
* @covers ::update when the data is valid |
|
*/ |
|
public function testUpdateSuccess() |
|
{ |
|
$actualResult = $this->facilityService->insert($this->facilityFixture); |
|
$this->assertTrue($actualResult->isValid()); |
|
$this->assertEquals(1, count($actualResult->getData())); |
|
|
|
$dataResult = $actualResult->getData()[0]; |
|
$this->assertIsArray($dataResult); |
|
$this->assertArrayHasKey("id", $dataResult); |
|
$this->assertGreaterThan(0, $dataResult["id"]); |
|
$this->assertArrayHasKey("uuid", $dataResult); |
|
|
|
$actualUuid = $dataResult["uuid"]; |
|
|
|
$this->facilityFixture["email"] = "help@pennfirm.com"; |
|
$this->facilityService->update($actualUuid, $this->facilityFixture); |
|
|
|
$sql = "SELECT `uuid`, `email` FROM `facility` WHERE `uuid` = ?"; |
|
$result = sqlQuery($sql, [UuidRegistry::uuidToBytes($actualUuid)]); |
|
$this->assertEquals($actualUuid, UuidRegistry::uuidToString($result["uuid"])); |
|
$this->assertEquals("help@pennfirm.com", $result["email"]); |
|
} |
|
|
|
/** |
|
* @cover ::getOne |
|
* @cover ::getAll |
|
*/ |
|
public function testFacilityQueries() |
|
{ |
|
$this->fixtureManager->installFacilityFixtures(); |
|
|
|
$result = sqlQuery("SELECT `uuid` FROM `facility`"); |
|
$existingUuid = UuidRegistry::uuidToString($result['uuid']); |
|
// getOne |
|
$actualResult = $this->facilityService->getOne($existingUuid); |
|
$resultData = $actualResult->getData()[0]; |
|
$this->assertNotNull($resultData); |
|
$this->assertEquals($existingUuid, $resultData["uuid"]); |
|
$this->assertArrayHasKey("name", $resultData); |
|
$this->assertArrayHasKey("uuid", $resultData); |
|
|
|
// getOne - validate uuid |
|
$expectedUuid = $resultData["uuid"]; |
|
$actualResult = $this->facilityService->getOne($expectedUuid); |
|
$resultData = $actualResult->getData()[0]; |
|
$this->assertNotNull($resultData); |
|
$this->assertEquals($expectedUuid, $resultData["uuid"]); |
|
|
|
// getOne - with an invalid uuid |
|
$actualResult = $this->facilityService->getOne("not-a-uuid"); |
|
$this->assertEquals(1, count($actualResult->getValidationMessages())); |
|
$this->assertEquals(0, count($actualResult->getInternalErrors())); |
|
$this->assertEquals(0, count($actualResult->getData())); |
|
|
|
// getAll |
|
$actualResult = $this->facilityService->getAll(array("facility_npi" => "0123456789")); |
|
$this->assertNotNull($actualResult); |
|
$this->assertEquals(2, count($actualResult->getData())); |
|
|
|
foreach ($actualResult->getData() as $index => $facilityRecord) { |
|
$this->assertArrayHasKey("name", $resultData); |
|
$this->assertArrayHasKey("uuid", $resultData); |
|
$this->assertEquals("0123456789", $facilityRecord["facility_npi"]); |
|
} |
|
} |
|
|
|
public function testGetFacilityForUser() |
|
{ |
|
$this->fixtureManager->installFacilityFixtures(); |
|
|
|
$actualResult = $this->facilityService->getFacilityForUser(1); |
|
$this->assertNotNull($actualResult); |
|
} |
|
}
|
|
|