using NSubstitute; using NSubstitute.Exceptions; using Shentun.Peis.CardRegisters; using Shentun.Peis.Enums; using Shentun.Peis.GuidTypes; using Shentun.Peis.IncludeDetails; using Shentun.Peis.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using TencentCloud.Cpdp.V20190820.Models; using Volo.Abp.Domain.Repositories; using Volo.Abp.Uow; using Xunit; using Xunit.Abstractions; namespace Shentun.Peis { public class CardRegisterManagerTest : PeisDomainTestBase { private readonly IRepository _repository; private readonly IRepository _cardBillRepository; private readonly ICardRegisterRepository _cardRegisterRepository; private readonly CardRegisterManager _manager; private readonly ITestOutputHelper _output; private readonly IUnitOfWorkManager _unitOfWorkManager; public CardRegisterManagerTest(ITestOutputHelper output) { _output = output; _repository = GetRequiredService>(); _cardRegisterRepository = GetRequiredService(); _cardBillRepository = GetRequiredService>(); _manager = GetRequiredService(); _unitOfWorkManager = GetRequiredService(); } [Fact] [UnitOfWork] public async void AddCardBillTest() { var id = new Guid("3a0d9464-e69e-67d5-c292-b2e11fb334b1"); using (IUnitOfWork unitOfWork = _unitOfWorkManager.Begin()) { var cardRegister = await _cardRegisterRepository.GetAsync(id, includeDetails: true); //var cardRegister = _cardRegisterRepository.WithDetails().Where(o => o.Id == id).FirstOrDefault(); //var cardRegister = await _cardRegisterRepository.GetAsync(id, includeDetails: true); //var cardRegister = await _cardRegisterRepository.Get(new Guid("3a0d9464-e69e-67d5-c292-b2e11fb334b1"), includeDetails: true); //await _repository.EnsureCollectionLoadedAsync(cardRegister, x => x.CardBills); _output.WriteLine(cardRegister.CardBalance.ToString()); _output.WriteLine(cardRegister.CardBills.Count.ToString()); var cardBill = _manager.CreateCardBill(cardRegister, "01", CardBillFlag.Charge, Convert.ToDecimal(10)); try { await _repository.UpdateAsync(cardRegister); await _cardBillRepository.InsertAsync(cardBill); await unitOfWork.CompleteAsync(); } catch (Exception ex) { await unitOfWork.RollbackAsync(); } _output.WriteLine(cardRegister.CardBalance.ToString()); } } [Fact] public async void AddCardBillNoUnitOfWorkTest() { var id = new Guid("3a0d9464-e69e-67d5-c292-b2e11fb334b1"); var cardRegister = await _cardRegisterRepository.GetAsync(id, includeDetails: true); //var cardRegister = _cardRegisterRepository.WithDetails().Where(o => o.Id == id).FirstOrDefault(); //var cardRegister = await _cardRegisterRepository.GetAsync(id, includeDetails: true); //var cardRegister = await _cardRegisterRepository.Get(new Guid("3a0d9464-e69e-67d5-c292-b2e11fb334b1"), includeDetails: true); //await _repository.EnsureCollectionLoadedAsync(cardRegister, x => x.CardBills); _output.WriteLine(cardRegister.CardBalance.ToString()); _output.WriteLine(cardRegister.CardBills.Count.ToString()); var cardBill = _manager.CreateCardBill(cardRegister, "01", CardBillFlag.Refund, Convert.ToDecimal(-1000)); await _repository.UpdateAsync(cardRegister); await _cardBillRepository.InsertAsync(cardBill); } /// /// 要支持级联更新,必须使用工作单元UnitOfWork /// [Fact] //[UnitOfWork] public async void AddCardBillByGetIdTest() { var id = new Guid("3a0d9464-e69e-67d5-c292-b2e11fb334b1"); using (IUnitOfWork unitOfWork = _unitOfWorkManager.Begin()) { var cardRegister = await _cardRegisterRepository.GetAsync(id, includeDetails: true); _output.WriteLine(cardRegister.CardBalance.ToString()); _output.WriteLine(cardRegister.CardBills.Count.ToString()); _manager.AddCardBill(cardRegister, "01", CardBillFlag.Charge, Convert.ToDecimal(100)); try { await _repository.UpdateAsync(cardRegister); await unitOfWork.CompleteAsync(); } catch (Exception ex) { await unitOfWork.RollbackAsync(); } _output.WriteLine(cardRegister.CardBalance.ToString()); } } } }