protected override Task <RequestStatus> HandleCommand(BuyNowCommand request, CancellationToken cancellationToken) { var user = _userRepository.FindUser(request.SignedInUser); if (user == null) { _logger.LogError("BuyNowCommandHandler cannot find user {@user}", request.SignedInUser); throw new CommandException($"Cannot find user: {user.UserIdentity}"); } var auction = _auctionRepository.FindAuction(request.AuctionId); if (auction == null) { throw new CommandException($"Invalid auction id: {request.AuctionId}"); } var buyNowService = new BuyNowService(_userRepository); var generatedEvents = buyNowService.BuyNow(auction, user); generatedEvents.AddRange(auction.PendingEvents); generatedEvents.AddRange(user.PendingEvents); _auctionRepository.UpdateAuction(auction); _userRepository.UpdateUser(user); _eventBusService.Publish(generatedEvents, request.CommandContext.CorrelationId, request); return(Task.FromResult(RequestStatus.CreateFromCommandContext(request.CommandContext, Status.PENDING))); }
public void SetUp() { auction = AuctionTestUtils.CreateAuction(); for (int i = 0; i < users.Length; i++) { users[i] = AuctionTestUtils.CreateUser(); } var mockRepo = new Mock <IUserRepository>(); mockRepo.Setup(r => r.FindUser(It.IsAny <UserIdentity>())).Returns <UserIdentity>(identity => { return(auction.Bids.Where(bid => bid.UserIdentity.UserId.Equals(identity.UserId)) .Select(bid => bid.UserIdentity) .Select(userIdentity => users.First(user => user.UserIdentity.UserId.Equals(userIdentity.UserId))) .FirstOrDefault()); }); service = new BuyNowService(mockRepo.Object); }