|
From: <fab...@us...> - 2008-10-10 16:20:32
|
Revision: 3833
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3833&view=rev
Author: fabiomaulo
Date: 2008-10-10 16:20:24 +0000 (Fri, 10 Oct 2008)
Log Message:
-----------
another test to support Xml entityMode
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/
trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/MultiRepresentationFixture.cs
trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.cs
trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.hbm.xml
trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.cs
trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.hbm.xml
Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/MultiRepresentationFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/MultiRepresentationFixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/MultiRepresentationFixture.cs 2008-10-10 16:20:24 UTC (rev 3833)
@@ -0,0 +1,189 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Xml;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+
+namespace NHibernate.Test.EntityModeTest.Multi
+{
+ [TestFixture, Ignore("Not supported yet.")]
+ public class MultiRepresentationFixture : TestCase
+ {
+ protected override string MappingsAssembly
+ {
+ get { return "NHibernate.Test"; }
+ }
+
+ protected override IList Mappings
+ {
+ get { return new[] {"EntityModeTest.Multi.Stock.hbm.xml", "EntityModeTest.Multi.Valuation.hbm.xml"}; }
+ }
+
+ private class TestData
+ {
+ private readonly ISessionFactory sessions;
+ public long stockId;
+
+ public TestData(ISessionFactory factory)
+ {
+ sessions = factory;
+ }
+
+ public void Create()
+ {
+ ISession session = sessions.OpenSession();
+ session.BeginTransaction();
+ var stock = new Stock {TradeSymbol = "NHForge"};
+ var valuation = new Valuation {Stock = stock, ValuationDate = DateTime.Now, Value = 200.0D};
+ stock.CurrentValuation = valuation;
+ stock.Valuations.Add(valuation);
+
+ session.Save(stock);
+ session.Save(valuation);
+
+ session.Transaction.Commit();
+ session.Close();
+
+ stockId = stock.Id;
+ }
+
+ public void Destroy()
+ {
+ ISession session = sessions.OpenSession();
+ session.BeginTransaction();
+ IList<Stock> stocks = session.CreateQuery("from Stock").List<Stock>();
+ foreach (Stock stock in stocks)
+ {
+ stock.CurrentValuation = null;
+ session.Flush();
+ foreach (Valuation valuation in stock.Valuations)
+ {
+ session.Delete(valuation);
+ }
+ session.Delete(stock);
+ }
+ session.Transaction.Commit();
+ session.Close();
+ }
+ }
+
+ [Test]
+ public void PocoRetreival()
+ {
+ var testData = new TestData(sessions);
+ testData.Create();
+
+ ISession session = OpenSession();
+ ITransaction txn = session.BeginTransaction();
+
+ var stock = session.Get<Stock>(1);
+ Assert.That(stock.Id, Is.EqualTo(1L));
+
+ txn.Commit();
+ session.Close();
+
+ testData.Destroy();
+ }
+
+ [Test]
+ public void XmlHQL()
+ {
+ var testData = new TestData(sessions);
+ testData.Create();
+
+ ISession session = OpenSession();
+ ITransaction txn = session.BeginTransaction();
+ ISession xml = session.GetSession(EntityMode.Xml);
+
+ IList result = xml.CreateQuery("from Stock").List();
+
+ Assert.That(result.Count, Is.EqualTo(1L));
+ var element = (XmlElement) result[0];
+ Assert.That(element.Attributes["id"], Is.EqualTo(testData.stockId));
+
+ Console.WriteLine("**** XML: ****************************************************");
+ //prettyPrint( element );
+ Console.WriteLine("**************************************************************");
+
+ txn.Rollback();
+ session.Close();
+
+ testData.Destroy();
+ }
+
+ [Test]
+ public void XmlRetreival()
+ {
+ var testData = new TestData(sessions);
+ testData.Create();
+
+ ISession session = OpenSession();
+ ITransaction txn = session.BeginTransaction();
+ ISession xml = session.GetSession(EntityMode.Xml);
+
+ object rtn = xml.Get(typeof (Stock).FullName, testData.stockId);
+ var element = (XmlElement) rtn;
+
+ Assert.That(element.Attributes["id"], Is.EqualTo(testData.stockId));
+
+ Console.WriteLine("**** XML: ****************************************************");
+ //prettyPrint( element );
+ Console.WriteLine("**************************************************************");
+
+ XmlNode currVal = element.GetElementsByTagName("currentValuation")[0];
+
+ Console.WriteLine("**** XML: ****************************************************");
+ //prettyPrint( currVal );
+ Console.WriteLine("**************************************************************");
+
+ txn.Rollback();
+ session.Close();
+
+ testData.Destroy();
+ }
+
+ [Test]
+ public void XmlSave()
+ {
+ var testData = new TestData(sessions);
+ testData.Create();
+
+ ISession pojos = OpenSession();
+ ITransaction txn = pojos.BeginTransaction();
+ ISession xml = pojos.GetSession(EntityMode.Xml);
+
+ var domDoc = new XmlDocument();
+ XmlElement stock = domDoc.CreateElement("stock");
+ domDoc.AppendChild(stock);
+ XmlElement tradeSymbol = domDoc.CreateElement("tradeSymbol");
+ tradeSymbol.InnerText = "Microsoft";
+ stock.AppendChild(tradeSymbol);
+
+ XmlElement cval = domDoc.CreateElement("currentValuation");
+ XmlElement val = domDoc.CreateElement("valuation");
+ stock.AppendChild(cval);
+ //val.appendContent(stock); TODO
+ XmlElement valuationDate = domDoc.CreateElement("valuationDate");
+ tradeSymbol.InnerText = DateTime.Now.ToString();
+ val.AppendChild(valuationDate);
+
+ XmlElement value = domDoc.CreateElement("value");
+ tradeSymbol.InnerText = "121.00";
+ val.AppendChild(value);
+
+ xml.Save(typeof (Stock).FullName, stock);
+ xml.Flush();
+
+ txn.Rollback();
+ pojos.Close();
+
+ Assert.That(!pojos.IsOpen);
+ Assert.That(!xml.IsOpen);
+
+ //prettyPrint( stock );
+
+ testData.Destroy();
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.cs 2008-10-10 16:20:24 UTC (rev 3833)
@@ -0,0 +1,21 @@
+using Iesi.Collections.Generic;
+
+namespace NHibernate.Test.EntityModeTest.Multi
+{
+ public class Stock
+ {
+ private ISet<Valuation> valuations = new HashedSet<Valuation>();
+
+ public virtual long Id { get; set; }
+
+ public virtual string TradeSymbol { get; set; }
+
+ public virtual Valuation CurrentValuation { get; set; }
+
+ public virtual ISet<Valuation> Valuations
+ {
+ get { return valuations; }
+ set { valuations = value; }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.hbm.xml 2008-10-10 16:20:24 UTC (rev 3833)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.EntityModeTest.Multi">
+
+ <class table="STOCK" name="Stock" node="stock">
+
+ <id name="Id" column="STOCK_ID" node="@id">
+ <generator class="increment"/>
+ </id>
+
+ <property name="TradeSymbol" type="string" column="SYMBOL"/>
+
+ <many-to-one name="CurrentValuation" class="Valuation" column="CURR_VAL_ID" cascade="all" />
+
+ <set name="Valuations" cascade="all" lazy="true">
+ <key column="STOCK_ID"/>
+ <one-to-many class="Valuation"/>
+ </set>
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.cs 2008-10-10 16:20:24 UTC (rev 3833)
@@ -0,0 +1,15 @@
+using System;
+
+namespace NHibernate.Test.EntityModeTest.Multi
+{
+ public class Valuation
+ {
+ public virtual long Id { get; set; }
+
+ public virtual Stock Stock { get; set; }
+
+ public virtual DateTime ValuationDate { get; set; }
+
+ public virtual double Value { get; set; }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.hbm.xml 2008-10-10 16:20:24 UTC (rev 3833)
@@ -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.EntityModeTest.Multi">
+
+ <class table="STOCK_VAL" name="Valuation" node="valuation">
+
+ <id name="Id" column="VAL_ID" node="@id">
+ <generator class="increment"/>
+ </id>
+
+ <many-to-one name="Stock" embed-xml="false"
+ class="Stock" column="STOCK_ID" cascade="none" />
+
+ <property name="ValuationDate" type="date" column="DT"/>
+ <property name="Value" type="double" column="VAL"/>
+
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-10 13:58:37 UTC (rev 3832)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-10 16:20:24 UTC (rev 3833)
@@ -160,6 +160,9 @@
<Compile Include="DynamicEntity\Tuplizer\TuplizerDynamicEntity.cs" />
<Compile Include="EngineTest\TypedValueFixture.cs" />
<Compile Include="EntityModeTest\Map\Basic\DynamicClassFixture.cs" />
+ <Compile Include="EntityModeTest\Multi\MultiRepresentationFixture.cs" />
+ <Compile Include="EntityModeTest\Multi\Stock.cs" />
+ <Compile Include="EntityModeTest\Multi\Valuation.cs" />
<Compile Include="EntityModeTest\Xml\Accessors\XmlAccessorFixture.cs" />
<Compile Include="EntityModeTest\Xml\Basic\XmlFixture.cs" />
<Compile Include="EntityModeTest\Xml\Many2One\Car.cs" />
@@ -1493,7 +1496,9 @@
<EmbeddedResource Include="Cascade\JobBatch.hbm.xml" />
<EmbeddedResource Include="Deletetransient\Person.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
- <Content Include="EntityModeTest\Xml\Many2One\Car.hbm.xml" />
+ <EmbeddedResource Include="EntityModeTest\Multi\Stock.hbm.xml" />
+ <EmbeddedResource Include="EntityModeTest\Multi\Valuation.hbm.xml" />
+ <EmbeddedResource Include="EntityModeTest\Xml\Many2One\Car.hbm.xml" />
<EmbeddedResource Include="EntityModeTest\Xml\Basic\AB.hbm.xml" />
<EmbeddedResource Include="EntityModeTest\Xml\Basic\Account.hbm.xml" />
<EmbeddedResource Include="EntityModeTest\Xml\Basic\Employer.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|