1
0
Fork 0
mirror of synced 2024-06-02 10:54:44 +12:00
appwrite/tests/unit/Event/EventTest.php

141 lines
4.6 KiB
PHP
Raw Normal View History

2019-12-26 23:00:29 +13:00
<?php
namespace Appwrite\Tests;
use Appwrite\Event\Event;
2022-03-29 21:30:57 +13:00
use InvalidArgumentException;
2019-12-26 23:00:29 +13:00
use PHPUnit\Framework\TestCase;
2020-06-29 08:45:36 +12:00
use Utopia\App;
2019-12-26 23:00:29 +13:00
2019-12-26 23:20:09 +13:00
class EventTest extends TestCase
2019-12-26 23:00:29 +13:00
{
/**
* @var Event
*/
protected $object = null;
2022-03-29 21:30:57 +13:00
2019-12-26 23:00:29 +13:00
/**
* @var string
*/
protected $queue = '';
2020-10-01 10:52:28 +13:00
public function setUp(): void
2019-12-26 23:00:29 +13:00
{
2020-06-29 08:45:36 +12:00
$redisHost = App::getEnv('_APP_REDIS_HOST', '');
$redisPort = App::getEnv('_APP_REDIS_PORT', '');
2022-03-29 21:30:57 +13:00
\Resque::setBackend($redisHost . ':' . $redisPort);
2019-12-26 23:00:29 +13:00
$this->queue = 'v1-tests' . uniqid();
$this->object = new Event($this->queue, 'TestsV1');
}
2020-10-01 10:52:28 +13:00
public function tearDown(): void
2019-12-26 23:00:29 +13:00
{
}
public function testQueue()
{
$this->assertEquals($this->queue, $this->object->getQueue());
$this->object->setQueue('demo');
2022-03-29 21:30:57 +13:00
$this->assertEquals('demo', $this->object->getQueue());
2022-03-29 21:30:57 +13:00
$this->object->setQueue($this->queue);
}
public function testClass()
{
$this->assertEquals('TestsV1', $this->object->getClass());
$this->object->setClass('TestsV2');
2022-03-29 21:30:57 +13:00
$this->assertEquals('TestsV2', $this->object->getClass());
2022-03-29 21:30:57 +13:00
$this->object->setClass('TestsV1');
}
2019-12-26 23:00:29 +13:00
public function testParams()
{
$this->object
2020-10-30 11:20:32 +13:00
->setParam('eventKey1', 'eventValue1')
2022-03-29 21:30:57 +13:00
->setParam('eventKey2', 'eventValue2');
2019-12-26 23:00:29 +13:00
$this->object->trigger();
2020-10-30 11:20:32 +13:00
$this->assertEquals(null, $this->object->getParam('eventKey1'));
$this->assertEquals(null, $this->object->getParam('eventKey2'));
$this->assertEquals(null, $this->object->getParam('eventKey3'));
2019-12-26 23:00:29 +13:00
$this->assertEquals(\Resque::size($this->queue), 1);
}
2020-07-05 01:06:23 +12:00
public function testReset()
{
$this->object
2020-10-30 11:20:32 +13:00
->setParam('eventKey1', 'eventValue1')
2022-03-29 21:30:57 +13:00
->setParam('eventKey2', 'eventValue2');
2020-07-05 01:06:23 +12:00
2020-10-30 11:20:32 +13:00
$this->assertEquals('eventValue1', $this->object->getParam('eventKey1'));
$this->assertEquals('eventValue2', $this->object->getParam('eventKey2'));
2020-07-05 01:06:23 +12:00
$this->object->reset();
2020-10-30 11:20:32 +13:00
$this->assertEquals(null, $this->object->getParam('eventKey1'));
$this->assertEquals(null, $this->object->getParam('eventKey2'));
$this->assertEquals(null, $this->object->getParam('eventKey3'));
2020-07-05 01:06:23 +12:00
}
2022-03-29 21:30:57 +13:00
public function testGenerateEvents()
{
2022-04-04 18:30:07 +12:00
$event = Event::generateEvents('users.[userId].create', [
'userId' => 'torsten'
]);
$this->assertCount(4, $event);
$this->assertContains('users.torsten.create', $event);
$this->assertContains('users.torsten', $event);
$this->assertContains('users.*.create', $event);
$this->assertContains('users.*', $event);
2022-03-29 21:30:57 +13:00
$event = Event::generateEvents('users.[userId].update.email', [
'userId' => 'torsten'
]);
$this->assertCount(6, $event);
$this->assertContains('users.torsten.update.email', $event);
$this->assertContains('users.torsten.update', $event);
$this->assertContains('users.torsten', $event);
$this->assertContains('users.*.update.email', $event);
$this->assertContains('users.*.update', $event);
$this->assertContains('users.*', $event);
$event = Event::generateEvents('collections.[collectionId].documents.[documentId].create', [
'collectionId' => 'chapters',
'documentId' => 'prolog',
]);
$this->assertCount(8, $event);
$this->assertContains('collections.chapters.documents.prolog.create', $event);
$this->assertContains('collections.chapters.documents.prolog', $event);
$this->assertContains('collections.chapters.documents.*.create', $event);
$this->assertContains('collections.chapters.documents.*', $event);
$this->assertContains('collections.*.documents.prolog.create', $event);
$this->assertContains('collections.*.documents.prolog', $event);
$this->assertContains('collections.*.documents.*.create', $event);
$this->assertContains('collections.*.documents.*', $event);
try {
$event = Event::generateEvents('collections.[collectionId].documents.[documentId].create', [
'collectionId' => 'chapters'
]);
$this->fail();
} catch (\Throwable $th) {
$this->assertInstanceOf(InvalidArgumentException::class, $th, 'An invalid exception was thrown');
}
try {
$event = Event::generateEvents('collections.[collectionId].documents.[documentId].create');
$this->fail();
} catch (\Throwable $th) {
$this->assertInstanceOf(InvalidArgumentException::class, $th, 'An invalid exception was thrown');
}
}
2020-10-01 10:52:28 +13:00
}