public ICommandResult Handle(CreateCreditCommand command) { //Validar command //Recuperar customer var customer = _customerRepository.GetById(command.CustomerId); //Validar customer //Criar VO's //Criar Entidades var credit = new Credit(command.Value, command.Description, command.DueDate); customer.Statement.AddInput(credit); //Validar VO's e entidades //Persistir no banco _inputRepository.SaveFromStatement(customer.Statement); //Retonar valor return(new GenericCommandResult(true, $"Crédito adicionado com sucesso", credit)); }
public async Task Succeed_With_Valid_Request( CreateAccountCommand createToAccountCommand, CreateAccountCommand createFromAccountCommand, CreateCreditCommand createCreditCommand, TestServer server) { var client = server.CreateClient(); var initialToAccount = await client.PostAsJsonAsync <CreateAccountCommand, AccountModel>("api/accounts", createToAccountCommand); var initialFromAccount = await client.PostAsJsonAsync <CreateAccountCommand, AccountModel>("api/accounts", createFromAccountCommand); var funds = await client.PostAsJsonAsync <FundsModel, FundsModel>($"api/accounts/{initialFromAccount.AccountId}/credits", createCreditCommand.Funds); initialFromAccount.Balance = funds.Amount; var createTransferCommand = new CreateTransferCommand() { Funds = createCreditCommand.Funds, ReceivingAccountId = initialToAccount.AccountId, SendingAccountId = initialFromAccount.AccountId }; await client.PostAsJsonAsync <CreateTransferCommand, FundsModel>($"api/accounts/transfers", createTransferCommand); var resultToAccount = await client.GetAsync <AccountModel>($"api/accounts/{initialToAccount.AccountId}"); var resultFromAccount = await client.GetAsync <AccountModel>($"api/accounts/{initialFromAccount.AccountId}"); Assert.True(resultFromAccount.Balance == initialFromAccount.Balance - createCreditCommand.Funds.Amount); Assert.True(resultToAccount.Balance == initialToAccount.Balance + createCreditCommand.Funds.Amount); }
public async Task Throw_Bad_Request_With_Missing_Account( CreateCreditCommand command, [Frozen] Mock <IRepository> repo, CreateCreditHandler sut) { repo.Setup(p => p.FindAsync(It.IsAny <IScalar <Account> >())).ReturnsAsync((Account)null); await Assert.ThrowsAsync <BadRequestException>(async() => { await sut.Handle(command, new CancellationToken()); }); }
public async Task Returns_Created_With_Valid_Request( CreateCreditCommand command, FundsModel model, [Frozen] Mock <IMediator> mediator, AccountsController sut) { mediator.Setup(p => p.Send(It.IsAny <IRequest <FundsModel> >(), It.IsAny <CancellationToken>())).ReturnsAsync(model); var message = await sut.PostCredit(command) as OkObjectResult; Assert.True(message != null); Assert.True(message.StatusCode == 200); Assert.True((FundsModel)message.Value == model); }
public async Task Fail_With_Invalid_Currency( CreateAccountCommand createAccountCommand, CreateCreditCommand createCreditCommand, TestServer server) { createCreditCommand.Funds.Currency = "Garbage"; var client = server.CreateClient(); var accountModel = await client.PostAsJsonAsync <CreateAccountCommand, AccountModel>("api/accounts", createAccountCommand); var fundsModel = await client.PostAsJsonAsync <FundsModel, FundsModel>($"api/accounts/{accountModel.AccountId}/credits", createCreditCommand.Funds); Assert.True(fundsModel == null); }
private void ApplyOnClick(object sender, EventArgs eventArgs) { var model = new CreateCreditRequestModel(_name.Text, _bank.Text, _type, _percent.Text, _duration.Text, _startDate.Text, _amount.Text); if (model.IsValid(ShowError)) { ThreadPool.QueueUserWorkItem(w => { ShowLoaderInMainThread(); var commandDelegate = new CommandDelegate <CreateCreditResponce>(OnSuccess, ShowError, ShowErrorNotEnternet); var command = new CreateCreditCommand(LocalDb.Instance, commandDelegate); command.Execute(model); DissmissLoaderInMainThread(); }); } }
public async Task Succeed_With_Valid_Request( CreateAccountCommand createAccountCommand, CreateCreditCommand createCreditCommand, TestServer server) { var client = server.CreateClient(); var accountModel = await client.PostAsJsonAsync <CreateAccountCommand, AccountModel>("api/accounts", createAccountCommand); var fundsModel = await client.PostAsJsonAsync <FundsModel, FundsModel>($"api/accounts/{accountModel.AccountId}/credits", createCreditCommand.Funds); var result = await client.GetAsync <AccountModel>($"api/accounts/{accountModel.AccountId}"); Assert.True(result.Balance == fundsModel.Amount); }
public async Task Succeed_With_Valid_Request( Account account, CreateCreditCommand command, [Frozen] Mock <IRepository> repo, CreateCreditHandler sut) { var originalBalance = account.Balance.Amount; repo.Setup(p => p.FindAsync(It.IsAny <IScalar <Account> >())).ReturnsAsync(account); var result = await sut.Handle(command, new CancellationToken()); repo.Verify(p => p.FindAsync(It.IsAny <IScalar <Account> >()), Times.Once()); repo.Verify(p => p.UnitOfWork.CommitAsync(), Times.Once()); Assert.True(result.Amount == originalBalance + command.Funds.Amount); }
public ICommandResult CreditPost([FromBody] CreateCreditCommand command) { command.CustomerId = Guid.Parse(User.FindFirst(ClaimTypes.Sid)?.Value); return(_handler.Handle(command)); }
public async Task <IActionResult> PostCredit(CreateCreditCommand command) { return(await Handle <CreateCreditCommand, FundsModel>(command, Ok)); }