Files
rmyndharis--openwa/sdk/php/tests/LabelsChannelsCatalogTest.php
wehub-resource-sync 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
chore: import upstream snapshot with attribution
2026-07-13 12:24:08 +08:00

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}");
}
}
}