using adas_core.Domain.Enums; using adas_core.Domain.Models; using adas_core.Domain.Models.AppSettings; using adas_core.Infrastructure.Repositories; using Microsoft.Extensions.Options; using MongoDB.Bson; using MongoDB.Driver; using Options = Microsoft.Extensions.Options.Options; namespace adas_core.Test.Repositories; [TestFixture] [Category("Integration")] public class TreatmentRepositoryTest { [OneTimeSetUp] public async Task Init() { _optionsApiSettings = Options.Create(_apiSettings); _treatment1 = new PatientTreatment { Id = ObjectId.GenerateNewId(), PatientId = PatientId, OrderControl = OrderControlType.Nw, PlacerOrder = new Entity { EntityIdentifier = "3690", NamespaceId = "CareVue" }, FillerOrder = new Entity { EntityIdentifier = "3690", NamespaceId = "CareVue" }, OrderStatus = "A", OrderTime = DateTime.Now, Notes = [], Routes = [] }; _treatment2 = new PatientTreatment { Id = ObjectId.GenerateNewId(), PatientId = PatientId, OrderControl = OrderControlType.Dc, PlacerOrder = new Entity { EntityIdentifier = "3690", NamespaceId = "CareVue" }, FillerOrder = new Entity { EntityIdentifier = "3690", NamespaceId = "CareVue" }, OrderStatus = "A", OrderTime = DateTime.Now.AddDays(-5), Notes = [], Routes = [], RequestedGiveCodesStatus = [ new CodeStatus { Code = new Code { CodingSystem = "CS", Identifier = "I", Text = "T" }, Status = "status" } ] }; await IntegrationDb.Database.DropCollectionAsync("archive_patients_treatments"); await IntegrationDb.Database.CreateCollectionAsync("archive_patients_treatments"); _repository = new TreatmentRepository(_optionsApiSettings, IntegrationDb.Database); await _repository.InsertOneAsync(_treatment1); await _repository.InsertOneAsync(_treatment2); Assert.That(_repository.Collection.FindAsync(_ => true).Result.ToList(), Has.Count.EqualTo(2)); } private TreatmentRepository _repository = null!; private readonly ApiSettings _apiSettings = new() { ArchivePatientsTreatments = "archive_patients_treatments" }; private IOptions _optionsApiSettings = null!; //private static readonly DateTime now = DateTime.Now; private static readonly ObjectId PatientId = ObjectId.GenerateNewId(); private PatientTreatment _treatment1 = null!; private PatientTreatment _treatment2 = null!; [Test] public async Task GetByPatientId_Not_Find_Return_Null() { var result = await _repository.GetByPatientId(ObjectId.GenerateNewId()); var patientTreatments = result.ToList(); Assert.That(patientTreatments, Is.Not.Null); Assert.That(patientTreatments.ToList(), Is.Empty); } [Test] public async Task GetByPatientId_Find_Return_Null() { var result = await _repository.GetByPatientId(PatientId); var patientTreatments = result.ToList(); Assert.That(patientTreatments, Is.Not.Null); Assert.That(patientTreatments.ToList(), Has.Count.EqualTo(2)); } [Test] public async Task DeleteAsync() { var treatment = new PatientTreatment { Id = ObjectId.GenerateNewId(), PatientId = PatientId, OrderControl = OrderControlType.Nw, PlacerOrder = new Entity { EntityIdentifier = "3690", NamespaceId = "CareVue" }, FillerOrder = new Entity { EntityIdentifier = "3690", NamespaceId = "CareVue" }, OrderStatus = "A", OrderTime = DateTime.Now, Notes = [], Routes = [] }; await _repository.InsertOneAsync(treatment); var result = await _repository.Collection.FindAsync(t => t.Id == treatment.Id); Assert.That(result, Is.Not.Null); Assert.That(result.ToList(), Has.Count.EqualTo(1)); await _repository.DeleteAsync(treatment.Id); var resultDelete = await _repository.Collection.FindAsync(t => t.Id == treatment.Id); Assert.That(resultDelete, Is.Not.Null); Assert.That(resultDelete.ToList(), Has.Count.EqualTo(0)); } [Test] public async Task FindByPatientIdAsync_Find_Return_List_Traetments() { var result = await _repository.FindByPatientIdAsync(PatientId); Assert.That(result, Is.Not.Null); Assert.That(result.ToList(), Has.Count.EqualTo(2)); } [Test] public async Task DeleteByPatientId() { var treatment = new PatientTreatment { Id = ObjectId.GenerateNewId(), PatientId = ObjectId.GenerateNewId(), OrderControl = OrderControlType.Nw, PlacerOrder = new Entity { EntityIdentifier = "3690", NamespaceId = "CareVue" }, FillerOrder = new Entity { EntityIdentifier = "3690", NamespaceId = "CareVue" }, OrderStatus = "A", OrderTime = DateTime.Now, Notes = [], Routes = [] }; await _repository.InsertOneAsync(treatment); var result = await _repository.Collection.FindAsync(t => t.PatientId == treatment.PatientId); Assert.That(result, Is.Not.Null); Assert.That(result.ToList(), Has.Count.EqualTo(1)); await _repository.DeleteByPatientId(treatment.PatientId); var resultDelete = await _repository.Collection.FindAsync(t => t.PatientId == treatment.PatientId); Assert.That(resultDelete, Is.Not.Null); Assert.That(resultDelete.ToList(), Has.Count.EqualTo(0)); } [Test] public async Task FindBolusTreatments_Find_Return_Treatment() { var result = await _repository.FindBolusTreatments(PatientId); Assert.That(result, Is.Not.Null); Assert.That(result.ToList(), Has.Count.EqualTo(1)); } [Test] public async Task FindByPatientId_Find_Return_List_Traetments() { var result = await _repository.FindByPatientIdAsync(PatientId); Assert.That(result, Is.Not.Null); Assert.That(result.ToList(), Has.Count.EqualTo(2)); } }