costPerImpressionRub(Campaign::MEDIA_NONE))->toBe('0.480') ->and($p->costPerImpressionRub(Campaign::MEDIA_IMAGE))->toBe('0.720') ->and($p->costPerImpressionRub(Campaign::MEDIA_VIDEO))->toBe('0.816'); }); it('ΠΎΠ±ΡŠΡ‘ΠΌ Π½Π° ΡΠ΅Π±Π΅ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π΅ влияСт β€” скидки Π·Π° ΠΎΠ±ΡŠΡ‘ΠΌ Ρƒ МВБ Π½Π΅Ρ‚', function () { $p = app(TelegramTariffService::class); // ΠŸΡ€Π΅ΠΆΠ½ΠΈΠΉ Ρ‚Π°Ρ€ΠΈΡ„ Π½Π° этих ΠΆΠ΅ ΠΎΠ±ΡŠΡ‘ΠΌΠ°Ρ… Π΄Π°Π²Π°Π» 0.45 / 0.42 / 0.40 / 0.38 / 0.36. foreach ([1, 999, 1000, 5000, 10000, 50000, 500000] as $volume) { expect($p->estimateRub($volume, Campaign::MEDIA_NONE)) ->toBe(bcmul((string) $volume, '0.480', 2)); } }); it('смСта = ΠΏΠΎΠΊΠ°Π·Ρ‹ Γ— ΡΠ΅Π±Π΅ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π²ΠΈΠ΄Π° ΠΌΠ΅Π΄ΠΈΠ°', function () { $p = app(TelegramTariffService::class); expect($p->estimateRub(1000, Campaign::MEDIA_NONE))->toBe('480.00') ->and($p->estimateRub(1000, Campaign::MEDIA_IMAGE))->toBe('720.00') ->and($p->estimateRub(1000, Campaign::MEDIA_VIDEO))->toBe('816.00') ->and($p->estimateRub(0, Campaign::MEDIA_NONE))->toBe('0.00'); }); it('клиСнтская Ρ†Π΅Π½Π° = ΡΠ΅Π±Π΅ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Γ— Π½Π°Ρ†Π΅Π½ΠΊΠ°: 672 / 1008 / 1142 β‚½ Π·Π° тысячу', function () { config()->set('client_tg.markup', '1.40'); $p = app(TelegramTariffService::class); expect($p->clientEstimateRub(1000, Campaign::MEDIA_NONE))->toBe('672.00') ->and($p->clientEstimateRub(1000, Campaign::MEDIA_IMAGE))->toBe('1008.00') // 816.00 Γ— 1.40 = 1142.40 ->and($p->clientEstimateRub(1000, Campaign::MEDIA_VIDEO))->toBe('1142.40') ->and($p->clientEstimateRub(0, Campaign::MEDIA_NONE))->toBe('0.00'); }); it('Π±Π΅Π· ΠΌΠ΅Π΄ΠΈΠ° β€” Π²ΠΈΠ΄ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (старыС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π½Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ Π²ΠΈΠ΄Π΅ΠΎ)', function () { config()->set('client_tg.markup', '1.40'); $p = app(TelegramTariffService::class); expect($p->clientEstimateRub(1000))->toBe('672.00'); }); it('Π½Π°Ρ†Π΅Π½ΠΊΠ° бСрётся ΠΈΠ· настроСк', function () { config()->set('client_tg.markup', '2.00'); $p = app(TelegramTariffService::class); expect($p->clientEstimateRub(1000, Campaign::MEDIA_NONE))->toBe('960.00'); }); /** * Π‘Ρ‚ΠΎΡ€ΠΎΠΆ ΠΎΡ‚ ΠΌΠΎΠ»Ρ‡Π°Π»ΠΈΠ²ΠΎΠ³ΠΎ ΡƒΠ±Ρ‹Ρ‚ΠΊΠ°: ΠΊΠ»ΠΈΠ΅Π½Ρ‚ обязан ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π‘ΠžΠ›Π¬Π¨Π•, Ρ‡Π΅ΠΌ ΠΏΠ»Π°Ρ‚ΠΈΠΌ ΠΌΡ‹. * ИмСнно этой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π΅ Π±Ρ‹Π»ΠΎ, ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ ступСнчатый Ρ‚Π°Ρ€ΠΈΡ„ Π³ΠΎΠ΄Π°ΠΌΠΈ ΡƒΠ²ΠΎΠ΄ΠΈΠ» Π±Ρ‹ * ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΈ с ΠΌΠ΅Π΄ΠΈΠ° Π² минус, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сказав. */ it('клиСнтская Ρ†Π΅Π½Π° всСгда Π²Ρ‹ΡˆΠ΅ сСбСстоимости β€” Π½Π° любом ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ ΠΈ любом ΠΌΠ΅Π΄ΠΈΠ°', function () { config()->set('client_tg.markup', '1.40'); $p = app(TelegramTariffService::class); foreach ([Campaign::MEDIA_NONE, Campaign::MEDIA_IMAGE, Campaign::MEDIA_VIDEO] as $kind) { foreach ([1, 367, 1000, 5000, 50000, 500000] as $volume) { $nasha = $p->estimateRub($volume, $kind); $klienta = $p->clientEstimateRub($volume, $kind); expect(bccomp($klienta, $nasha, 2))->toBe( 1, "ΠΎΠ±ΡŠΡ‘ΠΌ {$volume}, ΠΌΠ΅Π΄ΠΈΠ° {$kind}: ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ {$klienta}, ΠΌΡ‹ ΠΏΠ»Π°Ρ‚ΠΈΠΌ {$nasha}" ); } } }); it('нСизвСстный Π²ΠΈΠ΄ ΠΌΠ΅Π΄ΠΈΠ° Π½Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠΎΠ»Ρ‡Π°', function () { $p = app(TelegramTariffService::class); expect(fn () => $p->costPerImpressionRub('gif')) ->toThrow(InvalidArgumentException::class); });