Refactored the Kernel registration fluent interface to be more readable, better suppo...
[castle.git] / Facilities / IBatisNet / Castle.Facilities.IBatisNetIntegration.Tests / ServiceTestCase.cs
blob7f6042bd6fc03825e583ea250ed684e9d7baf663
1 #region License
3 // Copyright 2004-2008 Castle Project - http://www.castleproject.org/
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 // --
18 //
19 // This facility was a contribution kindly
20 // donated by Gilles Bayon <gilles.bayon@gmail.com>
21 //
22 // --
24 #endregion
26 namespace Castle.Facilities.IBatisNetIntegration.Tests
28 using System;
29 using Castle.Facilities.AutomaticTransactionManagement;
30 using Castle.Facilities.IBatisNetIntegration.Tests.Dao;
31 using Castle.Facilities.IBatisNetIntegration.Tests.Domain;
32 using NUnit.Framework;
34 [TestFixture]
35 public class ServiceTestCase : AbstractIBatisNetTestCase
37 [Test]
38 public void CommonUsage()
40 container = CreateConfiguredContainer();
41 container.AddFacility("IBatisNet", new IBatisNetFacility());
43 container.AddComponent("AccountDao", typeof (IAccountDao), typeof (AccountDao));
44 container.AddComponent("Service", typeof (IService), typeof (Service));
46 ResetDatabase();
47 IService service = container["Service"] as IService;
49 Account account = service.GetAccount(5);
51 AssertAccount5(account);
54 [Test]
55 public void TransactionalUsage()
57 container = CreateConfiguredContainer();
58 container.AddFacility("IBatisNet", new IBatisNetFacility());
59 container.AddFacility("transaction", new TransactionFacility());
61 container.AddComponent("AccountDao", typeof (IAccountDao), typeof (AccountDao));
62 container.AddComponent("Service", typeof (IService), typeof (Service));
64 ResetDatabase();
65 IService service = container["Service"] as IService;
67 Account account = new Account();
68 account.Id = 999;
69 account.EmailAddress = "ibatis@somewhere.com";
70 account.FirstName = "Gilles";
71 account.LastName = "Bayon";
73 service.InsertTransactionalAccount(account);
74 account = null;
75 account = service.GetAccountWithSpecificDataMapper(999) as Account;
77 Assert.IsNotNull(account);
78 Assert.AreEqual(999, account.Id, "account.Id");
82 [Test]
83 public void NoSessionOpen()
85 container = CreateConfiguredContainer();
86 container.AddFacility("IBatisNet", new IBatisNetFacility());
87 container.AddFacility("transaction", new TransactionFacility());
89 container.AddComponent("AccountDao", typeof (IAccountDao), typeof (AccountDao));
90 container.AddComponent("Service", typeof (IService), typeof (Service));
92 IService service = container["Service"] as IService;
93 service.DummyNoSession();
96 [Test]
97 public void Rollback()
99 container = CreateConfiguredContainer();
100 container.AddFacility("IBatisNet", new IBatisNetFacility());
101 container.AddFacility("transaction", new TransactionFacility());
103 container.AddComponent("AccountDao", typeof (IAccountDao), typeof (AccountDao));
104 container.AddComponent("Service", typeof (IService), typeof (Service));
106 ResetDatabase();
107 IService service = container["Service"] as IService;
109 Account account = new Account();
110 account.Id = 999;
111 account.EmailAddress = "ibatis@somewhere.com";
112 account.FirstName = "Transaction";
113 account.LastName = "Error";
117 service.InsertTransactionalAccountWithError(account);
118 Assert.Fail("Exception was expected");
120 catch (Exception)
122 // Expected
125 account = null;
126 account = service.GetAccountWithSpecificDataMapper(999) as Account;
128 Assert.IsNull(account);