public ClassEnvironment(string alternativeSourceFilePath = null, [CallerFilePath] string sourceFilePath = "") { ThisClassesLog = new ClassLog(alternativeSourceFilePath ?? sourceFilePath); MasterEnvironment.AddClassLog( ThisClassesLog); //ensure the database is set up using (var db = new EfTestDbContext()) { if (!db.EfParents.Any()) db.ResetDatabaseContent(); //make sure database is loaded after change to model } }
public MethodEnvironment(ClassEnvironment classEnv, [CallerMemberName] string memberName = "", [CallerLineNumber] int envLineNumber = 0) { this.classEnv = classEnv; this.memberName = memberName; lineNumberToUseIfException = envLineNumber; loggedLinqSql = new List<string>(); loggedDelegateDecompilerSql = new List<string>(); Db = new EfTestDbContext(); Db.Database.Log = LogEfSql; //capture the sql for the linq part }
public void Test01FillDatabaseOk() { using (var db = new EfTestDbContext()) { //SETUP //ATTEMPT db.ResetDatabaseContent(); //VERIFY db.EfParents.Count().ShouldEqual(DatabaseHelpers.BaseData.Count); db.EfChildren.Count().ShouldEqual(DatabaseHelpers.BaseData.SelectMany( x => x.Children).Count()); db.EfPersons.Count().ShouldEqual(DatabaseHelpers.PersonsData.Count); } }
public static void ResetDatabaseContent(this EfTestDbContext db) { //check that ParentIntUniqueValue is unique if (BaseData.Count(x => x.ParentInt == ParentIntUniqueValue) != 1) { throw new InvalidOperationException("The test data must have only one item with ParentInt equal to ParentIntUniqueValue"); } //wipe out all exsiting data db.EfParents.RemoveRange(db.EfParents); db.EfPersons.RemoveRange(db.EfPersons); db.SaveChanges(); db.EfParents.AddRange(BaseData); db.EfPersons.AddRange(PersonsData); db.SaveChanges(); }