3 // Copyright 2004-2008 Castle Project - http://www.castleproject.org/
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
9 // http://www.apache.org/licenses/LICENSE-2.0
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.
19 // This facility was a contribution kindly
20 // donated by Gilles Bayon <gilles.bayon@gmail.com>
26 namespace Castle
.Facilities
.IBatisNetIntegration
.Tests
29 using Castle
.Facilities
.AutomaticTransactionManagement
;
30 using Castle
.Facilities
.IBatisNetIntegration
.Tests
.Dao
;
31 using Castle
.Facilities
.IBatisNetIntegration
.Tests
.Domain
;
32 using NUnit
.Framework
;
35 public class ServiceTestCase
: AbstractIBatisNetTestCase
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
));
47 IService service
= container
["Service"] as IService
;
49 Account account
= service
.GetAccount(5);
51 AssertAccount5(account
);
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
));
65 IService service
= container
["Service"] as IService
;
67 Account account
= new Account();
69 account
.EmailAddress
= "ibatis@somewhere.com";
70 account
.FirstName
= "Gilles";
71 account
.LastName
= "Bayon";
73 service
.InsertTransactionalAccount(account
);
75 account
= service
.GetAccountWithSpecificDataMapper(999) as Account
;
77 Assert
.IsNotNull(account
);
78 Assert
.AreEqual(999, account
.Id
, "account.Id");
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();
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
));
107 IService service
= container
["Service"] as IService
;
109 Account account
= new Account();
111 account
.EmailAddress
= "ibatis@somewhere.com";
112 account
.FirstName
= "Transaction";
113 account
.LastName
= "Error";
117 service
.InsertTransactionalAccountWithError(account
);
118 Assert
.Fail("Exception was expected");
126 account
= service
.GetAccountWithSpecificDataMapper(999) as Account
;
128 Assert
.IsNull(account
);