1<?php
2/*
3 *  $Id$
4 *
5 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
6 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
8 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
14 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16 *
17 * This software consists of voluntary contributions made by many individuals
18 * and is licensed under the LGPL. For more information, see
19 * <http://www.doctrine-project.org>.
20 */
21
22/**
23 * Doctrine_Ticket_DC24_TestCase
24 *
25 * @package     Doctrine
26 * @author      Tomasz Jędrzejewski <http://www.zyxist.com/>
27 * @author      Jacek Jędrzejewski <http://www.jacek.jedrzejewski.name/>
28 * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
29 * @category    Object Relational Mapping
30 * @link        www.doctrine-project.org
31 * @since       1.1
32 * @version     $Revision$
33 */
34class Doctrine_Ticket_DC24_TestCase extends Doctrine_UnitTestCase
35{
36
37	public function prepareTables()
38	{
39        $this->tables = array('ticket_DC24_master', 'ticket_DC24_servant');
40        parent::prepareTables();
41	} // end prepareTables();
42
43	public function prepareData()
44	{
45		$servant = new Ticket_DC24_Servant;
46		$servant->bar = 6;
47		$servant->save();
48
49		$servantId = $servant->identifier();
50
51		$master = new Ticket_DC24_Master;
52		$master->foo = 6;
53		$master->servant_id = $servantId['id'];
54		$master->save();
55	} // end prepareData();
56
57	public function testTest()
58	{
59		try
60		{
61			$master = Doctrine_Query::create()
62				->select('m.*, s.bar AS joe')
63				->from('Ticket_DC24_Master m')
64				->innerJoin('m.Ticket_DC24_Servant s')
65				->where('m.id = 1')
66				->fetchOne();
67
68			$master->foo = 5;
69			$master->save();
70
71            $master2 = Doctrine_Query::create()
72				->select('m.*')
73				->from('Ticket_DC24_Master m')
74				->where('m.id = 1')
75				->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);
76            $this->assertEqual($master2['servant_id'], 1);
77		}
78		catch(Exception $e)
79		{
80			$this->fail($e->getMessage());
81		}
82	} // end testTest();
83
84} // end Doctrine_Ticket_DC24_TestCase;
85
86class Ticket_DC24_Master extends Doctrine_Record
87{
88    public function setTableDefinition()
89    {
90        $this->hasColumn('id', 'integer', 4, array(
91             'type' => 'integer',
92             'primary' => true,
93             'autoincrement' => true,
94             'length' => '4',
95             ));
96        $this->hasColumn('foo', 'integer', 4, array(
97             'type' => 'integer',
98             'notnull' => true,
99             'length' => '4',
100             ));
101        $this->hasColumn('servant_id', 'integer', 4, array(
102             'type' => 'integer',
103             //'notnull' => true,
104             'length' => '4',
105             ));
106    } // end setTableDefinition();
107
108    public function setUp()
109    {
110        $this->hasOne('Ticket_DC24_Servant', array(
111             'local' => 'servant_id',
112             'foreign' => 'id'));
113    } // end setUp();
114} // end Ticket_DC24_Master;
115
116class Ticket_DC24_Servant extends Doctrine_Record
117{
118    public function setTableDefinition()
119    {
120        $this->hasColumn('id', 'integer', 4, array(
121             'type' => 'integer',
122             'primary' => true,
123             'autoincrement' => true,
124             'length' => '4',
125             ));
126        $this->hasColumn('bar', 'integer', 4, array(
127             'type' => 'integer',
128             'notnull' => true,
129             'length' => '4',
130             ));
131    } // end setTableDefinition();
132
133	public function setUp()
134	{
135		$this->hasMany('Ticket_DC24_Master as Masters', array(
136             'local' => 'id',
137             'foreign' => 'servant_id'));
138	} // end setUp();
139} // end Ticket_DC24_Servant;