|
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.
|