impressionsForAudience(1630, 15))->toBe(24450); expect($p->impressionsForAudience(0, 15))->toBe(0); expect($p->impressionsForAudience(100, 1))->toBe(100); }); it('считает клиентскую сумму по 120 ₽ за 1000 показов, округляя ВВЕРХ до копейки', function () { $p = new AdImpressionPricing; expect($p->clientCostRub(24450, '120.00'))->toBe('2934.00'); expect($p->clientCostRub(1, '120.00'))->toBe('0.12'); expect($p->clientCostRub(7, '120.00'))->toBe('0.84'); expect($p->clientCostRub(0, '120.00'))->toBe('0.00'); }); it('округляет неровную сумму вверх до копейки (клиент не недоплачивает)', function () { $p = new AdImpressionPricing; expect($p->clientCostRub(1, '125.00'))->toBe('0.13'); }); it('считает маржу как списано клиенту минус расход Яндекса', function () { $p = new AdImpressionPricing; expect($p->marginRub('2934.00', '1956.00'))->toBe('978.00'); expect($p->marginRub('100.00', '100.00'))->toBe('0.00'); });