public async Task PageMemes_ShouldHandleDefaultSequence() { using (var contextProvider = new EFInMemoryDbCreator.Sqlite <BgcFullContext>()) { // arrange var context = contextProvider.CreateContext(c => c.SeedUsers(1).SeedMemes(10)); var repo = new BgcMemeRepo(context); var sessions = new BgcSessionsRepo(context); repo.PageMemeCount = 5; var controller = new MemeListController(repo, sessions); // first page count var outcome = await controller.PageMemes(0, 0); // count Assert.AreEqual(5, outcome.Count()); var last = outcome.Last(); // sequencial outcome = await controller.PageMemes(1, 0); Assert.AreEqual(last.Core.Id - 1, outcome.First().Core.Id); // new memes are automatically appended context.SeedMemes(1); outcome = await controller.PageMemes(1, 0); Assert.AreEqual(last.Core.Id, outcome.First().Core.Id); } }
public async Task PageMemes_ShouldHandleUserSession() { using (var contextProvider = new EFInMemoryDbCreator.Sqlite <BgcFullContext>()) { // arrange var context = contextProvider.CreateContext(c => c.SeedUsers(1).SeedMemes(10)); var repo = new BgcMemeRepo(context); var sessions = new BgcSessionsRepo(context); repo.PageMemeCount = 5; var controller = new MemeListController(repo, sessions); controller.PageMemeCount = 5; // first page count var outcome = await controller.PageMemes(0, 1); // session is saved var session = await sessions.FetchMemeSession(1); Assert.AreEqual(outcome.First().Core.Id, session.FirstMemeId); Assert.AreEqual(outcome.Last().Core.Id, session.LastMemeId); // sequence stays on user session var last = outcome.Last(); context.SeedMemes(1); // sequencial outcome = await controller.PageMemes(1, 1); Assert.AreEqual(last.Core.Id - 1, outcome.First().Core.Id); // new memes do not interfere user session session = await sessions.FetchMemeSession(1); dynamic newCount = await controller.CountNewMemes(1, session.FirstMemeId); if (newCount.Count != 1) { throw new AssertFailedException(); } } }