Created
August 20, 2011 03:13
-
-
Save gabrielgreen/1158596 to your computer and use it in GitHub Desktop.
ef tdd attempt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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