public async Task MemeReaction_DbIntegration()
        {
            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);

                var controller = new MemeListController(repo, sessions);
                var reaction   = new MemeReaction()
                {
                    MemeId = _random.Next(1, EFInMemoryDbCreator.MemeCount),
                    UserId = 1,
                    Vote   = (sbyte)(_random.Next(0, 10) % 2 == 0 ? -1 : 1)
                };
                var mRating = (await repo.DrawMeme(reaction.MemeId)).Rating;


                // act
                var outcome = await controller.MemeReaction(reaction);

                // fresh context
                repo = new BgcMemeRepo(contextProvider.GetFreshContext());

                // prepare assert
                var rating = await repo.FetchRating(reaction);

                var meme2 = await repo.DrawMeme(reaction.MemeId);

                // assert
                Assert.AreEqual(reaction.Vote, rating.Vote);
                Assert.AreNotEqual(meme2.Rating, mRating);
                mRating += reaction.Vote;
                Assert.AreEqual(mRating, meme2.Rating);
                Assert.AreEqual(outcome.Rating, meme2.Rating);
                Assert.AreEqual(1, rating.Id);
            }
        }