62 lines
2.2 KiB
PHP
62 lines
2.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Models\AdCampaign;
|
|
use App\Models\AdCampaignMessage;
|
|
use App\Models\Tenant;
|
|
use App\Models\User;
|
|
|
|
function messageEndpointCampaign(): array
|
|
{
|
|
$tenant = Tenant::factory()->create();
|
|
$user = User::factory()->create(['tenant_id' => $tenant->id]);
|
|
$campaign = AdCampaign::create([
|
|
'tenant_id' => $tenant->id, 'name' => 'C', 'audience_days' => 10, 'use_uploaded_list' => false,
|
|
]);
|
|
|
|
return [$tenant, $user, $campaign];
|
|
}
|
|
|
|
it('клиент видит ленту своей кампании по порядку', function () {
|
|
[$tenant, $user, $campaign] = messageEndpointCampaign();
|
|
|
|
AdCampaignMessage::create([
|
|
'tenant_id' => $tenant->id, 'campaign_id' => $campaign->id,
|
|
'author' => AdCampaignMessage::AUTHOR_YANDEX, 'body' => 'Первое',
|
|
]);
|
|
AdCampaignMessage::create([
|
|
'tenant_id' => $tenant->id, 'campaign_id' => $campaign->id,
|
|
'author' => AdCampaignMessage::AUTHOR_CLIENT, 'body' => 'Второе',
|
|
]);
|
|
|
|
$res = $this->actingAs($user)->getJson("/api/advertising/campaigns/{$campaign->id}/messages");
|
|
|
|
$res->assertOk();
|
|
expect($res->json('messages.0.body'))->toBe('Первое')
|
|
->and($res->json('messages.0.author'))->toBe(AdCampaignMessage::AUTHOR_YANDEX)
|
|
->and($res->json('messages.1.body'))->toBe('Второе');
|
|
});
|
|
|
|
/** Чужая переписка — чужие бумаги и чужие претензии модератора. */
|
|
it('чужую ленту клиент не видит', function () {
|
|
[$tenantA, , $campaignA] = messageEndpointCampaign();
|
|
AdCampaignMessage::create([
|
|
'tenant_id' => $tenantA->id, 'campaign_id' => $campaignA->id,
|
|
'author' => AdCampaignMessage::AUTHOR_YANDEX, 'body' => 'Чужое',
|
|
]);
|
|
|
|
[, $userB] = messageEndpointCampaign();
|
|
|
|
$res = $this->actingAs($userB)->getJson("/api/advertising/campaigns/{$campaignA->id}/messages");
|
|
|
|
$res->assertStatus(404);
|
|
expect($res->getContent())->not->toContain('Чужое');
|
|
});
|
|
|
|
it('без входа лента не отдаётся', function () {
|
|
[, , $campaign] = messageEndpointCampaign();
|
|
|
|
$this->getJson("/api/advertising/campaigns/{$campaign->id}/messages")->assertStatus(401);
|
|
});
|