// =====================================================================================
// Copyright © 2005 by . All rights are reserved.
//
// If you like this code then feel free to go ahead and use it.
// The only thing I ask is that you don't remove or alter my copyright notice.
//
// Your use of this software is entirely at your own risk. I make no claims or
// warrantees about the reliability or fitness of this code for any particular purpose.
// If you make changes or additions to this code please mark your code as being yours.
//
// website , email OmarALZabir@gmail.com, msn oazabir@hotmail.com
// =====================================================================================
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using NUnit.Framework;
using SmartInstitute.DataAccessLayer.Factories;
namespace SmartInstitute.DataAccessLayer.UnitTests
{
/// <summary>
/// Provides tests for the and Account objects (entity, collection and repository).
/// </summary>
[TestFixture]
public class AccountRepositoryTest
{
// the Account instance used to test the repository.
private Account mock;
// the AccountCollection instance used to test the repository.
AccountCollection mockCollection;
/// <summary>
/// Creates a new <see cref="AccountRepositoryTest"/> instance.
/// </summary>
public AccountRepositoryTest()
{
this.mock = (Account)CreateMockInstance();
}
/// <summary>
/// This method is used to construct the test environment prior to running the tests.
/// </summary>
[TestFixtureSetUp]
public void Init()
{
System.Console.WriteLine(new String('-', 75));
//System.Console.WriteLine("-- Testing the Account Entity with the " + Configuration.Settings.ClientType + " --");
System.Console.WriteLine(new String('-', 75));
}
/// <summary>
/// This method is used to restore the environment after the tests are completed.
/// </summary>
[TestFixtureTearDown]
public void Dispose()
{
System.Console.WriteLine();
System.Console.WriteLine();
}
/// <summary>
/// Inserts a mock Account entity into the database.
/// </summary>
[Test]
public void Step_1_Insert()
{
Assert.IsTrue(AccountRepository.Current.Insert(this.mock), "Insert failed");
System.Console.WriteLine("AccountRepository.Current.Insert(this.mock):");
System.Console.WriteLine(this.mock);
}
/// <summary>
/// Selects all Account objects of the database.
/// </summary>
[Test]
public void Step_2_SelectAll()
{
mockCollection = AccountRepository.Current.GetAll();
Assert.IsTrue(mockCollection.Count > 0, "No records returned.");
System.Console.WriteLine("AccountRepository.Current.GetAll():");
System.Console.WriteLine(mockCollection);
if (mockCollection.Count > 0)
{
AccountRepository.Current.DeepLoad(mockCollection[0]);
}
}
/// <summary>
/// Deep load all Account children.
/// </summary>
[Test]
public void Step_3_DeepLoad()
{
if (mockCollection.Count > 0)
{
mockCollection.Shuffle();
AccountRepository.Current.DeepLoad(mockCollection[0]);
System.Console.WriteLine("Account instance correctly deep loaded at 1 level.");
mockCollection.Shuffle();
AccountRepository.Current.DeepLoad(mockCollection[0], true);
System.Console.WriteLine("Account instance correctly deep loaded at N level.");
}
}
/// <summary>
/// Updates a mock Account entity into the database.
/// </summary>
[Test]
public void Step_4_Update()
{
this.mock = UpdateMockInstance(this.mock);
Assert.IsTrue(AccountRepository.Current.Update(this.mock), "Update failed.");
// TODO : select sur l'id
// TODO : verif si l'object recup? est egal
System.Console.WriteLine("AccountRepository.Current.Update(this.mock):");
System.Console.WriteLine(this.mock);
}
/// <summary>
/// Delete the mock Account entity into the database.
/// </summary>
[Test]
public void Step_5_Delete()
{
Assert.IsTrue(AccountRepository.Current.Delete(this.mock), "Delete failed.");
System.Console.WriteLine("AccountRepository.Current.Delete(this.mock):");
System.Console.WriteLine(this.mock);
}
#region Serialization tests
/// <summary>
/// Serialize the mock Account entity into a temporary file.
/// </summary>
[Test]
public void Step_6_SerializeEntity()
{
string fileName = "temp_Account.xml";
XmlSerializer mySerializer = new XmlSerializer(typeof(Account));
StreamWriter myWriter = new StreamWriter(fileName);
mySerializer.Serialize(myWriter, this.mock);
myWriter.Close();
System.Console.WriteLine("this.mock correctly serialized to a temporary file.");
}
/// <summary>
/// Deserialize the mock Account entity from a temporary file.
/// </summary>
[Test]
public void Step_7_DeserializeEntity()
{
string fileName = "temp_Account.xml";
XmlSerializer mySerializer = new XmlSerializer(typeof(Account));
FileStream myFileStream = new FileStream(fileName, FileMode.Open);
this.mock = (Account) mySerializer.Deserialize(myFileStream);
myFileStream.Close();
File.Delete(fileName);
System.Console.WriteLine("this.mock correctly deserialized from a temporary file.");
}
/// <summary>
/// Serialize a Account collection into a temporary file.
/// </summary>
[Test]
public void Step_8_SerializeCollection()
{
string fileName = "temp_AccountCollection.xml";
AccountCollection mockCollection = new AccountCollection();
mockCollection.Add(this.mock);
XmlSerializer mySerializer = new XmlSerializer(typeof(AccountCollection));
StreamWriter myWriter = new StreamWriter(fileName);
mySerializer.Serialize(myWriter, mockCollection);
myWriter.Close();
System.Console.WriteLine("AccountCollection correctly serialized to a temporary file.");
}
/// <summary>
/// Deserialize a Account collection from a temporary file.
/// </summary>
[Test]
public void Step_9_DeserializeCollection()
{
string fileName = "temp_AccountCollection.xml";
XmlSerializer mySerializer = new XmlSerializer(typeof(AccountCollection));
FileStream myFileStream = new FileStream(fileName, FileMode.Open);
AccountCollection mockCollection = (AccountCollection) mySerializer.Deserialize(myFileStream);
myFileStream.Close();
File.Delete(fileName);
System.Console.WriteLine("AccountCollection correctly deserialized from a temporary file.");
}
#endregion
#region Mock Instance
///<summary>
/// Returns a Typed Account Entity with mock values.
///</summary>
public Account CreateMockInstance()
{
Account mock = new Account();
mock.TransactionDescription = "test"; /*new Guid("20E43088-4618-4F4A-B8AD-FC31B50D94CD")*/
mock.TransactionDate = new DateTime(2005, 7, 25, 14, 34, 54, 312); /*new Guid("20E43088-4618-4F4A-B8AD-FC31B50D94CD")*/
mock.DebitAmount = 12; /*new Guid("20E43088-4618-4F4A-B8AD-FC31B50D94CD")*/
mock.CreditAmount = 12; /*new Guid("20E43088-4618-4F4A-B8AD-FC31B50D94CD")*/
mock.Balance = 12; /*new Guid("20E43088-4618-4F4A-B8AD-FC31B50D94CD")*/
mock.ChangeStamp = new DateTime(2005, 7, 25, 14, 34, 54, 312); /*new Guid("20E43088-4618-4F4A-B8AD-FC31B50D94CD")*/
mock.Type = (int)12; /*new Guid("20E43088-4618-4F4A-B8AD-FC31B50D94CD")*/
mock.BankName = "test"; /*new Guid("20E43088-4618-4F4A-B8AD-FC31B50D94CD")*/
mock.CheckNumber = "test"; /*new Guid("20E43088-4618-4F4A-B8AD-FC31B50D94CD")*/
mock.ORNumber = "test"; /*new Guid("20E43088-4618-4F4A-B8AD-FC31B50D94CD")*/
StudentCollection _collection0 = StudentRepository.Current.GetAll();
_collection0.Shuffle();
if (_collection0.Count > 0)
{
mock.StudentID = _collection0[0].ID;
}
return (Account)mock;
}
///<summary>
/// Update the Typed Account Entity with modified mock values.
///</summary>
public Account UpdateMockInstance(Account mock)
{
mock.TransactionDescription = "test2";
mock.TransactionDate = new DateTime(2005, 7, 25, 14, 34, 54, 312);
mock.DebitAmount = 13;
mock.CreditAmount = 13;
mock.Balance = 13;
mock.ChangeStamp = new DateTime(2005, 7, 25, 14, 34, 54, 312);
mock.Type = (int)13;
mock.BankName = "test2";
mock.CheckNumber = "test2";
mock.ORNumber = "test2";
StudentCollection _collection0 = StudentRepository.Current.GetAll();
_collection0.Shuffle();
if (_collection0.Count > 0)
{
mock.StudentID = _collection0[0].ID;
}
return (Account)mock;
}
#endregion
}
}