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