Permalink
Browse files

[2.0] Added EntityRepositoryTest. Updated build file and XML Schema f…

…or mapping files.
  • Loading branch information...
1 parent 7152da3 commit e161103e4b3378290c8db072f6f4899bbbbbd7d5 romanb committed Aug 14, 2009
View
@@ -1,4 +1,4 @@
-version=2.0
+version=2.0-alpha1
build.dir=build
dist.dir=dist
report.dir=reports
View
@@ -4,7 +4,7 @@
Doctrine 2 build file.
-->
-<project name="Doctrine2" default="dist-all" basedir=".">
+<project name="Doctrine2" default="dist-orm" basedir=".">
<property file="build.properties" />
@@ -71,8 +71,8 @@
<!--
Builds all packages, preparing them for distribution.
-->
- <target name="build-all" depends="prepare, build-common, build-dbal">
- <copy todir="${build.dir}/all">
+ <target name="build-orm" depends="prepare, build-common, build-dbal">
+ <copy todir="${build.dir}/orm">
<fileset refid="shared-artifacts"/>
<fileset refid="common-sources"/>
<fileset refid="dbal-sources"/>
@@ -104,7 +104,7 @@
Distributes the Doctrine Common package.
-->
<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">
<include name="**" />
</fileset>
@@ -115,7 +115,7 @@
Distributes the Doctrine DBAL package.
-->
<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">
<include name="**" />
</fileset>
@@ -126,9 +126,9 @@
DEFAULT TARGET
Tests, builds and distributes the full Doctrine package (Common+DBAL+ORM).
-->
- <target name="dist-all" depends="test, build-all, dist-common, dist-dbal">
- <tar destfile="${dist.dir}/Doctrine2-all.tar.gz" compression="gzip">
- <fileset dir="${build.dir}/all">
+ <target name="dist-orm" depends="test, build-orm, dist-common, dist-dbal">
+ <tar destfile="${dist.dir}/Doctrine-${version}-orm.tar.gz" compression="gzip">
+ <fileset dir="${build.dir}/orm">
<include name="**" />
</fileset>
</tar>
View
@@ -15,7 +15,8 @@
<xs:element name="doctrine-mapping">
<xs:complexType>
<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:complexType>
</xs:element>
@@ -31,9 +32,35 @@
<xs:element name="cascade-refresh" type="orm:emptyType" minOccurs="0"/>
</xs:sequence>
</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: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="field" type="orm:field" minOccurs="0" />
<xs:element name="one-to-one" type="orm:one-to-one" minOccurs="0"/>
@@ -43,17 +70,15 @@
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="table" 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="discriminator-value" type="xs:NMTOKEN"/>
</xs:complexType>
- <xs:complexType name="mapped-superclass">
- <xs:sequence>
- <xs:element name="id" type="orm:id" minOccurs="0" />
- <xs:element name="field" type="orm:field" minOccurs="0" />
- <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 name="mapped-superclass" >
+ <xs:complexContent>
+ <xs:extension base="orm:entity"/>
+ </xs:complexContent>
</xs:complexType>
<xs:simpleType name="inheritance-type">
@@ -71,13 +96,31 @@
<xs:enumeration value="IDENTITY"/>
<xs:enumeration value="AUTO"/>
</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:complexType name="field">
<xs:attribute name="name" type="xs:NMTOKEN" use="required" />
<xs:attribute name="type" type="xs:NMTOKEN" use="required" />
<xs:attribute name="column" 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 name="generator">
@@ -102,6 +145,10 @@
<xs:complexType name="join-column">
<xs:attribute name="name" 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 name="join-columns">
@@ -116,6 +163,7 @@
<xs:element name="inverse-join-columns" type="orm:join-columns" />
</xs:sequence>
<xs:attribute name="name" type="xs:NMTOKEN" use="required" />
+ <xs:attribute name="schema" type="xs:NMTOKEN" />
</xs:complexType>
<xs:complexType name="many-to-many">
@@ -134,6 +182,7 @@
<xs:attribute name="targetEntity" type="xs:NMTOKEN" use="required" />
<xs:attribute name="mappedBy" type="xs:NMTOKEN" />
<xs:attribute name="field" type="xs:NMTOKEN" use="required" />
+ <xs:attribute name="orphan-removal" type="xs:boolean" default="false" />
</xs:complexType>
<xs:complexType name="one-to-one">
@@ -147,6 +196,7 @@
<xs:attribute name="targetEntity" type="xs:NMTOKEN" use="required" />
<xs:attribute name="mappedBy" type="xs:NMTOKEN" />
<xs:attribute name="field" type="xs:NMTOKEN" use="required" />
+ <xs:attribute name="orphan-removal" type="xs:boolean" default="false" />
</xs:complexType>
</xs:schema>
@@ -39,6 +39,7 @@ public static function suite()
$suite->addTestSuite('Doctrine\Tests\ORM\Functional\LifecycleCallbackTest');
$suite->addTestSuite('Doctrine\Tests\ORM\Functional\StandardEntityPersisterTest');
$suite->addTestSuite('Doctrine\Tests\ORM\Functional\MappedSuperclassTest');
+ $suite->addTestSuite('Doctrine\Tests\ORM\Functional\EntityRepositoryTest');
$suite->addTest(Locking\AllTests::suite());
@@ -0,0 +1,70 @@
+<?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 @@
<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">
<generator strategy="AUTO"/>
</id>

0 comments on commit e161103

Please sign in to comment.