public void should_start_the_incubator() { var request = new IncubationRequest("Warrior", 5); var incubator = Substitute.For <IIncubator>(); _incubatorFactory.Build().Returns(incubator); _handler.Handle(request, new CancellationToken()); _incubatorFactory.Received(1).Build(); incubator.Received(1).Incubate(Arg.Is <IncubationRequest>(it => it.Type == "Warrior" && it.Quantity == 5)); }
public async Task Incubate(IncubationRequest eggs) { GenerateEggs(eggs); await Task.Run(() => { var dueDate = DateTime.Now.AddSeconds(SecondsToIncubate); var eggsWaitingToHatch = true; while (eggsWaitingToHatch) { if (DateTime.Now > dueDate) { _mediator.Send(new EggHatchedRequest(eggs.Type, eggs.Quantity)); eggsWaitingToHatch = false; } Thread.Sleep(1000); } }); }
private void GenerateEggs(IncubationRequest eggs) { _eggGenerator.Generate(new EggsDTO(eggs.Type, eggs.Quantity)); }