Ejemplo n.º 1
0
        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(' '));
            }
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Publish(Guid id)
        {
            var command = new PublishPost {
                BlogId = BlogId, AggregateRootId = id
            };
            await _mediator.SendAndPublishAsync <PublishPost, Post>(command);

            return(new NoContentResult());
        }
Ejemplo n.º 3
0
        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();
        }