adding
This commit is contained in:
+197
@@ -0,0 +1,197 @@
|
||||
using LCU.API.Internal.DocumentLib.Configurations;
|
||||
using LCU.API.Internal.DocumentLib.Containers;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
using MongoDB.Driver;
|
||||
using OwnerNumberMigrationTest.TestDataFactories;
|
||||
using OwnerNumberMigrationTest.TestDoubles;
|
||||
|
||||
namespace OwnerNumberMigrationTest;
|
||||
|
||||
[Category("Integration")]
|
||||
public class OwnerNumberMigrationIntegrationTest : IDisposable
|
||||
{
|
||||
private readonly FakeMongoCollectionFactory _collectionFactory = new();
|
||||
|
||||
private readonly DocumentInformation _personNumber;
|
||||
private readonly DocumentInformation _personNumbers;
|
||||
private readonly DocumentInformation _organizationNumber;
|
||||
private readonly DocumentInformation _organizationNumbers;
|
||||
private readonly DocumentInformation _accountNumber;
|
||||
|
||||
private readonly DocumentInformation _personNumberMigrated;
|
||||
private readonly DocumentInformation _personNumbersMigrated;
|
||||
private readonly DocumentInformation _organizationNumberMigrated;
|
||||
private readonly DocumentInformation _organizationNumbersMigrated;
|
||||
private readonly DocumentInformation _accountNumberMigrated;
|
||||
|
||||
public OwnerNumberMigrationIntegrationTest()
|
||||
{
|
||||
static string SingleOwnerFactory() => Guid.NewGuid().ToString();
|
||||
|
||||
static string MultipleOwnersFactory() => string.Join
|
||||
(
|
||||
",",
|
||||
EnumerableDataSeriesFactory.CreateSeries(SingleOwnerFactory, 3)
|
||||
);
|
||||
|
||||
_personNumber = DocumentInformationFactory.CreateDocumentInformation();
|
||||
_personNumber.Attributes.Clear();
|
||||
_personNumber.Attributes["PersonNumber"] = SingleOwnerFactory();
|
||||
_personNumbers = DocumentInformationFactory.CreateDocumentInformation();
|
||||
_personNumbers.Attributes.Clear();
|
||||
_personNumbers.Attributes["PersonNumbers"] = MultipleOwnersFactory();
|
||||
_organizationNumber = DocumentInformationFactory.CreateDocumentInformation();
|
||||
_organizationNumber.Attributes.Clear();
|
||||
_organizationNumber.Attributes["OrganizationNumber"] = SingleOwnerFactory();
|
||||
_organizationNumbers = DocumentInformationFactory.CreateDocumentInformation();
|
||||
_organizationNumbers.Attributes.Clear();
|
||||
_organizationNumbers.Attributes["OrganizationNumbers"] = MultipleOwnersFactory();
|
||||
_accountNumber = DocumentInformationFactory.CreateDocumentInformation();
|
||||
_accountNumber.Attributes.Clear();
|
||||
_accountNumber.Attributes["AccountNumber"] = SingleOwnerFactory();
|
||||
|
||||
_personNumberMigrated = DocumentInformationFactory.CreateDocumentInformation();
|
||||
_personNumberMigrated.Attributes.Clear();
|
||||
_personNumberMigrated.Attributes["PersonNumber"] = SingleOwnerFactory();
|
||||
_personNumberMigrated.PersonNumbers = _personNumberMigrated.Attributes["PersonNumber"].Split(",");
|
||||
_personNumbersMigrated = DocumentInformationFactory.CreateDocumentInformation();
|
||||
_personNumbersMigrated.Attributes.Clear();
|
||||
_personNumbersMigrated.Attributes["PersonNumbers"] = MultipleOwnersFactory();
|
||||
_personNumbersMigrated.PersonNumbers = _personNumbersMigrated.Attributes["PersonNumbers"].Split(",");
|
||||
_organizationNumberMigrated = DocumentInformationFactory.CreateDocumentInformation();
|
||||
_organizationNumberMigrated.Attributes.Clear();
|
||||
_organizationNumberMigrated.Attributes["OrganizationNumber"] = SingleOwnerFactory();
|
||||
_organizationNumberMigrated.OrganizationNumbers =
|
||||
_organizationNumberMigrated.Attributes["OrganizationNumber"].Split(",");
|
||||
_organizationNumbersMigrated = DocumentInformationFactory.CreateDocumentInformation();
|
||||
_organizationNumbersMigrated.Attributes.Clear();
|
||||
_organizationNumbersMigrated.Attributes["OrganizationNumbers"] = MultipleOwnersFactory();
|
||||
_organizationNumbersMigrated.OrganizationNumbers =
|
||||
_organizationNumbersMigrated.Attributes["OrganizationNumbers"].Split(",");
|
||||
_accountNumberMigrated = DocumentInformationFactory.CreateDocumentInformation();
|
||||
_accountNumberMigrated.Attributes.Clear();
|
||||
_accountNumberMigrated.Attributes["AccountNumber"] = SingleOwnerFactory();
|
||||
_accountNumberMigrated.AccountNumber = _accountNumberMigrated.Attributes["AccountNumber"];
|
||||
}
|
||||
|
||||
[SetUp]
|
||||
public async Task Setup()
|
||||
{
|
||||
var collection = _collectionFactory.GetCollection<DocumentInformation>();
|
||||
|
||||
await collection.InsertManyAsync(new[]
|
||||
{
|
||||
_personNumber,
|
||||
_personNumbers,
|
||||
_organizationNumber,
|
||||
_organizationNumbers,
|
||||
_accountNumber,
|
||||
_personNumberMigrated,
|
||||
_personNumbersMigrated,
|
||||
_organizationNumberMigrated,
|
||||
_organizationNumbersMigrated,
|
||||
_accountNumberMigrated
|
||||
});
|
||||
|
||||
await collection.UpdateManyAsync
|
||||
(
|
||||
Builders<DocumentInformation>.Filter.In
|
||||
(
|
||||
d => d.DocumentId,
|
||||
new[]
|
||||
{
|
||||
_personNumber.DocumentId,
|
||||
_personNumbers.DocumentId,
|
||||
_organizationNumber.DocumentId,
|
||||
_organizationNumbers.DocumentId,
|
||||
_accountNumber.DocumentId
|
||||
}
|
||||
),
|
||||
Builders<DocumentInformation>.Update
|
||||
.Unset(nameof(DocumentInformation.PersonNumbers))
|
||||
.Unset(nameof(DocumentInformation.OrganizationNumbers))
|
||||
.Unset(nameof(DocumentInformation.AccountNumber))
|
||||
);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Program_AllCases_MigratesDocuments()
|
||||
{
|
||||
await Host.CreateDefaultBuilder()
|
||||
.ConfigureServices(services =>
|
||||
{
|
||||
services.RegisterOwnerMigrationServices();
|
||||
|
||||
services.AddSingleton<ILogger>(NullLogger.Instance);
|
||||
|
||||
services.AddSingleton(new DatabaseConfiguration
|
||||
{
|
||||
ConnectionString = _collectionFactory.ConnectionString,
|
||||
DatabaseName = _collectionFactory.DatabaseName<DocumentInformation>(),
|
||||
DocumentContainerName = _collectionFactory.CollectionName<DocumentInformation>()
|
||||
});
|
||||
})
|
||||
.Build()
|
||||
.RunAsync();
|
||||
|
||||
var migratedDocuments = (await
|
||||
(await
|
||||
_collectionFactory
|
||||
.GetCollection<DocumentInformation>()
|
||||
.FindAsync(Builders<DocumentInformation>.Filter.Empty)
|
||||
).ToListAsync())
|
||||
.ToDictionary(d => d.DocumentId);
|
||||
|
||||
CollectionAssert.AreEqual(_personNumber.Attributes["PersonNumber"].Split(","),
|
||||
migratedDocuments[_personNumber.DocumentId].PersonNumbers);
|
||||
CollectionAssert.AreEqual(_personNumbers.Attributes["PersonNumbers"].Split(","),
|
||||
migratedDocuments[_personNumbers.DocumentId].PersonNumbers);
|
||||
CollectionAssert.AreEqual(_organizationNumber.Attributes["OrganizationNumber"].Split(","),
|
||||
migratedDocuments[_organizationNumber.DocumentId].OrganizationNumbers);
|
||||
CollectionAssert.AreEqual(_organizationNumbers.Attributes["OrganizationNumbers"].Split(","),
|
||||
migratedDocuments[_organizationNumbers.DocumentId].OrganizationNumbers);
|
||||
Assert.AreEqual(_accountNumber.Attributes["AccountNumber"],
|
||||
migratedDocuments[_accountNumber.DocumentId].AccountNumber);
|
||||
|
||||
CollectionAssert.AreEqual(_personNumber.Attributes["PersonNumber"],
|
||||
migratedDocuments[_personNumber.DocumentId].Attributes["PersonNumber"]);
|
||||
CollectionAssert.AreEqual(_personNumbers.Attributes["PersonNumbers"],
|
||||
migratedDocuments[_personNumbers.DocumentId].Attributes["PersonNumbers"]);
|
||||
CollectionAssert.AreEqual(_organizationNumber.Attributes["OrganizationNumber"],
|
||||
migratedDocuments[_organizationNumber.DocumentId].Attributes["OrganizationNumber"]);
|
||||
CollectionAssert.AreEqual(_organizationNumbers.Attributes["OrganizationNumbers"],
|
||||
migratedDocuments[_organizationNumbers.DocumentId].Attributes["OrganizationNumbers"]);
|
||||
Assert.AreEqual(_accountNumber.Attributes["AccountNumber"],
|
||||
migratedDocuments[_accountNumber.DocumentId].Attributes["AccountNumber"]);
|
||||
|
||||
CollectionAssert.AreEqual(_personNumberMigrated.PersonNumbers,
|
||||
migratedDocuments[_personNumberMigrated.DocumentId].PersonNumbers);
|
||||
CollectionAssert.AreEqual(_personNumbersMigrated.PersonNumbers,
|
||||
migratedDocuments[_personNumbersMigrated.DocumentId].PersonNumbers);
|
||||
CollectionAssert.AreEqual(_organizationNumberMigrated.OrganizationNumbers,
|
||||
migratedDocuments[_organizationNumberMigrated.DocumentId].OrganizationNumbers);
|
||||
CollectionAssert.AreEqual(_organizationNumbersMigrated.OrganizationNumbers,
|
||||
migratedDocuments[_organizationNumbersMigrated.DocumentId].OrganizationNumbers);
|
||||
CollectionAssert.AreEqual(_accountNumberMigrated.OrganizationNumbers,
|
||||
migratedDocuments[_accountNumberMigrated.DocumentId].OrganizationNumbers);
|
||||
|
||||
CollectionAssert.AreEqual(_personNumberMigrated.Attributes["PersonNumber"],
|
||||
migratedDocuments[_personNumberMigrated.DocumentId].Attributes["PersonNumber"]);
|
||||
CollectionAssert.AreEqual(_personNumbersMigrated.Attributes["PersonNumbers"],
|
||||
migratedDocuments[_personNumbersMigrated.DocumentId].Attributes["PersonNumbers"]);
|
||||
CollectionAssert.AreEqual(_organizationNumberMigrated.Attributes["OrganizationNumber"],
|
||||
migratedDocuments[_organizationNumberMigrated.DocumentId].Attributes["OrganizationNumber"]);
|
||||
CollectionAssert.AreEqual(_organizationNumbersMigrated.Attributes["OrganizationNumbers"],
|
||||
migratedDocuments[_organizationNumbersMigrated.DocumentId].Attributes["OrganizationNumbers"]);
|
||||
CollectionAssert.AreEqual(_accountNumberMigrated.Attributes["AccountNumber"],
|
||||
migratedDocuments[_accountNumberMigrated.DocumentId].Attributes["AccountNumber"]);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_collectionFactory.Dispose();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user