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