static void Main(string[] args) { var timeProvider = new SystemCurrentTimeProvider(); var repo = new UserRepository(); var getUser = new CreateOrRetrieveUserByName(repo); var output = new StandardOutput(); var formatter = new PostFormatter(timeProvider); var printer = new PrintPosts(formatter, output); var printWall = new PrintWall(formatter, output); var publisher = new PublishPost(timeProvider); var follow = new FollowUser(); var dispatcher = new CommandDispatcher( getUser, printer, publisher, follow, printWall); while(true) { Console.Write("> "); var input = Console.ReadLine(); dispatcher.Run(input.Split(' ')); } }
public async Task <IActionResult> Publish(Guid id) { var command = new PublishPost { BlogId = BlogId, AggregateRootId = id }; await _mediator.SendAndPublishAsync <PublishPost, Post>(command); return(new NoContentResult()); }
public void CreatesAPostWithTheMessage() { var time = DateTime.Now; var timeProvider = new CurrentTimeProviderDummy(time); var user = new User("Alice"); var command = new PublishPost(timeProvider); command.Execute(user, "Hello, World!"); Assert.Equal(new[] { new Post(user, "Hello, World!", time) }, user.Posts); }
public async Task Setup() { _post = PostFactories.Post(); _command = new PublishPost { BlogId = Guid.NewGuid(), AggregateRootId = Guid.NewGuid() }; _postRepositoryMock = new Mock <IPostRepository>(); _postRepositoryMock .Setup(x => x.GetByIdAsync(_command.BlogId, _command.AggregateRootId)) .ReturnsAsync(_post); _postRepositoryMock .Setup(x => x.UpdateAsync(It.IsAny <Post>())) .Callback <Post>(p => _updatedPost = p) .Returns(Task.CompletedTask); _commandHandler = new PublishPostHandler(_postRepositoryMock.Object); _result = await _commandHandler.HandleAsync(_command); _event = _updatedPost.Events.OfType <PostPublished>().Single(); }