Example #1
0
        public async Task Test_Commit_Writes_Record()
        {
            // ARRANGE
            Mock <ILogger <VirtualBridgeData> > loggerMock =
                MockFactory.CreateLoggerMock <VirtualBridgeData>();
            Mock <ILogger <AuditHeaderRepository> > auditHeaderRepositoryLoggerMock =
                MockFactory.CreateLoggerMock <AuditHeaderRepository>();
            DbContextOptions <DataContext> dbOptions =
                TestUtils.DbContextOptionsInMemory <TestBeginCommit>(
                    nameof(this.Test_Commit_Writes_Record));

            await using DataContext dataContext = new DataContext(dbOptions);
            AuditHeaderRepository auditHeaderRepository = new AuditHeaderRepository(
                logger: auditHeaderRepositoryLoggerMock.Object,
                dataContext: dataContext);
            Mock <IOrganisationRepository> organisationRepositoryMock
                = MockFactory.CreateRepositoryMock <IOrganisationRepository>();

            VirtualBridgeData data = new VirtualBridgeData(
                logger: loggerMock.Object,
                dataContext: dataContext,
                auditHeaderRepository: auditHeaderRepository,
                organisationRepository: organisationRepositoryMock.Object);

            IWho who = Create.Who();

            // ACT
            IAuditHeaderWithAuditDetails auditHeader = await data.BeginTransactionAsync(
                who : who,
                auditEvent : EAuditEvent.OrganisationMaintenance)
                                                       .ConfigureAwait(false);

            auditHeader.AuditDetails.Add(
                AuditDetail.CreateForCreate(
                    auditHeader: auditHeader,
                    tableName: "Organisation",
                    columnName: "Name",
                    recordId: Guid.NewGuid(),
                    newValue: "NewValue"));

            await data.CommitTransactionAsync(who, auditHeader)
            .ConfigureAwait(false);

            // ASSERT
            int auditHeadersCount = await dataContext.AuditHeaders.CountAsync()
                                    .ConfigureAwait(false);

            int auditDetailsCount = await dataContext.AuditDetails.CountAsync()
                                    .ConfigureAwait(false);

            Assert.AreEqual(1, auditHeadersCount);
            Assert.AreEqual(1, auditDetailsCount);
        }
Example #2
0
        public async Task Test_With_Valid_Values()
        {
            // ARRANGE
            Mock <ILogger <AuditHeaderRepository> > loggerMock =
                TestUtilities.MockFactory.CreateLoggerMock <AuditHeaderRepository>();
            DbContextOptions <DataContext> dbOptions =
                TestUtils.DbContextOptionsInMemory <CreateAsyncTests>(nameof(this.Test_With_Valid_Values));

            await using DataContext dataContext = new DataContext(dbOptions);

            IAuditHeaderRepository repository = new AuditHeaderRepository(
                loggerMock.Object,
                dataContext);

            IAuditHeaderWithAuditDetails auditHeader = new AuditHeaderWithAuditDetails(
                auditEvent: EAuditEvent.OrganisationMaintenance,
                username: "******",
                correlationId: Guid.NewGuid());
            IAuditDetail auditDetail = AuditDetail.CreateForUpdate(
                auditHeader: auditHeader,
                tableName: "TableName",
                columnName: "ColumnName",
                recordId: Guid.NewGuid(),
                oldValue: "Old Value",
                newValue: "New Value");

            auditHeader.AuditDetails.Add(auditDetail);

            IWho who = new Who(
                "TestController",
                "Action",
                "/TestController/Action",
                string.Empty);

            // ACT
            await repository.CreateAsync(who, auditHeader)
            .ConfigureAwait(false);

            // ASSERT
            Assert.AreEqual(1, await dataContext.AuditHeaders.CountAsync().ConfigureAwait(false));
            Assert.AreEqual(1, await dataContext.AuditDetails.CountAsync().ConfigureAwait(false));
        }