public async Task POST_Should_call_save() { const decimal rate = 20; const decimal donationAmount = 100M; var donationReq = MakeDonationRequest(donationAmount); _taxRateStorage.CurrentRate.Returns(rate); await _sut.Donate(donationReq, CancellationToken.None); var donation = Donation.MakeNew(donationReq.Name, donationReq.PostCode, donationReq.Amount, 0); await _repository.Received(1).Save(donation, CancellationToken.None); }
public async Task <ActionResult <DonationResponse> > Donate(DonationRequest model, CancellationToken cancellationToken) { if (!ModelState.IsValid) { var error = BuildErrorMessage(); return(BadRequest(error)); } cancellationToken.ThrowIfCancellationRequested(); var giftAid = _calculator.Calculate(model.Amount); var donation = Donation.MakeNew(model.Name, model.PostCode, model.Amount, giftAid); var id = await _repository.Save(donation, cancellationToken); return(Ok(new DonationResponse(id, giftAid))); }