1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| <?php declare(strict_types = 1);
namespace DesignPatterns\Structural\Decorator\Tests;
use DesignPatterns\Structural\Decorator\DoubleRoomBooking; use DesignPatterns\Structural\Decorator\ExtraBed; use DesignPatterns\Structural\Decorator\WiFi; use PHPUnit\Framework\TestCase;
class DecoratorTest extends TestCase { public function testCanCalculatePriceForBasicDoubleRoomBooking() { $booking = new DoubleRoomBooking();
$this->assertSame(40, $booking->calculatePrice()); $this->assertSame('double room', $booking->getDescription()); }
public function testCanCalculatePriceForDoubleRoomBookingWithWiFi() { $booking = new DoubleRoomBooking(); $booking = new WiFi($booking);
$this->assertSame(42, $booking->calculatePrice()); $this->assertSame('double room with wifi', $booking->getDescription()); }
public function testCanCalculatePriceForDoubleRoomBookingWithWiFiAndExtraBed() { $booking = new DoubleRoomBooking(); $booking = new WiFi($booking); $booking = new ExtraBed($booking);
$this->assertSame(72, $booking->calculatePrice()); $this->assertSame('double room with wifi with extra bed', $booking->getDescription()); } }
|