using System;
using System.Collections;
using NUnit.Framework;
using IBatisNet.DataMapper.Test.NUnit;
using IBatisNet.DataMapper.Test.Domain;
namespace IBatisNet.DataMapper.Test.NUnit.SqlMapTests.Oracle
{
///
/// Summary description for StatementGenerate.
///
[TestFixture]
[Category("Oracle")]
public class StatementGenerate : BaseTest
{
#region SetUp & TearDown
///
/// SetUp
///
[SetUp]
public void Init()
{
InitScript( sqlMap.DataSource, ScriptDirectory + "category-init.sql" );
}
///
/// TearDown
///
[TearDown]
public void Dispose()
{ /* ... */ }
#endregion
#region Specific statement test for Oracle
///
/// Test a select by key via generate statement.
///
[Test]
public void TestSelectByPK()
{
Category category = new Category();
category.Name = "toto";
category.Guid = Guid.NewGuid();
category.Id = (int)sqlMap.Insert("InsertCategoryGenerate", category);
Assert.AreEqual(1, category.Id);
// Workaround!
// Null out unneeded properties, otherwise those property values will be added
// as command parameters for the auto-generated SELECT query even if
// only 1 parameter for Id is needed.
category.Name = null;
category.Guid = Guid.Empty;
Category categoryRead = null;
categoryRead = (Category) sqlMap.QueryForObject("SelectByPKCategoryGenerate", category);
Assert.AreEqual(category.Id, categoryRead.Id);
Assert.AreEqual(category.Name, categoryRead.Name);
Assert.AreEqual(category.Guid.ToString(), categoryRead.Guid.ToString());
}
///
/// Test an select all via generate statement.
///
[Test]
public void TestSelectAll()
{
Category category = new Category();
category.Name = "toto";
category.Guid = Guid.NewGuid();
int key = (int)sqlMap.Insert("InsertCategoryGenerate", category);
Assert.AreEqual(1, key);
category.Name = "toto";
category.Guid = Guid.NewGuid();
key = (int)sqlMap.Insert("InsertCategoryGenerate", category);
Assert.AreEqual(2, key);
IList categorieList = sqlMap.QueryForList("SelectAllCategoryGenerate",null) as IList;
Assert.AreEqual(2, categorieList.Count);
}
///
/// Test an insert via generate statement.
///
[Test]
public void TestInsert()
{
Category category = new Category();
category.Name = "toto";
category.Guid = Guid.Empty;
int key = (int)sqlMap.Insert("InsertCategoryGenerate", category);
Assert.AreEqual(1, key);
}
///
/// Test Update Category with Extended ParameterMap
///
[Test]
public void TestUpdate()
{
Category category = new Category();
category.Name = "Cat";
category.Guid = Guid.NewGuid();
int key = (int)sqlMap.Insert("InsertCategoryGenerate", category);
category.Id = key;
category.Name = "Dog";
category.Guid = Guid.NewGuid();
sqlMap.Update("UpdateCategoryGenerate", category);
Category categoryRead = null;
categoryRead = (Category) sqlMap.QueryForObject("GetCategory", key);
Assert.AreEqual(category.Id, categoryRead.Id);
Assert.AreEqual(category.Name, categoryRead.Name);
Assert.AreEqual(category.Guid.ToString(), categoryRead.Guid.ToString());
}
///
/// Test an insert via generate statement.
///
[Test]
public void TestDelete()
{
Category category = new Category();
category.Name = "toto";
category.Guid = Guid.NewGuid();
int key = (int)sqlMap.Insert("InsertCategoryGenerate", category);
category.Id = key;
Assert.AreEqual(1, category.Id);
sqlMap.Delete("DeleteCategoryGenerate", category);
Category categoryRead = null;
categoryRead = sqlMap.QueryForObject("GetCategory", key) as Category;
Assert.IsNull(categoryRead);
}
#endregion
}
}