<?php

namespace Doctrine\Tests\ORM\Functional\Ticket;

use Doctrine\Tests\Models\CMS\CmsUser;
use Doctrine\Tests\Models\CMS\CmsAddress;

/**
 * @group DDC-1494
 */
class DDC1494Test extends \Doctrine\Tests\OrmFunctionalTestCase
{

    protected function setUp()
    {
        $this->useModelSet('cms');
        parent::setUp();
    }

    public function testIssue()
    {
        $user1 = new CmsUser;
        $user1->name = "Benjamin";
        $user1->username = "beberlei";
        $user1->status = "active";
        $address1 = new CmsAddress;
        $address1->country = "Germany";
        $address1->street = "Somestreet";
        $address1->zip = 12345;
        $address1->city = "Bonn";
        $user1->setAddress($address1);

        $this->_em->persist($user1);

        $user2 = new CmsUser;
        $user2->name = "Benjamin";
        $user2->username = "beberlei2";
        $user2->status = "active";
        $address2 = new CmsAddress;
        $address2->country = "Germany";
        $address2->street = "Somestreet";
        $address2->zip = 54321;
        $address2->city = "Bonn";
        $user2->setAddress($address2);

        $this->_em->persist($user2);
        $this->_em->flush();
        $this->_em->clear();

        $dql = "SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u INNER JOIN u.address a WHERE a.zip = :cid";
        $query = $this->_em->createQuery($dql);
        $auser1 = $query->setParameter('cid', 12345)->getResult();
        $auser2 = $query->setParameter('cid', 54321)->getResult();

        $this->assertNotSame($auser1[0], $auser2[0]);
    }
}

