Files
portal/app/tests/Feature/Advertising/AdCampaignCreativeIdMigrationTest.php
T
Дмитрий fbbe49dac6 feat(реклама): показы — фундамент Части 4: предохранитель бюджета + номер креатива Яндекса на кампании
- config yandex_direct.spend_limit_guard_multiplier — бэкстоп от перерасхода, не клиентская цена
- миграция ad_campaigns.yandex_creative_id nullable + точечный GRANT UPDATE админ-роли с гардом
- модель AdCampaign: yandex_creative_id в fillable и casts integer
- тесты: config-набор и миграция зелёные, реклама-набор не сломан
- CHANGELOG схемы v9.01; план Части 4 и findings контракта медийного API Директа

Часть B «мотор» ещё впереди: медийные методы клиента, переписанный запускатор, контроллер.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-26 23:41:48 +03:00

20 lines
741 B
PHP

<?php
declare(strict_types=1);
use App\Models\AdCampaign;
use Illuminate\Support\Facades\Schema;
it('добавляет yandex_creative_id в ad_campaigns как nullable', function () {
expect(Schema::hasColumn('ad_campaigns', 'yandex_creative_id'))->toBeTrue();
});
it('модель AdCampaign позволяет задать и прочитать yandex_creative_id как integer', function () {
$campaign = new AdCampaign();
$campaign->fill(['yandex_creative_id' => '123456789']);
expect($campaign->yandex_creative_id)->toBe(123456789)
->and($campaign->getCasts()['yandex_creative_id'] ?? null)->toBe('integer')
->and(in_array('yandex_creative_id', $campaign->getFillable(), true))->toBeTrue();
});