4ce4204b6c
CI / Lint (push) Failing after 2s
CI / Build (push) Has been skipped
SDK CI / PHP SDK (push) Failing after 1s
Split PHP SDK / PHP SDK tests (push) Failing after 1s
CI / Test (push) Failing after 1s
CI / Dashboard (push) Failing after 0s
SDK CI / JavaScript SDK (push) Failing after 0s
SDK CI / Python SDK (push) Failing after 2s
SDK CI / Java SDK (push) Failing after 1s
Split PHP SDK / Mirror sdk/php -> rmyndharis/openwa-php (push) Has been skipped
CI / Test (PostgreSQL migrations) (push) Failing after 7m47s
CI / Docker Build (push) Has been skipped
82 lines
3.9 KiB
PHP
82 lines
3.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace OpenWA\Tests;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class LabelsChannelsCatalogTest extends TestCase
|
|
{
|
|
public function testLabels(): void
|
|
{
|
|
$backend = new MockBackend();
|
|
$backend->on(200, [['id' => 'l1', 'name' => 'VIP']]);
|
|
$backend->on(200, ['id' => 'l1', 'name' => 'VIP']);
|
|
$backend->on(200, [['id' => 'l1', 'name' => 'VIP']]);
|
|
$backend->on(200, ['success' => true]);
|
|
$backend->on(200, ['success' => true]);
|
|
$client = $backend->makeClient();
|
|
$client->labels->list('s');
|
|
$this->assertStringContainsString('/sessions/s/labels', $backend->calls()[0]['path']);
|
|
$client->labels->get('s', 'l1');
|
|
$this->assertStringContainsString('/labels/l1', $backend->calls()[1]['path']);
|
|
$client->labels->forChat('s', 'a@c.us');
|
|
$client->labels->addToChat('s', 'a@c.us', ['labelId' => 'l1']);
|
|
$this->assertSame('POST', $backend->calls()[3]['method']);
|
|
$this->assertSame(['labelId' => 'l1'], $backend->calls()[3]['body']);
|
|
$client->labels->removeFromChat('s', 'a@c.us', 'l1');
|
|
$this->assertSame('DELETE', $backend->calls()[4]['method']);
|
|
}
|
|
|
|
public function testChannels(): void
|
|
{
|
|
$backend = new MockBackend();
|
|
$backend->on(200, [['id' => '123@newsletter', 'name' => 'News']]);
|
|
$backend->on(200, ['id' => '123@newsletter', 'name' => 'News']);
|
|
$backend->on(200, []);
|
|
$backend->on(201, ['id' => '123@newsletter', 'name' => 'News']);
|
|
$backend->on(200, ['success' => true]);
|
|
$client = $backend->makeClient();
|
|
$client->channels->list('s');
|
|
$this->assertStringContainsString('/sessions/s/channels', $backend->calls()[0]['path']);
|
|
$client->channels->get('s', '123@newsletter');
|
|
$client->channels->messages('s', '123@newsletter', ['limit' => 10]);
|
|
$this->assertStringContainsString('limit=10', $backend->calls()[2]['query']);
|
|
$client->channels->subscribe('s', ['inviteCode' => 'ABCxyz']);
|
|
$this->assertSame('POST', $backend->calls()[3]['method']);
|
|
$this->assertSame(['inviteCode' => 'ABCxyz'], $backend->calls()[3]['body']);
|
|
$client->channels->unsubscribe('s', '123@newsletter');
|
|
$this->assertSame('DELETE', $backend->calls()[4]['method']);
|
|
}
|
|
|
|
public function testCatalog(): void
|
|
{
|
|
$backend = new MockBackend();
|
|
$backend->on(200, ['name' => 'My Shop', 'productsCount' => 5]);
|
|
$backend->on(200, [['id' => 'p1', 'name' => 'Widget']]);
|
|
$backend->on(200, ['id' => 'p1', 'name' => 'Widget']);
|
|
$backend->on(201, ['messageId' => 'm', 'timestamp' => 1]);
|
|
$backend->on(201, ['messageId' => 'm', 'timestamp' => 1]);
|
|
$client = $backend->makeClient();
|
|
$client->catalog->info('s');
|
|
$this->assertStringContainsString('/sessions/s/catalog', $backend->calls()[0]['path']);
|
|
$client->catalog->products('s', ['page' => 1, 'limit' => 20]);
|
|
$this->assertStringContainsString('page=1', $backend->calls()[1]['query']);
|
|
$client->catalog->product('s', 'p1');
|
|
$client->catalog->sendProduct('s', ['chatId' => 'a@c.us', 'productId' => 'p1', 'body' => 'x']);
|
|
$this->assertStringContainsString('/messages/send-product', $backend->calls()[3]['path']);
|
|
$this->assertSame(['chatId' => 'a@c.us', 'productId' => 'p1', 'body' => 'x'], $backend->calls()[3]['body']);
|
|
$client->catalog->sendCatalog('s', ['chatId' => 'a@c.us', 'body' => 'cat']);
|
|
$this->assertStringContainsString('/messages/send-catalog', $backend->calls()[4]['path']);
|
|
}
|
|
|
|
public function testClientExposesAll11Resources(): void
|
|
{
|
|
$client = (new MockBackend())->makeClient();
|
|
foreach (['sessions', 'messages', 'contacts', 'groups', 'webhooks', 'chats', 'status', 'health', 'labels', 'channels', 'catalog'] as $r) {
|
|
$this->assertTrue(property_exists($client, $r), "Client should expose resource: {$r}");
|
|
}
|
|
}
|
|
}
|