. */ namespace SP\Tests\Repositories; use DI\DependencyException; use DI\NotFoundException; use SP\Core\Context\ContextException; use SP\Core\Exceptions\ConstraintException; use SP\Core\Exceptions\QueryException; use SP\DataModel\EventlogData; use SP\DataModel\ItemSearchData; use SP\Repositories\EventLog\EventlogRepository; use SP\Tests\DatabaseTestCase; use stdClass; use function SP\Tests\setupContext; /** * Class EventlogRepositoryTest * * Tests de integración para comprobar las consultas a la BBDD relativas a los registros de eventos * * @package SP\Tests */ class EventlogRepositoryTest extends DatabaseTestCase { /** * @var EventlogRepository */ private static $repository; /** * @throws NotFoundException * @throws ContextException * @throws DependencyException */ public static function setUpBeforeClass(): void { $dic = setupContext(); self::$loadFixtures = true; // Inicializar el repositorio self::$repository = $dic->get(EventlogRepository::class); } /** * Comprobar la búsqueda de eventos por texto * * @throws ConstraintException * @throws QueryException */ public function testSearch() { $itemSearchData = new ItemSearchData(); $itemSearchData->setLimitCount(10); $itemSearchData->setSeachString('login.auth.database'); $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(4, $result->getNumRows()); $this->assertCount(4, $data); $this->assertInstanceOf(stdClass::class, $data[0]); $this->assertEquals('login.auth.database', $data[0]->action); $itemSearchData->setSeachString('login.auth.'); $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(4, $result->getNumRows()); $this->assertCount(4, $data); $this->assertInstanceOf(stdClass::class, $data[0]); $itemSearchData->setSeachString('Tiempo inactivo : 0 min.'); $result = self::$repository->search($itemSearchData); $data = $result->getDataAsArray(); $this->assertEquals(1, $result->getNumRows()); $this->assertCount(1, $data); $this->assertInstanceOf(stdClass::class, $data[0]); $itemSearchData->setSeachString('prueba'); $result = self::$repository->search($itemSearchData); $this->assertCount(0, $result->getDataAsArray()); $this->assertEquals(0, $result->getNumRows()); } /** * Comprobar la limpieza el registro de eventos * * @throws ConstraintException * @throws QueryException */ public function testClear() { self::$repository->clear(); $this->assertEquals(0, self::getRowCount('EventLog')); } /** * Comprobar la creación de eventos * * @throws ConstraintException * @throws QueryException */ public function testCreate() { $eventlogData = new EventlogData(); $eventlogData->setAction('test'); $eventlogData->setLevel('INFO'); $eventlogData->setUserId(1); $eventlogData->setLogin('Admin'); $eventlogData->setIpAddress('127.0.0.1'); $eventlogData->setDescription('Prueba'); $countBefore = self::getRowCount('EventLog'); self::$repository->create($eventlogData); $countAfter = self::getRowCount('EventLog'); $this->assertEquals($countBefore + 1, $countAfter); $this->expectException(ConstraintException::class); self::$repository->create(new EventlogData()); } }