/// <summary> /// Creates a data layer. /// </summary> /// <param name="dataContext">The data context.</param> /// <param name="auditHeaderRepository">The audit header repository.</param> /// <param name="organisationRepository">The organisation repository.</param> /// <returns>Data layer.</returns> internal static IVirtualBridgeData CreateVirtualBridgeData( DataContext dataContext, IAuditHeaderRepository auditHeaderRepository = null, IOrganisationRepository organisationRepository = null) { Mock <ILogger <VirtualBridgeData> > loggerMock = MockFactory.CreateLoggerMock <VirtualBridgeData>(); if (auditHeaderRepository == null) { Mock <IAuditHeaderRepository> auditHeaderRepositoryMock = MockFactory.CreateRepositoryMock <IAuditHeaderRepository>(); auditHeaderRepository = auditHeaderRepositoryMock.Object; } if (organisationRepository == null) { Mock <IOrganisationRepository> organisationRepositoryMock = MockFactory.CreateRepositoryMock <IOrganisationRepository>(); organisationRepository = organisationRepositoryMock.Object; } return(new VirtualBridgeData( logger: loggerMock.Object, dataContext: dataContext, auditHeaderRepository: auditHeaderRepository, organisationRepository: organisationRepository)); }
public async Task Test_Passing_Valid_Values() { // ARRANGE IWho who = Create.Who(); IOrganisation organisation = Create.Organisation(); Mock <ILogger <IOrganisationService> > loggerMock = MockFactory.CreateLoggerMock <IOrganisationService>(); Mock <IOrganisationRepository> organisationRepositoryMock = MockFactory.CreateRepositoryMock <IOrganisationRepository>(); organisationRepositoryMock.Setup(x => x.CreateAsync( who, It.IsAny <AuditHeaderWithAuditDetails>(), organisation)) .Returns(Task.CompletedTask); DbContextOptions <DataContext> dbOptions = TestUtils.DbContextOptionsInMemory <CreateAsyncTests>( nameof(this.Test_Passing_Valid_Values)); await using DataContext dataContext = new DataContext(dbOptions); IVirtualBridgeData data = MockFactory.CreateVirtualBridgeData( dataContext, organisationRepository: organisationRepositoryMock.Object); IOrganisationService service = new OrganisationService( loggerMock.Object, data); // ACT await service.CreateAsync( who : who, auditEvent : EAuditEvent.OrganisationMaintenance, organisation : organisation) .ConfigureAwait(false); // ASSERT organisationRepositoryMock.Verify( x => x.CreateAsync( who, It.IsAny <IAuditHeaderWithAuditDetails>(), organisation), Times.Once); }
public async Task Test_Exception_Triggers_Rollback() { // ARRANGE IWho who = Create.Who(); IOrganisation organisation = Create.Organisation(); Mock <ILogger <IOrganisationService> > loggerMock = MockFactory.CreateLoggerMock <IOrganisationService>(); DbContextOptions <DataContext> dbOptions = TestUtils.DbContextOptionsInMemory <CreateAsyncTests>( nameof(this.Test_Passing_Valid_Values)); await using DataContext dataContext = new DataContext(dbOptions); Mock <IOrganisationRepository> organisationRepositoryMock = MockFactory.CreateRepositoryMock <IOrganisationRepository>(); organisationRepositoryMock.Setup(x => x.CreateAsync( It.IsAny <IWho>(), It.IsAny <AuditHeaderWithAuditDetails>(), It.IsAny <IOrganisation>())) .Throws <DeliberateException>(); IVirtualBridgeData data = MockFactory.CreateVirtualBridgeData( dataContext, organisationRepository: organisationRepositoryMock.Object); IOrganisationService service = new OrganisationService( loggerMock.Object, data); // ACT await service.CreateAsync( who : who, auditEvent : EAuditEvent.OrganisationMaintenance, organisation : organisation) .ConfigureAwait(false); }