public async Task Run_prints_flags_twit_if_id_is_supplied() { var context = MiniTwitTestContext.CreateMiniTwitContext(); context.Users.Add(new User { UserName = "******", Email = "*****@*****.**", PasswordHash = "abc123" }); context.Messages.Add(new Message { AuthorId = 1, Text = "fricking heck", Flagged = 0, }); context.SaveChanges(); var p = new Program(context); await p.Run(new[] { "1" }); //Assert output var actual = _output.ToString().Trim(); Assert.Equal("Flagged post with id 1", actual); //Assert that the message has actually been flagged in db var messages = context.Messages.Where(m => m.Flagged == 1 && m.Id == 1); Assert.Equal(1, messages.Count()); }
public static MiniTwitTestContext CreateMiniTwitContext( [CallerMemberName] string testName = "", [CallerFilePath] string testNamePart2 = "" ) { var connection = new SqliteConnection("Datasource=:memory:"); connection.Open(); var options = new DbContextOptionsBuilder <MiniTwitContext>().UseSqlite(connection); var context = new MiniTwitTestContext(options.Options, connection); context.Database.EnsureCreated(); return(context); }
public async Task Run_prints_all_tweets_and_authors_if_i_flag_is_supplied() { var context = MiniTwitTestContext.CreateMiniTwitContext(); context.Users.Add(new User { UserName = "******", Email = "*****@*****.**", PasswordHash = "abc123" }); context.Messages.Add(new Message { AuthorId = 1, Text = "hello world", Flagged = 0, PubDate = DateTime.Now.AddDays(2) }); context.Messages.Add(new Message { AuthorId = 1, Text = "foobar", Flagged = 0, PubDate = DateTime.Now.AddDays(1) }); context.Messages.Add(new Message { AuthorId = 1, Text = "fricking heck", Flagged = 1, PubDate = DateTime.Now.AddDays(0) }); context.SaveChanges(); var p = new Program(context); await p.Run(new[] { "-i" }); var actual = _output.ToString().Trim(); var expected = new StringBuilder(); expected.Append("1,1,hello world,0" + Environment.NewLine); expected.Append("2,1,foobar,0" + Environment.NewLine); expected.Append("3,1,fricking heck,1"); Assert.Equal(expected.ToString(), actual); }