Skip to content

Instantly share code, notes, and snippets.

@gabrielgreen
Created August 20, 2011 03:13
Show Gist options
  • Save gabrielgreen/1158596 to your computer and use it in GitHub Desktop.
Save gabrielgreen/1158596 to your computer and use it in GitHub Desktop.
ef tdd attempt
using EomApp1.Formss.AB2.Model;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Linq;
namespace TestProject6
{
/// <summary>
///This is a test class for TestFactoryTest and is intended
///to contain all TestFactoryTest Unit Tests
///</summary>
[TestClass()]
public class TestFactoryTest
{
private TestContext testContextInstance;
/// <summary>
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///</summary>
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
#region Additional test attributes
//
//You can use the following additional attributes as you write your tests:
//
//Use ClassInitialize to run code before running the first test in the class
//[ClassInitialize()]
//public static void MyClassInitialize(TestContext testContext)
//{
//}
//
//Use ClassCleanup to run code after all tests in a class have run
//[ClassCleanup()]
//public static void MyClassCleanup()
//{
//}
//
//Use TestInitialize to run code before running each test
//[TestInitialize()]
//public void MyTestInitialize()
//{
//}
//
//Use TestCleanup to run code after each test has run
//[TestCleanup()]
//public void MyTestCleanup()
//{
//}
//
#endregion
/// <summary>
///A test for TestFactory Constructor
///</summary>
//[TestMethod()]
//public void TestFactoryConstructorTest()
//{
// EomApp1.Formss.AB2.Model.TestFactory target = new EomApp1.Formss.AB2.Model.TestFactory();
// Assert.Inconclusive("TODO: Implement code to verify target");
//}
/// <summary>
///A test for Create
///</summary>
[TestMethod()]
public void CreateTest()
{
EomApp1.Formss.AB2.Model.TestFactory target = new EomApp1.Formss.AB2.Model.TestFactory(@"data source=biz2\da;initial catalog=DirectAgents;integrated security=True;");
EomApp1.Formss.AB2.Model.DirectAgentsEntities actual;
actual = target.Create();
Assert.IsNotNull(actual);
// periods
int n = actual.Periods.Count();
Assert.AreEqual(2, n);
var periods = actual.Periods.OrderBy(c => c.FromDate).ToList();
Period period1 = periods.ElementAt(0);
DateTime expectedStartDate1 = new DateTime(2011, 6, 1);
DateTime expectedEndDate1 = new DateTime(2011, 6, 30);
Assert.AreEqual(expectedStartDate1, period1.FromDate);
Assert.AreEqual(expectedEndDate1, period1.ToDate);
Period period2 = periods.ElementAt(1);
DateTime expectedStartDate2 = new DateTime(2011, 7, 1);
DateTime expectedEndDate2 = new DateTime(2011, 7, 31);
Assert.AreEqual(expectedStartDate2, period2.FromDate);
Assert.AreEqual(expectedEndDate2, period2.ToDate);
// database -> recordsource -> recordsourcetype
var dbs = actual.SqlServerDatabases.OrderBy(c => c.Id).ToList();
SqlServerDatabase db1 = dbs.ElementAt(0);
string expectedName1 = @"DADatabaseJun11 on Biz2\da";
string expectedConnectionString1 = @"data source=biz2\da;initial catalog=DADatabaseJun11;integrated security=True;";
Assert.AreEqual(expectedName1, db1.Name);
Assert.AreEqual(expectedConnectionString1, db1.ConnectionString);
SqlServerDatabase db2 = dbs.ElementAt(1);
string expectedName2 = @"DADatabaseJul11 on Biz2\da";
string expectedConnectionString2 = @"data source=biz2\da;initial catalog=DADatabaseJul11;integrated security=True;";
Assert.AreEqual(expectedName2, db2.Name);
Assert.AreEqual(expectedConnectionString2, db2.ConnectionString);
Assert.AreEqual("Accounting Item Records", actual.RecordSourceTypes.First().Name);
Assert.IsNotNull(actual.RecordSources.First(c => c.Name == "Jun11 Records"));
Assert.IsNotNull(actual.RecordSources.First(c => c.Name == "Jul11 Records"));
// company files
var cfs = actual.CompanyFiles.OrderBy(c => c.Id).ToList();
CompanyFile cf1 = cfs.ElementAt(0);
CompanyFile cf2 = cfs.ElementAt(1);
string expectedCf1Name = "US";
string expectedCf2Name = "INTL";
Assert.AreEqual(expectedCf1Name, cf1.Name);
Assert.AreEqual(expectedCf2Name, cf2.Name);
// customers -> clients
var customers = actual.Customers.OrderBy(c => c.Id).ToList();
Customer customer1 = customers.ElementAt(0);
Assert.AreEqual("Customer 1 (QBUS)", customer1.Name);
Assert.AreEqual("Client 1", customer1.Client.Name);
Assert.AreEqual("US", customer1.CompanyFile.Name);
//
//Assert.AreEqual("Customer 2 (QBINTL)", customer1.Name);
//Assert.AreEqual("Client 2", customer1.Client.Name);
//Assert.AreEqual("INTL", customer1.CompanyFile.Name);
// advertisers -> clients
var advertisers = actual.Advertisers.OrderBy(c => c.Id).ToList();
Advertiser advertiser1 = advertisers.ElementAt(0);
Assert.AreEqual("Advertiser 1", advertiser1.Name);
Assert.AreEqual("Client 1", advertiser1.Client.Name);
Assert.AreEqual(customer1.Client.Id, advertiser1.Client.Id);
//
//Advertiser advertiser2 = advertisers.ElementAt(1);
//Assert.AreEqual("Advertiser 2", advertiser2.Name);
//Assert.AreEqual("Client 2", advertiser2.Client.Name);
// units (USD, GBP)
var units = actual.Units.OrderBy(c => c.Id).ToList();
Assert.AreEqual("USD", units[0].Name);
Assert.AreEqual("GBP", units[1].Name);
// unit conversions (Jun1, Jul1)
var ucs = actual.UnitConversions.OrderBy(c => c.Id).ToList();
Assert.AreEqual("USD", ucs[0].FromUnit.Name);
Assert.AreEqual("USD", ucs[0].ToUnit.Name);
Assert.AreEqual(new DateTime(2011, 6, 1), ucs[0].Date);
Assert.AreEqual(1m, ucs[0].Coefficient);
Assert.AreEqual("USD", ucs[1].FromUnit.Name);
Assert.AreEqual("USD", ucs[1].ToUnit.Name);
Assert.AreEqual(new DateTime(2011, 7, 1), ucs[1].Date);
Assert.AreEqual(1m, ucs[1].Coefficient);
Assert.AreEqual("USD", ucs[2].FromUnit.Name);
Assert.AreEqual("GBP", ucs[2].ToUnit.Name);
Assert.AreEqual(new DateTime(2011, 6, 1), ucs[2].Date);
Assert.AreEqual(.75m, ucs[2].Coefficient);
Assert.AreEqual("USD", ucs[3].FromUnit.Name);
Assert.AreEqual("GBP", ucs[3].ToUnit.Name);
Assert.AreEqual(new DateTime(2011, 7, 1), ucs[3].Date);
Assert.AreEqual(.77m, ucs[3].Coefficient);
// received payments -> Credit -> Item -> Amount
var rps = actual.ReceivedPayments.OrderBy(c => c.Id).ToList();
Assert.AreEqual("Credit for Payment 1", rps[0].Credit.Description);
Assert.AreEqual(new DateTime(2011, 6, 5), rps[0].Credit.Item.Date);
Assert.AreEqual(101, rps[0].Credit.Item.Amount.Number);
Assert.AreEqual(true, rps[0].Credit.Item.Amount.Sign);
Assert.AreEqual("USD", rps[0].Credit.Item.Amount.Unit.Name);
Assert.AreEqual("Client 1", rps[0].Credit.Item.Client.Name);
// charge -> Debit -> Item -> Amount
var charges = actual.Charges.OrderBy(c => c.Id).ToList();
Assert.AreEqual("Debit for Charge 1", charges[0].Debit.Description);
Assert.AreEqual(new DateTime(2011, 6, 20), charges[0].Debit.Item.Date);
Assert.AreEqual(5.25m, charges[0].Debit.Item.Amount.Number);
Assert.AreEqual(false, charges[0].Debit.Item.Amount.Sign);
Assert.AreEqual("USD", charges[0].Debit.Item.Amount.Unit.Name);
Assert.AreEqual("Client 1", charges[0].Debit.Item.Client.Name);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Objects;
namespace EomApp1.Formss.AB2.Model
{
public class TestFactory : DirectAgentsEntities.IFactory
{
private string _connectionString;
public TestFactory(string connectionString)
{
this._connectionString = connectionString;
}
public DirectAgentsEntities Create()
{
CleanUp(this.DirectAgentsEntities);
AddPeriods();
AddRecordSourceTypes();
AddRecordSources();
AddDatabases();
AddCompanyFiles();
AddCustomerClients();
AddAdvertiserClients();
AddUnits();
AddUnitConversions();
AddReceivedPaymentCreditItemAmounts();
AddCharges();
var db = this.DirectAgentsEntities;
return db;
}
private void AddCharges()
{
var db = this.DirectAgentsEntities;
Charge ch;
ch = new Charge
{
Debit = new Debit
{
Description = "Debit for Charge 1",
Item = new Item
{
Date = new DateTime(2011, 6, 20),
Amount = new Amount
{
Sign = false,
Number = 5.25m,
Unit = db.Units.First(c => c.Name == "USD")
},
Client = db.Clients.First(c => c.Name == "Client 1")
}
}
};
db.Charges.AddObject(ch);
db.SaveChanges();
}
private void AddReceivedPaymentCreditItemAmounts()
{
var db = this.DirectAgentsEntities;
ReceivedPayment rp;
rp = new ReceivedPayment
{
Credit = new Credit
{
Description = "Credit for Payment 1",
Item = new Item
{
Date = new DateTime(2011, 6, 5),
Amount = new Amount
{
Sign = true,
Number = 101,
Unit = db.Units.First(c => c.Name == "USD")
},
Client = db.Clients.First(c=>c.Name == "Client 1")
}
}
};
db.ReceivedPayments.AddObject(rp);
db.SaveChanges();
}
private void AddUnitConversions()
{
var db = this.DirectAgentsEntities;
UnitConversion uc;
uc = new UnitConversion
{
Date = new DateTime(2011, 6, 1),
FromUnit = db.Units.First(c => c.Name == "USD"),
ToUnit = db.Units.First(c => c.Name == "USD"),
Coefficient = 1m
};
db.UnitConversions.AddObject(uc);
uc = new UnitConversion
{
Date = new DateTime(2011, 7, 1),
FromUnit = db.Units.First(c => c.Name == "USD"),
ToUnit = db.Units.First(c => c.Name == "USD"),
Coefficient = 1m
};
db.UnitConversions.AddObject(uc);
uc = new UnitConversion
{
Date = new DateTime(2011, 6, 1),
FromUnit = db.Units.First(c => c.Name == "USD"),
ToUnit = db.Units.First(c => c.Name == "GBP"),
Coefficient = .75m
};
db.UnitConversions.AddObject(uc);
uc = new UnitConversion
{
Date = new DateTime(2011, 7, 1),
FromUnit = db.Units.First(c => c.Name == "USD"),
ToUnit = db.Units.First(c => c.Name == "GBP"),
Coefficient = .77m
};
db.UnitConversions.AddObject(uc);
db.SaveChanges();
}
private void AddUnits()
{
var db = this.DirectAgentsEntities;
Unit u;
u = new Unit
{
Name = "USD"
};
db.Units.AddObject(u);
u = new Unit
{
Name = "GBP"
};
db.Units.AddObject(u);
db.SaveChanges();
}
private void AddAdvertiserClients()
{
var db = this.DirectAgentsEntities;
Advertiser a;
a = new Advertiser
{
Name = "Advertiser 1",
Client = db.Clients.First(c => c.Name == "Client 1")
};
db.SaveChanges();
}
private void AddCustomerClients()
{
var db = this.DirectAgentsEntities;
Customer cu;
cu = new Customer
{
Name = "Customer 1 (QBUS)",
Client = new Client
{
Name = "Client 1"
},
CompanyFile = db.CompanyFiles.First(c => c.Name == "US")
};
db.SaveChanges();
}
private void AddCompanyFiles()
{
var db = this.DirectAgentsEntities;
CompanyFile cf;
cf = new CompanyFile
{
Name = "US"
};
db.CompanyFiles.AddObject(cf);
cf = new CompanyFile
{
Name = "INTL"
};
db.CompanyFiles.AddObject(cf);
db.SaveChanges();
}
private void AddRecordSourceTypes()
{
var db = this.DirectAgentsEntities;
RecordSourceType rst;
rst = new RecordSourceType
{
Name = "Accounting Item Records",
};
db.RecordSourceTypes.AddObject(rst);
db.SaveChanges();
}
private void AddRecordSources()
{
var db = this.DirectAgentsEntities;
RecordSource rs;
RecordSourceType rst = db.RecordSourceTypes.First(c => c.Name == "Accounting Item Records");
rs = new RecordSource
{
Name = "Jun11 Records",
RecordSourceType = rst
};
db.RecordSources.AddObject(rs);
rs = new RecordSource
{
Name = "Jul11 Records",
RecordSourceType = rst
};
db.RecordSources.AddObject(rs);
db.SaveChanges();
}
private void AddDatabases()
{
var db = this.DirectAgentsEntities;
SqlServerDatabase ss;
RecordSource rs;
rs = db.RecordSources.First(c => c.Name == "Jun11 Records");
ss = new SqlServerDatabase
{
Name = @"DADatabaseJun11 on Biz2\da",
ConnectionString = @"data source=biz2\da;initial catalog=DADatabaseJun11;integrated security=True;",
RecordSource = rs
};
db.SqlServerDatabases.AddObject(ss);
rs = db.RecordSources.First(c => c.Name == "Jul11 Records");
ss = new SqlServerDatabase
{
Name = @"DADatabaseJul11 on Biz2\da",
ConnectionString = @"data source=biz2\da;initial catalog=DADatabaseJul11;integrated security=True;",
RecordSource = rs
};
db.SqlServerDatabases.AddObject(ss);
db.SaveChanges();
}
private void AddPeriods()
{
var db = this.DirectAgentsEntities;
Period june = new Period
{
FromDate = new DateTime(2011, 6, 1),
ToDate = new DateTime(2011, 6, 30)
};
db.Periods.AddObject(june);
Period july = new Period
{
FromDate = new DateTime(2011, 7, 1),
ToDate = new DateTime(2011, 7, 31)
};
db.Periods.AddObject(july);
db.SaveChanges();
}
static private void CleanUp(Model.DirectAgentsEntities db)
{
DeleteObjects(db);
db.SaveChanges();
}
private static void DeleteObjects(Model.DirectAgentsEntities db)
{
db.Debits.DeleteObjects(db.Debits);
db.Charges.DeleteObjects(db.Charges);
db.Amounts.DeleteObjects(db.Amounts);
db.Items.DeleteObjects(db.Items);
db.Credits.DeleteObjects(db.Credits);
db.ReceivedPayments.DeleteObjects(db.ReceivedPayments);
db.UnitConversions.DeleteObjects(db.UnitConversions);
db.Units.DeleteObjects(db.Units);
db.Advertisers.DeleteObjects(db.Advertisers);
db.Customers.DeleteObjects(db.Customers);
db.Clients.DeleteObjects(db.Clients);
db.CompanyFiles.DeleteObjects(db.CompanyFiles);
db.Periods.DeleteObjects(db.Periods);
db.SqlServerDatabases.DeleteObjects(db.SqlServerDatabases);
db.RecordSources.DeleteObjects(db.RecordSources);
db.RecordSourceTypes.DeleteObjects(db.RecordSourceTypes);
}
private DirectAgentsEntities DirectAgentsEntities
{
get
{
string entityConnectionFormat = @"metadata=res://*/Formss.AB2.Model.ABModel.csdl|res://*/Formss.AB2.Model.ABModel.ssdl|res://*/Formss.AB2.Model.ABModel.msl;provider=System.Data.SqlClient;provider connection string=""{0};multipleactiveresultsets=True;App=EntityFramework""";
string entityConnectionString = String.Format(entityConnectionFormat, _connectionString);
return new DirectAgentsEntities(entityConnectionString);
}
}
}
static class Extensions
{
static public void DeleteObjects<TEntity>(this ObjectSet<TEntity> set, IEnumerable<TEntity> data) where TEntity : class
{
foreach (var entity in data)
{
set.DeleteObject(entity);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment