public void BeforeEach() { // mock data GpgDatabaseContext dbContext = AutoFacHelpers.CreateInMemoryTestDatabase(UserOrganisationHelper.CreateRegistrations()); mockDataRepo = new SqlRepository(dbContext); var auditLoggerWithMocks = new AuditLogger(Mock.Of <IDataRepository>()); // service under test testRegistrationRepo = new GenderPayGap.WebUI.Repositories.RegistrationRepository(mockDataRepo, auditLoggerWithMocks, null, null); }
public static GpgDatabaseContext CreateInMemoryTestDatabase(params object[] dbObjects) { //Get the method name of the unit test or the parent string testName = TestContext.CurrentContext.Test.FullName; if (string.IsNullOrWhiteSpace(testName)) { testName = MethodBase.GetCurrentMethod().FindParentWithAttribute <TestAttribute>().Name; } DbContextOptionsBuilder <GpgDatabaseContext> optionsBuilder = new DbContextOptionsBuilder <GpgDatabaseContext>().UseInMemoryDatabase(testName); optionsBuilder.ConfigureWarnings(w => w.Ignore(InMemoryEventId.TransactionIgnoredWarning)); // show more detailed EF errors i.e. ReturnId value instead of '{ReturnId}' in the logs etc... optionsBuilder.EnableSensitiveDataLogging(); var dbContext = new GpgDatabaseContext(optionsBuilder.Options); if (dbObjects != null && dbObjects.Length > 0) { foreach (object item in dbObjects) { var enumerable = item as IEnumerable <object>; if (enumerable == null) { dbContext.Add(item); } else { dbContext.AddRange(enumerable); } } dbContext.SaveChanges(); } return(dbContext); }
private IDataRepository CreateInMemoryTestDatabase() { //Get the method name of the unit test or the parent string testName = TestContext.CurrentContext.Test.FullName; if (string.IsNullOrWhiteSpace(testName)) { testName = MethodBase.GetCurrentMethod().FindParentWithAttribute <TestAttribute>().Name; } DbContextOptionsBuilder <GpgDatabaseContext> optionsBuilder = new DbContextOptionsBuilder <GpgDatabaseContext>().UseInMemoryDatabase(testName); optionsBuilder.ConfigureWarnings(w => w.Ignore(InMemoryEventId.TransactionIgnoredWarning)); // show more detailed EF errors i.e. ReturnId value instead of '{ReturnId}' in the logs etc... optionsBuilder.EnableSensitiveDataLogging(); var dbContext = new GpgDatabaseContext(optionsBuilder.Options); var dataRepository = new SqlRepository(dbContext); return(dataRepository); }
/// <summary> /// Registers an InMemory SQLRespository and populates with entities /// </summary> /// <param name="builder"></param> /// <param name="dbObjects"></param> public static void RegisterInMemoryTestDatabase(this ContainerBuilder builder, params object[] dbObjects) { GpgDatabaseContext dbContext = CreateInMemoryTestDatabase(dbObjects); builder.Register(c => new SqlRepository(dbContext)).As <IDataRepository>().InstancePerLifetimeScope(); }