Yaffs site version 1.1
[yaffs-website] / vendor / gabordemooij / redbean / testing / RedUNIT / Base / Dispense.php
1 <?php
2
3 namespace RedUNIT\Base;
4
5 use RedUNIT\Base as Base;
6 use RedBeanPHP\Facade as R;
7 use RedBeanPHP\RedException as RedException;
8 use RedBeanPHP\Facade as Facade;
9 use RedBeanPHP\OODBBean as OODBBean;
10
11 /**
12  * Dispense
13  *
14  * Tests whether we can dispense beans and tests all
15  * features of the dispense/dispenseAll functions.
16  *
17  * @file    RedUNIT/Base/Dispense.php
18  * @desc    Tests bean dispensing functionality.
19  * @author  Gabor de Mooij and the RedBeanPHP Community
20  * @license New BSD/GPLv2
21  *
22  * (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community.
23  * This source file is subject to the New BSD/GPLv2 License that is bundled
24  * with this source code in the file license.txt.
25  */
26 class Dispense extends Base
27 {
28         /**
29          * Test dispense.
30          *
31          * @return void
32          */
33         public function testBasicsDispense()
34         {
35                 $redbean = R::getRedBean();
36
37                 // Can we dispense a bean?
38                 $page = $redbean->dispense( "page" );
39
40                 // Does it have a meta type?
41                 asrt( ( (bool) $page->getMeta( "type" ) ), TRUE );
42
43                 // Does it have an ID?
44                 asrt( isset( $page->id ), TRUE );
45
46                 // Type should be 'page'
47                 asrt( ( $page->getMeta( "type" ) ), "page" );
48
49                 // ID should be 0 because bean does not exist in database yet.
50                 asrt( ( $page->id ), 0 );
51
52                 // Try some faulty dispense actions.
53                 foreach ( array( "", ".", "-") as $value ) {
54                         try {
55                                 $redbean->dispense( $value );
56
57                                 fail();
58                         } catch (RedException $e ) {
59                                 pass();
60                         }
61                 }
62
63                 $bean = $redbean->dispense( "testbean" );
64
65                 $bean["property"] = 123;
66                 $bean["abc"]      = "def";
67
68                 asrt( $bean["property"], 123 );
69                 asrt( $bean["abc"], "def" );
70                 asrt( $bean->abc, "def" );
71
72                 asrt( isset( $bean["abd"] ), FALSE );
73                 asrt( isset( $bean["abc"] ), TRUE );
74         }
75
76         /**
77          * Tests the facade-only dispenseAll method.
78          *
79          * @return void
80          */
81         public function testDispenseAll()
82         {
83                 list( $book, $page ) = Facade::dispenseAll( 'book,page' );
84                 asrt( ( $book instanceof OODBBean ), TRUE );
85                 asrt( ( $page instanceof OODBBean ), TRUE );
86                 asrt( $book->getMeta( 'type' ), 'book');
87                 asrt( $page->getMeta( 'type' ), 'page');
88
89                 list( $book, $page, $texts, $mark ) = R::dispenseAll( 'book,page,text*2,mark' );
90                 asrt( ( $book instanceof OODBBean ), TRUE );
91                 asrt( ( $page instanceof OODBBean ), TRUE );
92                 asrt( is_array( $texts ), TRUE );
93                 asrt( ( $mark instanceof OODBBean ), TRUE );
94                 asrt( $book->getMeta( 'type'), 'book' );
95                 asrt( $page->getMeta( 'type'), 'page' );
96                 asrt( $mark->getMeta( 'type'), 'mark' );
97                 asrt( $texts[0]->getMeta( 'type'), 'text' );
98                 asrt( $texts[1]->getMeta( 'type'), 'text' );
99
100                 list( $eggs, $milk, $butter ) = R::dispenseAll( 'eggs*3,milk*1,butter*9' );
101                 asrt( count( $eggs ), 3 );
102                 asrt( ( $milk instanceof OODBBean ), TRUE );
103                 asrt( count( $butter ), 9 );
104
105                 list( $eggs, $milk, $butter ) = R::dispenseAll( 'eggs*3,milk*1,butter*9', TRUE );
106                 asrt( count( $eggs ), 3 );
107                 asrt( count( $milk ), 1 );
108                 asrt( count( $eggs ), 3 );
109
110                 list( $beer ) = R::dispenseAll( 'beer*0', TRUE );
111                 asrt( is_array( $beer ), TRUE );
112                 asrt( count( $beer ), 0 );
113
114                 list( $beer ) = R::dispenseAll( 'beer*0', FALSE );
115                 asrt( is_array( $beer ), FALSE );
116                 asrt( is_null( $beer ), TRUE );
117                 asrt( count( $beer ), 0 );
118         }
119
120         /**
121          * Tests different return values of dispense().
122          *
123          * @return void
124          */
125         public function testDispenseArray()
126         {
127                 $oodb = R::getRedBean();
128                 $array = $oodb->dispense( 'book', 0, TRUE );
129                 asrt( is_array( $array ), TRUE );
130                 $array = $oodb->dispense( 'book', 1, TRUE );
131                 asrt( is_array( $array ), TRUE );
132                 $array = $oodb->dispense( 'book', 2, TRUE );
133                 asrt( is_array( $array ), TRUE );
134                 $array = R::dispense( 'book', 0, TRUE );
135                 asrt( is_array( $array ), TRUE );
136                 $array = R::dispense( 'book', 1, TRUE );
137                 asrt( is_array( $array ), TRUE );
138                 $array = R::dispense( 'book', 2, TRUE );
139                 asrt( is_array( $array ), TRUE );
140
141                 $array = $oodb->dispense( 'book', 0, FALSE );
142                 asrt( is_array( $array ), FALSE );
143                 asrt( is_null( $array ), TRUE );
144                 $array = $oodb->dispense( 'book', 1, FALSE );
145                 asrt( is_array( $array ), FALSE );
146                 asrt( ( $array instanceof OODBBean ), TRUE );
147                 $array = $oodb->dispense( 'book', 2, FALSE );
148                 asrt( is_array( $array ), TRUE );
149                 $array = R::dispense( 'book', 0, FALSE );
150                 asrt( is_array( $array ), FALSE );
151                 $array = R::dispense( 'book', 1, FALSE );
152                 asrt( is_array( $array ), FALSE );
153                 $array = R::dispense( 'book', 2, FALSE );
154                 asrt( is_array( $array ), TRUE );
155
156                 $array = $oodb->dispense( 'book', 0 );
157                 asrt( is_array( $array ), FALSE );
158                 asrt( is_null( $array ), TRUE );
159                 $array = $oodb->dispense( 'book', 1 );
160                 asrt( is_array( $array ), FALSE );
161                 asrt( ( $array instanceof OODBBean ), TRUE );
162                 $array = $oodb->dispense( 'book', 2 );
163                 asrt( is_array( $array ), TRUE );
164                 $array = R::dispense( 'book', 0 );
165                 asrt( is_array( $array ), FALSE );
166                 $array = R::dispense( 'book', 1 );
167                 asrt( is_array( $array ), FALSE );
168                 $array = R::dispense( 'book', 2 );
169                 asrt( is_array( $array ), TRUE );
170         }
171 }