Commit e161103e authored by romanb's avatar romanb

[2.0] Added EntityRepositoryTest. Updated build file and XML Schema for mapping files.

parent 7152da32
version=2.0 version=2.0-alpha1
build.dir=build build.dir=build
dist.dir=dist dist.dir=dist
report.dir=reports report.dir=reports
\ No newline at end of file
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
Doctrine 2 build file. Doctrine 2 build file.
--> -->
<project name="Doctrine2" default="dist-all" basedir="."> <project name="Doctrine2" default="dist-orm" basedir=".">
<property file="build.properties" /> <property file="build.properties" />
...@@ -71,8 +71,8 @@ ...@@ -71,8 +71,8 @@
<!-- <!--
Builds all packages, preparing them for distribution. Builds all packages, preparing them for distribution.
--> -->
<target name="build-all" depends="prepare, build-common, build-dbal"> <target name="build-orm" depends="prepare, build-common, build-dbal">
<copy todir="${build.dir}/all"> <copy todir="${build.dir}/orm">
<fileset refid="shared-artifacts"/> <fileset refid="shared-artifacts"/>
<fileset refid="common-sources"/> <fileset refid="common-sources"/>
<fileset refid="dbal-sources"/> <fileset refid="dbal-sources"/>
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
Distributes the Doctrine Common package. Distributes the Doctrine Common package.
--> -->
<target name="dist-common"> <target name="dist-common">
<tar destfile="${dist.dir}/Doctrine2-common.tar.gz" compression="gzip"> <tar destfile="${dist.dir}/Doctrine-${version}-common.tar.gz" compression="gzip">
<fileset dir="${build.dir}/common"> <fileset dir="${build.dir}/common">
<include name="**" /> <include name="**" />
</fileset> </fileset>
...@@ -115,7 +115,7 @@ ...@@ -115,7 +115,7 @@
Distributes the Doctrine DBAL package. Distributes the Doctrine DBAL package.
--> -->
<target name="dist-dbal"> <target name="dist-dbal">
<tar destfile="${dist.dir}/Doctrine2-dbal.tar.gz" compression="gzip"> <tar destfile="${dist.dir}/Doctrine-${version}-dbal.tar.gz" compression="gzip">
<fileset dir="${build.dir}/dbal"> <fileset dir="${build.dir}/dbal">
<include name="**" /> <include name="**" />
</fileset> </fileset>
...@@ -126,9 +126,9 @@ ...@@ -126,9 +126,9 @@
DEFAULT TARGET DEFAULT TARGET
Tests, builds and distributes the full Doctrine package (Common+DBAL+ORM). Tests, builds and distributes the full Doctrine package (Common+DBAL+ORM).
--> -->
<target name="dist-all" depends="test, build-all, dist-common, dist-dbal"> <target name="dist-orm" depends="test, build-orm, dist-common, dist-dbal">
<tar destfile="${dist.dir}/Doctrine2-all.tar.gz" compression="gzip"> <tar destfile="${dist.dir}/Doctrine-${version}-orm.tar.gz" compression="gzip">
<fileset dir="${build.dir}/all"> <fileset dir="${build.dir}/orm">
<include name="**" /> <include name="**" />
</fileset> </fileset>
</tar> </tar>
......
...@@ -15,7 +15,8 @@ ...@@ -15,7 +15,8 @@
<xs:element name="doctrine-mapping"> <xs:element name="doctrine-mapping">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="entity" type="orm:entity" /> <xs:element name="mapped-superclass" type="orm:mapped-superclass" minOccurs="0" />
<xs:element name="entity" type="orm:entity" minOccurs="0" />
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
...@@ -31,9 +32,35 @@ ...@@ -31,9 +32,35 @@
<xs:element name="cascade-refresh" type="orm:emptyType" minOccurs="0"/> <xs:element name="cascade-refresh" type="orm:emptyType" minOccurs="0"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
<xs:simpleType name="lifecycle-callback-type">
<xs:restriction base="xs:token">
<xs:enumeration value="prePersist"/>
<xs:enumeration value="postPersist"/>
<xs:enumeration value="preUpdate"/>
<xs:enumeration value="postUpdate"/>
<xs:enumeration value="preRemove"/>
<xs:enumeration value="postRemove"/>
<xs:enumeration value="postLoad"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="lifecycle-callback">
<xs:attribute name="type" type="orm:lifecycle-callback-type" use="required" />
<xs:attribute name="method" type="xs:NMTOKEN" use="required" />
</xs:complexType>
<xs:complexType name="lifecycle-callbacks">
<xs:sequence>
<xs:element name="lifecycle-callback" type="orm:lifecycle-callback" minOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="entity"> <xs:complexType name="entity">
<xs:sequence> <xs:sequence>
<xs:element name="discriminator-column" type="orm:discriminator-column" minOccurs="0"/>
<xs:element name="subclasses" type="xs:NMTOKENS" minOccurs="0"/>
<xs:element name="lifecycle-callbacks" type="orm:lifecycle-callbacks" minOccurs="0" maxOccurs="1" />
<xs:element name="id" type="orm:id" /> <xs:element name="id" type="orm:id" />
<xs:element name="field" type="orm:field" minOccurs="0" /> <xs:element name="field" type="orm:field" minOccurs="0" />
<xs:element name="one-to-one" type="orm:one-to-one" minOccurs="0"/> <xs:element name="one-to-one" type="orm:one-to-one" minOccurs="0"/>
...@@ -43,17 +70,15 @@ ...@@ -43,17 +70,15 @@
<xs:attribute name="name" type="xs:string" use="required" /> <xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="table" type="xs:NMTOKEN" /> <xs:attribute name="table" type="xs:NMTOKEN" />
<xs:attribute name="schema" type="xs:NMTOKEN" /> <xs:attribute name="schema" type="xs:NMTOKEN" />
<xs:attribute name="repository-class" type="xs:NMTOKEN"/>
<xs:attribute name="inheritance-type" type="orm:inheritance-type"/> <xs:attribute name="inheritance-type" type="orm:inheritance-type"/>
<xs:attribute name="discriminator-value" type="xs:NMTOKEN"/>
</xs:complexType> </xs:complexType>
<xs:complexType name="mapped-superclass"> <xs:complexType name="mapped-superclass" >
<xs:sequence> <xs:complexContent>
<xs:element name="id" type="orm:id" minOccurs="0" /> <xs:extension base="orm:entity"/>
<xs:element name="field" type="orm:field" minOccurs="0" /> </xs:complexContent>
<xs:element name="one-to-many" type="orm:one-to-many" minOccurs="0" />
<xs:element name="many-to-many" type="orm:many-to-many" minOccurs="0" />
</xs:sequence>
<xs:attribute name="name" type="xs:NMTOKEN" use="required" />
</xs:complexType> </xs:complexType>
<xs:simpleType name="inheritance-type"> <xs:simpleType name="inheritance-type">
...@@ -71,6 +96,14 @@ ...@@ -71,6 +96,14 @@
<xs:enumeration value="IDENTITY"/> <xs:enumeration value="IDENTITY"/>
<xs:enumeration value="AUTO"/> <xs:enumeration value="AUTO"/>
</xs:restriction> </xs:restriction>
</xs:simpleType>
<xs:simpleType name="fk-action">
<xs:restriction base="xs:token">
<xs:enumeration value="CASCADE"/>
<xs:enumeration value="RESTRICT"/>
<xs:enumeration value="SET_NULL"/>
</xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:complexType name="field"> <xs:complexType name="field">
...@@ -78,6 +111,16 @@ ...@@ -78,6 +111,16 @@
<xs:attribute name="type" type="xs:NMTOKEN" use="required" /> <xs:attribute name="type" type="xs:NMTOKEN" use="required" />
<xs:attribute name="column" type="xs:NMTOKEN" /> <xs:attribute name="column" type="xs:NMTOKEN" />
<xs:attribute name="length" type="xs:NMTOKEN" /> <xs:attribute name="length" type="xs:NMTOKEN" />
<xs:attribute name="unique" type="xs:boolean" default="false" />
<xs:attribute name="nullable" type="xs:boolean" default="false" />
<xs:attribute name="version" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="discriminator-column">
<xs:attribute name="name" type="xs:NMTOKEN" use="required" />
<xs:attribute name="type" type="xs:NMTOKEN" use="required" />
<xs:attribute name="field-name" type="xs:NMTOKEN" />
<xs:attribute name="length" type="xs:NMTOKEN" />
</xs:complexType> </xs:complexType>
<xs:complexType name="generator"> <xs:complexType name="generator">
...@@ -102,6 +145,10 @@ ...@@ -102,6 +145,10 @@
<xs:complexType name="join-column"> <xs:complexType name="join-column">
<xs:attribute name="name" type="xs:NMTOKEN" use="required" /> <xs:attribute name="name" type="xs:NMTOKEN" use="required" />
<xs:attribute name="referencedColumnName" type="xs:NMTOKEN" use="required" /> <xs:attribute name="referencedColumnName" type="xs:NMTOKEN" use="required" />
<xs:attribute name="unique" type="xs:boolean" default="false" />
<xs:attribute name="nullable" type="xs:boolean" default="true" />
<xs:attribute name="on-delete" type="orm:fk-action" />
<xs:attribute name="on-update" type="orm:fk-action" />
</xs:complexType> </xs:complexType>
<xs:complexType name="join-columns"> <xs:complexType name="join-columns">
...@@ -116,6 +163,7 @@ ...@@ -116,6 +163,7 @@
<xs:element name="inverse-join-columns" type="orm:join-columns" /> <xs:element name="inverse-join-columns" type="orm:join-columns" />
</xs:sequence> </xs:sequence>
<xs:attribute name="name" type="xs:NMTOKEN" use="required" /> <xs:attribute name="name" type="xs:NMTOKEN" use="required" />
<xs:attribute name="schema" type="xs:NMTOKEN" />
</xs:complexType> </xs:complexType>
<xs:complexType name="many-to-many"> <xs:complexType name="many-to-many">
...@@ -134,6 +182,7 @@ ...@@ -134,6 +182,7 @@
<xs:attribute name="targetEntity" type="xs:NMTOKEN" use="required" /> <xs:attribute name="targetEntity" type="xs:NMTOKEN" use="required" />
<xs:attribute name="mappedBy" type="xs:NMTOKEN" /> <xs:attribute name="mappedBy" type="xs:NMTOKEN" />
<xs:attribute name="field" type="xs:NMTOKEN" use="required" /> <xs:attribute name="field" type="xs:NMTOKEN" use="required" />
<xs:attribute name="orphan-removal" type="xs:boolean" default="false" />
</xs:complexType> </xs:complexType>
<xs:complexType name="one-to-one"> <xs:complexType name="one-to-one">
...@@ -147,6 +196,7 @@ ...@@ -147,6 +196,7 @@
<xs:attribute name="targetEntity" type="xs:NMTOKEN" use="required" /> <xs:attribute name="targetEntity" type="xs:NMTOKEN" use="required" />
<xs:attribute name="mappedBy" type="xs:NMTOKEN" /> <xs:attribute name="mappedBy" type="xs:NMTOKEN" />
<xs:attribute name="field" type="xs:NMTOKEN" use="required" /> <xs:attribute name="field" type="xs:NMTOKEN" use="required" />
<xs:attribute name="orphan-removal" type="xs:boolean" default="false" />
</xs:complexType> </xs:complexType>
</xs:schema> </xs:schema>
\ No newline at end of file
...@@ -39,6 +39,7 @@ class AllTests ...@@ -39,6 +39,7 @@ class AllTests
$suite->addTestSuite('Doctrine\Tests\ORM\Functional\LifecycleCallbackTest'); $suite->addTestSuite('Doctrine\Tests\ORM\Functional\LifecycleCallbackTest');
$suite->addTestSuite('Doctrine\Tests\ORM\Functional\StandardEntityPersisterTest'); $suite->addTestSuite('Doctrine\Tests\ORM\Functional\StandardEntityPersisterTest');
$suite->addTestSuite('Doctrine\Tests\ORM\Functional\MappedSuperclassTest'); $suite->addTestSuite('Doctrine\Tests\ORM\Functional\MappedSuperclassTest');
$suite->addTestSuite('Doctrine\Tests\ORM\Functional\EntityRepositoryTest');
$suite->addTest(Locking\AllTests::suite()); $suite->addTest(Locking\AllTests::suite());
......
<?php
namespace Doctrine\Tests\ORM\Functional;
use Doctrine\Tests\Models\CMS\CmsUser;
use Doctrine\Tests\Models\CMS\CmsPhonenumber;
require_once __DIR__ . '/../../TestInit.php';
/**
* Description of DetachedEntityTest
*
* @author robo
*/
class EntityRepositoryTest extends \Doctrine\Tests\OrmFunctionalTestCase
{
protected function setUp() {
$this->useModelSet('cms');
parent::setUp();
}
public function testBasicFinders() {
$user = new CmsUser;
$user->name = 'Roman';
$user->username = 'romanb';
$user->status = 'freak';
$this->_em->persist($user);
$user2 = new CmsUser;
$user2->name = 'Guilherme';
$user2->username = 'gblanco';
$user2->status = 'dev';
$this->_em->persist($user2);
$this->_em->flush();
$user1Id = $user->getId();
unset($user);
unset($user2);
$this->_em->clear();
$repos = $this->_em->getRepository('Doctrine\Tests\Models\CMS\CmsUser');
$user = $repos->find($user1Id);
$this->assertTrue($user instanceof CmsUser);
$this->assertEquals('Roman', $user->name);
$this->assertEquals('freak', $user->status);
$this->_em->clear();
$users = $repos->findBy(array('status' => 'dev'));
$this->assertEquals(1, count($users));
$this->assertTrue($users[0] instanceof CmsUser);
$this->assertEquals('Guilherme', $users[0]->name);
$this->assertEquals('dev', $users[0]->status);
$this->_em->clear();
$users = $repos->findByStatus('dev');
$this->assertEquals(1, count($users));
$this->assertTrue($users[0] instanceof CmsUser);
$this->assertEquals('Guilherme', $users[0]->name);
$this->assertEquals('dev', $users[0]->status);
$this->_em->clear();
$users = $repos->findAll();
$this->assertEquals(2, count($users));
}
}
...@@ -7,6 +7,10 @@ ...@@ -7,6 +7,10 @@
<entity name="Doctrine\Tests\ORM\Mapping\User" table="cms_users"> <entity name="Doctrine\Tests\ORM\Mapping\User" table="cms_users">
<lifecycle-callbacks>
<lifecycle-callback type="prePersist" method="onPrePersist" />
</lifecycle-callbacks>
<id name="id" type="integer" column="id"> <id name="id" type="integer" column="id">
<generator strategy="AUTO"/> <generator strategy="AUTO"/>
</id> </id>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment