You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
3.4 KiB

using Shentun.Peis.CardRegisters;
using Shentun.Peis.Enums;
using Shentun.Peis.IncludeDetails;
using Shentun.Peis.Models;
using Shentun.Peis.Patients;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Uow;
using Xunit;
using Xunit.Abstractions;
namespace Shentun.Peis
{
public class PatientManagerTest : PeisDomainTestBase
{
private readonly IRepository<Patient, Guid> _repository;
private readonly PatientManager _manager;
private readonly ITestOutputHelper _output;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public PatientManagerTest(ITestOutputHelper output)
{
_output = output;
_repository = GetRequiredService<IRepository<Patient, Guid>>();
_manager = GetRequiredService<PatientManager>();
_unitOfWorkManager = GetRequiredService<IUnitOfWorkManager>();
}
[Fact]
public async Task CreateAsync()
{
using(var unitOfWork = _unitOfWorkManager.Begin())
{
var patient = new Patient()
{
MedicalCenterId = new Guid("68f2d834-2bf0-4978-ad54-d2133c12a333"),
DisplayName = "Test",
SexId = SexFlag.UnKnown,
MaritalStatusId = MaritalStatusFlag.UnKnown,
IdNo = "43062419790909931X"
};
var newPatient = await _manager.CreateAsync(patient);
await _repository.InsertAsync(newPatient);
await unitOfWork.CompleteAsync();
}
}
/// <summary>
/// 测试事务回滚
/// </summary>
/// <returns></returns>
/// <exception cref="Exception"></exception>
[Fact]
public async Task CreateFaildAsync()
{
using (var unitOfWork = _unitOfWorkManager.Begin())
{
var patient = new Patient()
{
MedicalCenterId = new Guid("68f2d834-2bf0-4978-ad54-d2133c12a333"),
DisplayName = "Test",
SexId = SexFlag.UnKnown,
MaritalStatusId = MaritalStatusFlag.UnKnown,
IdNo = "43062419790909920X"
};
var newPatient = await _manager.CreateAsync(patient);
throw new Exception("中断");
await _repository.InsertAsync(newPatient);
await unitOfWork.CompleteAsync();
}
}
[Fact]
public async Task UpdateAsync()
{
using (var unitOfWork = _unitOfWorkManager.Begin())
{
var sourcePatient = new Patient()
{
MedicalCenterId = new Guid("68f2d834-2bf0-4978-ad54-d2133c12a333"),
DisplayName = "Test2",
SexId = SexFlag.Female,
MaritalStatusId = MaritalStatusFlag.Married,
IdNo = "43062419790909920X"
};
var targetPatient = await _repository.GetAsync(new Guid("3a119be6-d9aa-2e13-a764-0b363c60169d"));
await _manager.UpdateAsync(sourcePatient,targetPatient);
await _repository.UpdateAsync(targetPatient);
await unitOfWork.CompleteAsync();
}
}
}
}