public async Task <IActionResult> AcceptLead([FromRoute] int id) { var command = new AcceptLeadCommand(id); var result = await _mediator.Send(command); if (result.Status == LeadStatusType.Accepted.ToString()) { await _mediator.Publish(new SendEmailEvent("*****@*****.**", $"Lead {id} is Accepted")); } return(result != null ? (IActionResult)Ok(result) : NotFound()); }
public async Task Should_Accept_A_New_Lead_With_Price_less_than_500() { var dbContext = await InMemoryMockDbContext.GetDatabaseContext(); var leadHandlerRepository = new LeadHandlerRepository(dbContext); var leads = await leadHandlerRepository.GetLeadsWithNewStatus(); var job = leads.Where(x => (Convert.ToInt32(x.Price) < 500)).First(); var leadHandler = new AcceptLeadHandler(leadHandlerRepository, CreateLogger <AcceptLeadHandler>()); var cmd = new AcceptLeadCommand(job.Id); var resp = await leadHandler.Handle(cmd, new CancellationToken()); var leadInDb = await leadHandlerRepository.GetLeadById(job.Id); Assert.NotNull(resp); Assert.AreEqual(job.Id, resp.JobId); Assert.AreEqual(LeadStatusType.Accepted.ToString(), resp.Status); Assert.AreEqual(leadInDb.Price, job.Price); Assert.AreEqual(LeadStatusType.Accepted.ToString(), leadInDb.Status); }