public async void UnSubscribeBook() { var mockDb = _repositoryMock as MockBookRepository <Domain.Entities.Subscription>; var subsciption = new Domain.Entities.Subscription(Guid.NewGuid(), Guid.NewGuid(), "Author"); mockDb.Table.Add(subsciption.SubsciptionId, subsciption); var mockUnitOfWork = new Mock <IUnitOfWork>(); mockUnitOfWork.Setup(a => a.SaveAsync()); var commandHandler = new UnSubscribeCommandHandler(_repositoryMock, mockUnitOfWork.Object); var command = new UnSubscribeCommand { SubcriptionId = subsciption.SubsciptionId }; await commandHandler.HandleAsync(command); var dbCheck = _repositoryMock as MockBookRepository <Domain.Entities.Subscription>; var row = dbCheck.Table[subsciption.SubsciptionId]; Assert.False(row.IsSubscribed); }
public async Task <Result <Guid> > Handle(UnSubscribeCommand command, CancellationToken cancellationToken) { var subscription = await _context.Subscriptions.Include(x => x.ChannelSubscriptions).FirstOrDefaultAsync(subscription => subscription.SubredditId == command.SubredditId && subscription.Sort == command.Sort, cancellationToken); if (subscription == null) { return((await Result.FailAsync("Not subscribed!")) as Result <Guid>); } var channel = subscription.ChannelSubscriptions.FirstOrDefault(subscription => subscription.GuildChannelId == command.ChannelId); if (channel == null) { return((await Result.FailAsync("Not subscribed!")) as Result <Guid>); } subscription.ChannelSubscriptions.Remove(channel); if (subscription.ChannelSubscriptions.Any()) { _context.Subscriptions.Update(subscription); } else { _context.Subscriptions.Remove(subscription); } await _context.SaveChangesAsync(cancellationToken); return(await Result <Guid> .SuccessAsync(subscription.Id)); }
public async Task <IActionResult> UnSubscribeCommand([FromBody] UnSubscribeDto value) { _logger.LogInformation("UnSubscribe for subriptionId:{0} ", value.SubcriptionId); var command = new UnSubscribeCommand { SubcriptionId = value.SubcriptionId }; await _mediator.DispatchAsync(command); _logger.LogInformation("UnSubscribed for subriptionId:{0} ", value.SubcriptionId); return(Ok()); }
public async Task <IActionResult> Unsubscribe(UnSubscribeCommand command) { return(Ok(await Mediator.Send(command))); }