From: <fab...@us...> - 2008-08-18 19:12:17
|
Revision: 3718 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3718&view=rev Author: fabiomaulo Date: 2008-08-18 19:12:18 +0000 (Mon, 18 Aug 2008) Log Message: ----------- Only specific test about cascade refresh Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/Cascade/ trunk/nhibernate/src/NHibernate.Test/Cascade/Job.cs trunk/nhibernate/src/NHibernate.Test/Cascade/Job.hbm.xml trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.cs trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.hbm.xml trunk/nhibernate/src/NHibernate.Test/Cascade/RefreshFixture.cs Added: trunk/nhibernate/src/NHibernate.Test/Cascade/Job.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/Job.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/Job.cs 2008-08-18 19:12:18 UTC (rev 3718) @@ -0,0 +1,39 @@ +namespace NHibernate.Test.Cascade +{ + public class Job + { + private long id; + private JobBatch batch; + private string processingInstructions; + private int status; + public Job() {} + public Job(JobBatch batch) + { + this.batch = batch; + } + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual JobBatch Batch + { + get { return batch; } + set { batch = value; } + } + + public virtual string ProcessingInstructions + { + get { return processingInstructions; } + set { processingInstructions = value; } + } + + public virtual int Status + { + get { return status; } + set { status = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/Job.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/Job.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/Job.hbm.xml 2008-08-18 19:12:18 UTC (rev 3718) @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Cascade"> + + <class name="Job" table="T_JOB"> + <id name="Id" column="JOB_ID"> + <generator class="native"/> + </id> + + <many-to-one name="Batch" class="JobBatch" cascade="none" column="BATCH_ID"/> + + <property name="Status" type="int" column="JOB_STATUS" not-null="true"/> + <property name="ProcessingInstructions" type="string" column="PI" not-null="true"/> + + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.cs 2008-08-18 19:12:18 UTC (rev 3718) @@ -0,0 +1,42 @@ +using System; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.Cascade +{ + public class JobBatch + { + private long id; + private DateTime batchDate; + private ISet<Job> jobs = new HashedSet<Job>(); + public JobBatch() {} + public JobBatch(DateTime batchDate) + { + this.batchDate = batchDate; + } + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual DateTime BatchDate + { + get { return batchDate; } + set { batchDate = value; } + } + + public virtual ISet<Job> Jobs + { + get { return jobs; } + set { jobs = value; } + } + + public virtual Job CreateJob() + { + Job job = new Job(this); + jobs.Add(job); + return job; + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.hbm.xml 2008-08-18 19:12:18 UTC (rev 3718) @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Cascade"> + + <class name="JobBatch" table="T_JOB_BATCH"> + <id name="Id" column="BATCH_ID"> + <generator class="native"/> + </id> + + <property name="BatchDate" type="timestamp" column="BATCH_DATE" not-null="true"/> + + <set name="Jobs" inverse="true" fetch="select" lazy="true" cascade="all, refresh" generic="true"> + <key column="BATCH_ID"/> + <one-to-many class="Job"/> + </set> + + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/RefreshFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/RefreshFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/RefreshFixture.cs 2008-08-18 19:12:18 UTC (rev 3718) @@ -0,0 +1,61 @@ +using System; +using System.Collections; +using System.Data; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.Cascade +{ + [TestFixture] + public class RefreshFixture : TestCase + { + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override IList Mappings + { + get { return new string[] { "Cascade.Job.hbm.xml", "Cascade.JobBatch.hbm.xml" }; } + } + + [Test] + public void RefreshCascade() + { + ISession session = OpenSession(); + ITransaction txn = session.BeginTransaction(); + + JobBatch batch = new JobBatch(DateTime.Now); + batch.CreateJob().ProcessingInstructions = "Just do it!"; + batch.CreateJob().ProcessingInstructions = "I know you can do it!"; + + // write the stuff to the database; at this stage all job.status values are zero + session.Persist(batch); + session.Flush(); + + // behind the session's back, let's modify the statuses + UpdateStatuses(session); + + // Now lets refresh the persistent batch, and see if the refresh cascaded to the jobs collection elements + session.Refresh(batch); + + foreach (Job job in batch.Jobs) + { + Assert.That(job.Status, Is.EqualTo(1), "Jobs not refreshed!"); + } + + txn.Rollback(); + session.Close(); + } + + private void UpdateStatuses(ISession session) + { + IDbConnection conn = session.Connection; + IDbCommand cmd = conn.CreateCommand(); + cmd.CommandText = "UPDATE T_JOB SET JOB_STATUS = 1"; + cmd.CommandType = CommandType.Text; + session.Transaction.Enlist(cmd); + cmd.ExecuteNonQuery(); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-08-18 17:27:06 UTC (rev 3717) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-08-18 19:12:18 UTC (rev 3718) @@ -79,6 +79,9 @@ <Compile Include="CacheTest\CacheFixture.cs" /> <Compile Include="CacheTest\QueryCacheFixture.cs" /> <Compile Include="CacheTest\TimestamperFixture.cs" /> + <Compile Include="Cascade\Job.cs" /> + <Compile Include="Cascade\JobBatch.cs" /> + <Compile Include="Cascade\RefreshFixture.cs" /> <Compile Include="CfgTest\ConfigurationFixture.cs" /> <Compile Include="CfgTest\ConfigurationSchemaFixture.cs" /> <Compile Include="CfgTest\DefaultNsAssmFixture.cs" /> @@ -1414,6 +1417,8 @@ <EmbeddedResource Include="CompositeId\LineItem.hbm.xml" /> <EmbeddedResource Include="CompositeId\Order.hbm.xml" /> <EmbeddedResource Include="CompositeId\Product.hbm.xml" /> + <EmbeddedResource Include="Cascade\Job.hbm.xml" /> + <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> <EmbeddedResource Include="Extralazy\UserGroup.hbm.xml" /> <EmbeddedResource Include="Naturalid\Immutable\User.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |