1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace Growthdev \DesignPatterns \Tests \Behavioral \ChainOfResponsability ;
6+
7+ use Growthdev \DesignPatterns \Behavioral \ChainOfResponsability \DirectorHandler ;
8+ use Growthdev \DesignPatterns \Behavioral \ChainOfResponsability \ManagerHandler ;
9+ use Growthdev \DesignPatterns \Behavioral \ChainOfResponsability \Sale ;
10+ use Growthdev \DesignPatterns \Behavioral \ChainOfResponsability \SellerHandler ;
11+ use PHPUnit \Framework \TestCase ;
12+
13+ final class ChainOfResponsabilityTest extends TestCase
14+ {
15+ public function testExpectOfApproveBySeller ()
16+ {
17+ $ seller = new SellerHandler ;
18+ $ seller ->setNext (new ManagerHandler )
19+ ->setNext (new DirectorHandler );
20+
21+ // Request
22+ $ sale = new Sale (2_999.99 );
23+ $ seller ->processSale ($ sale );
24+
25+ $ this ->expectOutputString ("Sale approved by seller with price 2999.99 \n" );
26+ }
27+
28+ public function testExpectOfApproveByManager ()
29+ {
30+ $ seller = new SellerHandler ;
31+ $ seller ->setNext (new ManagerHandler )
32+ ->setNext (new DirectorHandler );
33+
34+ // Request
35+ $ sale = new Sale (3_999.99 );
36+ $ seller ->processSale ($ sale );
37+
38+ $ this ->expectOutputString ("Sale approved by manager with price 3999.99 \n" );
39+ }
40+
41+ public function testExpectOfApproveByDirector ()
42+ {
43+ $ seller = new SellerHandler ;
44+ $ seller ->setNext (new ManagerHandler )
45+ ->setNext (new DirectorHandler );
46+
47+ // Request
48+ $ sale = new Sale (30_000.01 );
49+ $ seller ->processSale ($ sale );
50+
51+ $ this ->expectOutputString ("Sale approved by director with price 30000.01 \n" );
52+ }
53+ }
0 commit comments