1+ <?php
2+
3+ use TRMS \Carousel \Server \API ;
4+
5+ use TRMS \Carousel \Exceptions \CarouselAPIException ;
6+ use TRMS \Carousel \Exceptions \CarouselRequestException ;
7+ use TRMS \Carousel \Exceptions \CarouselModelException ;
8+
9+ use TRMS \Carousel \Models \Bulletin ;
10+ use TRMS \Carousel \Models \Group ;
11+
12+ use TRMS \Carousel \Requests \BulletinOrderRequest ;
13+ use TRMS \Carousel \Models \BulletinOrder ;
14+ use TRMS \Carousel \Models \BulletinOrderEntry ;
15+
16+ use CarouselTests \MockData \MockResponder ;
17+
18+ use GuzzleHttp \Handler \MockHandler ;
19+ use GuzzleHttp \HandlerStack ;
20+ use GuzzleHttp \Psr7 \Response ;
21+ use GuzzleHttp \Psr7 \Request ;
22+ use GuzzleHttp \Exception \RequestException ;
23+
24+ class BulletinOrderRequestTest extends PHPUnit_Framework_TestCase
25+ {
26+ function setup ()
27+ {
28+ $ mockResponder = new MockResponder ;
29+ $ this ->mock = new MockHandler ([
30+ new Response (200 ,[],$ mockResponder ->orderEntries ()),
31+ new Response (200 ,[],$ mockResponder ->orderEntries ()),
32+ ]);
33+ $ this ->handler = HandlerStack::create ($ this ->mock );
34+ }
35+
36+ function test_you_can_get_order_entries_for_a_zone ()
37+ {
38+ $ request = new BulletinOrderRequest (['ZoneID ' =>1 ]);
39+ $ server = new API ();
40+ $ server
41+ ->addMockHandler ($ this ->handler )
42+ ->connect ('server ' ,'username ' ,'password ' );
43+
44+ $ bulletinOrder = $ server ->get ($ request );
45+
46+ $ this ->assertEquals ('server/carouselapi/v1/orderentries?ZoneID=1 ' , (string ) $ this ->mock ->getLastRequest ()->getUri ());
47+ $ this ->assertEquals ('GET ' , (string ) $ this ->mock ->getLastRequest ()->getMethod ());
48+ $ this ->assertInstanceOf (BulletinOrder::class, $ bulletinOrder );
49+ $ this ->assertEquals (1 , $ bulletinOrder ->ZoneID );
50+ $ this ->assertEquals (true , is_array ($ bulletinOrder ->OrderEntries ));
51+ $ this ->assertInstanceOf (BulletinOrderEntry::class, $ bulletinOrder ->OrderEntries [0 ]);
52+ }
53+
54+ function test_you_must_supply_a_zone_id_when_requesting_order_entries_or_have_an_exception_thrown ()
55+ {
56+ try {
57+ $ request = new BulletinOrderRequest ([]);
58+ } catch (CarouselRequestException $ e ){
59+ return ;
60+ }
61+ $ this ->fail ('The exception was not thrown ' );
62+ }
63+
64+ function test_you_can_save_the_order_back_to_the_server ()
65+ {
66+ $ request = new BulletinOrderRequest (['ZoneID ' =>1 ]);
67+ $ server = new API ();
68+ $ server
69+ ->addMockHandler ($ this ->handler )
70+ ->connect ('server ' ,'username ' ,'password ' );
71+
72+ $ bulletinOrder = $ server ->get ($ request );
73+
74+ $ this ->assertInstanceOf (BulletinOrder::class, $ bulletinOrder );
75+
76+ $ server ->save ($ bulletinOrder );
77+
78+ $ this ->assertEquals ('server/carouselapi/v1/orderentries ' , (string ) $ this ->mock ->getLastRequest ()->getUri ());
79+ $ this ->assertEquals ('POST ' , (string ) $ this ->mock ->getLastRequest ()->getMethod ());
80+ $ this ->assertArraySubset ($ bulletinOrder ->toArray (), json_decode ((string ) $ this ->mock ->getLastRequest ()->getBody (),true ));
81+ }
82+
83+ function test_trying_to_save_an_order_entry_will_throw_an_exception ()
84+ {
85+ $ server = new API ();
86+ $ server
87+ ->addMockHandler ($ this ->handler )
88+ ->connect ('server ' ,'username ' ,'password ' );
89+
90+ $ orderEntry = new BulletinOrderEntry (['id ' =>'1 ' ]);
91+
92+ try {
93+ $ server ->save ($ orderEntry );
94+ } catch (CarouselModelException $ e ){
95+ return ;
96+ }
97+
98+ $ this ->fail ('The exception was not thrown ' );
99+ }
100+
101+ function test_trying_to_create_a_bulletin_order_without_OrderEntries_on_the_props_will_throw_an_exception ()
102+ {
103+ try {
104+ $ fail = new BulletinOrder ('1 ' ,['prop ' =>'not an array ' ]);
105+ } catch (CarouselModelException $ e ){
106+ return ;
107+ }
108+
109+ $ this ->fail ('an exception was not thrown ' );
110+ }
111+
112+ function test_trying_to_create_a_bulletin_order_without_an_id_on_each_entry_will_throw_an_exception ()
113+ {
114+ try {
115+ $ fail = new BulletinOrder ('1 ' ,[['foo ' =>'I dont have an id ' ]]);
116+ } catch (CarouselModelException $ e ){
117+ return ;
118+ }
119+
120+ $ this ->fail ('an exception was not thrown ' );
121+ }
122+ }
0 commit comments