adding
This commit is contained in:
+124
@@ -0,0 +1,124 @@
|
||||
using FluentAssertions;
|
||||
using LCU.API.Internal.DocumentLib.Containers;
|
||||
using LCU.API.Internal.DocumentLib.Repositories;
|
||||
using LCU.API.Internal.DocumentLibTest.TestDataFactories;
|
||||
using LCU.API.Internal.DocumentLibTest.TestDoubles;
|
||||
using LCU.Library.Internal.DocumentModels.Requests;
|
||||
using MongoDB.Driver;
|
||||
|
||||
namespace LCU.API.Internal.DocumentLibTest.Repositories;
|
||||
|
||||
public class DocumentAuditRepositoryTest : IDisposable
|
||||
{
|
||||
private readonly IDocumentAuditRepository _repository;
|
||||
|
||||
private readonly FakeMongoCollectionFactory _collectionFactory = new();
|
||||
|
||||
public DocumentAuditRepositoryTest()
|
||||
{
|
||||
_repository = new DocumentAuditRepository(_collectionFactory);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task GetDocumentAudits_FieldAuditRecordsExistForId_ReturnsMatchedLogsById()
|
||||
{
|
||||
var audits = EnumerableDataSeriesFactory.CreateSeries(() => FieldAuditFactory(), 5).ToArray();
|
||||
await _collectionFactory.GetCollection<DocumentAudit>().InsertManyAsync(audits);
|
||||
var expectedAudits = new[]{ audits.First(), audits.Last() };
|
||||
var documentIds = expectedAudits.Select(a => a.DocumentId).ToArray();
|
||||
|
||||
var retrievedAudits = await _repository.GetDocumentAudits(documentIds);
|
||||
|
||||
retrievedAudits.Should().HaveSameCount(documentIds);
|
||||
expectedAudits.Should().BeEquivalentTo(retrievedAudits, a => a.Using(DateTimeComparison.Truncated));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task GetDocumentAudits_ActionAuditRecordsExistForId_ReturnsMatchedLogsById()
|
||||
{
|
||||
var audits = EnumerableDataSeriesFactory.CreateSeries(() => ActionAuditFactory(), 5).ToArray();
|
||||
await _collectionFactory.GetCollection<DocumentAudit>().InsertManyAsync(audits);
|
||||
var expectedAudits = new[] { audits.First(), audits.Last() };
|
||||
var documentIds = expectedAudits.Select(a => a.DocumentId).ToArray();
|
||||
|
||||
var retrievedAudits = await _repository.GetDocumentAudits(documentIds);
|
||||
|
||||
retrievedAudits.Should().HaveSameCount(documentIds);
|
||||
expectedAudits.Should().BeEquivalentTo(retrievedAudits, a => a.Using(DateTimeComparison.Truncated));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task SaveDocumentAudits_FieldAuditsSubmitted_SavesAll()
|
||||
{
|
||||
var audits = EnumerableDataSeriesFactory.CreateSeries(() => FieldAuditFactory(), 5).ToArray();
|
||||
|
||||
await _repository.SaveDocumentAudits(audits);
|
||||
|
||||
var savedAudits = await (
|
||||
await _collectionFactory
|
||||
.GetCollection<DocumentAudit>()
|
||||
.FindAsync(Builders<DocumentAudit>.Filter.In
|
||||
(
|
||||
nameof(DocumentAudit.DocumentId),
|
||||
audits.Select(a => a.DocumentId))
|
||||
)
|
||||
).ToListAsync();
|
||||
audits.Should().BeEquivalentTo(savedAudits, a => a.Using(DateTimeComparison.Truncated));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task SaveDocumentAudits_ActionAuditsSubmitted_SavesAll()
|
||||
{
|
||||
var audits = EnumerableDataSeriesFactory.CreateSeries(() => ActionAuditFactory(), 5).ToArray();
|
||||
|
||||
await _repository.SaveDocumentAudits(audits);
|
||||
|
||||
var savedAudits = await (
|
||||
await _collectionFactory
|
||||
.GetCollection<DocumentAudit>()
|
||||
.FindAsync(Builders<DocumentAudit>.Filter.In(nameof(DocumentAudit.DocumentId),
|
||||
audits.Select(a => a.DocumentId)))
|
||||
).ToListAsync();
|
||||
audits.Should().BeEquivalentTo(savedAudits, a => a.Using(DateTimeComparison.Truncated));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task SaveDocumentAudits_MultipleTypesOfAudits_CanRetrieveAll()
|
||||
{
|
||||
var documentId = Guid.NewGuid();
|
||||
var fieldAudits = EnumerableDataSeriesFactory.CreateSeries<DocumentAudit>(() => FieldAuditFactory(documentId), 5);
|
||||
var actionAudits = EnumerableDataSeriesFactory.CreateSeries<DocumentAudit>(() => ActionAuditFactory(documentId), 5);
|
||||
var audits = fieldAudits.Concat(actionAudits).ToArray();
|
||||
|
||||
await _repository.SaveDocumentAudits(audits);
|
||||
var savedAudits = await _repository.GetDocumentAudits(documentId);
|
||||
|
||||
audits.Should().BeEquivalentTo(savedAudits, a => a.Using(DateTimeComparison.Truncated));
|
||||
}
|
||||
|
||||
private static DocumentFieldAudit FieldAuditFactory(Guid? documentId = null) => new
|
||||
(
|
||||
documentId ?? Guid.NewGuid(),
|
||||
Guid.NewGuid().ToString(),
|
||||
DateTime.UtcNow,
|
||||
Guid.NewGuid().ToString(),
|
||||
Guid.NewGuid().ToString(),
|
||||
Guid.NewGuid().ToString(),
|
||||
Guid.NewGuid().ToString()
|
||||
);
|
||||
|
||||
private static DocumentActionAudit ActionAuditFactory(Guid? documentId = null) => new
|
||||
(
|
||||
documentId ?? Guid.NewGuid(),
|
||||
Guid.NewGuid().ToString(),
|
||||
DateTime.UtcNow,
|
||||
Guid.NewGuid().ToString(),
|
||||
(DocumentAction)DateTime.Now.Millisecond,
|
||||
Guid.NewGuid().ToString()
|
||||
);
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_collectionFactory.Dispose();
|
||||
}
|
||||
}
|
||||
+1230
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user