public void OutputsPostsInDescendingTimestampOrder() { var alice = new User("Alice"); var bob = new User("Bob"); var charlie = new User("Charlie"); alice.Follow(bob); alice.Follow(charlie); var posts = new[] { new Post(bob, "Hello, world!", DateTime.MinValue), new Post(charlie, "Bonjour la monde!", DateTime.MinValue.AddYears(1)), new Post(bob, "Sekai, konnichiwa!", DateTime.MinValue.AddYears(2)) }; bob.Publish(posts[0]); bob.Publish(posts[2]); charlie.Publish(posts[1]); var outputSpy = new OutputSpy(); var postFormatter = new PostFormatterDummy(p => p.Message); var command = new PrintWall(postFormatter, outputSpy); command.Execute(alice); Assert.Equal( new[] { "Sekai, konnichiwa!", "Bonjour la monde!", "Hello, world!" }, outputSpy.CalledWith); }
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 void OutputsFormattedStrings() { var alice = new User("Alice"); var bob = new User("Bob"); var post = new Post(bob, "Hello, World!", DateTime.Now); alice.Follow(bob); bob.Publish(post); var outputSpy = new OutputSpy(); var postFormatter = new PostFormatterDummy("Hello!"); var command = new PrintWall(postFormatter, outputSpy); command.Execute(alice); Assert.Equal(new[] { "Hello!" }, outputSpy.CalledWith); }