Esempio n. 1
0
        public async Task <IList <BlogPost> > HandleAsync(GetRecentBlogPostsQuery query)
        {
            var recentPosts = await _context.BlogPosts
                              .AsNoTracking()
                              .Where(bp => bp.Public == true && bp.PublishOn <= DateTime.Now)
                              .OrderByDescending(bp => bp.ModifiedAt)
                              .ThenByDescending(bp => bp.PublishOn)
                              .Take(query.NumberOfPostsToGet)
                              .ToListAsync();

            return(recentPosts);
        }
Esempio n. 2
0
        public async Task <IActionResult> Index()
        {
            GetRecentBlogPostsQuery grbp = new GetRecentBlogPostsQuery()
            {
                NumberOfPostsToGet = 7
            };

            var recentPosts = await _qpa.ProcessAsync(grbp);

            var vhvm = new HomeViewModel()
            {
                RecentPosts = recentPosts
            };

            return(View(vhvm));
        }
Esempio n. 3
0
        public async Task <IActionResult> Index()
        {
            var grbp = new GetRecentBlogPostsQuery()
            {
                NumberOfPostsToGet = 7
            };

            var recentPosts = await _qpa.ProcessAsync(grbp);

            var gtphp = new GetTopicPostsForHomePageViewModelQuery();

            var topicPostsViewModel = await _qpa.ProcessAsync(gtphp);

            var vhvm = new HomeViewModel()
            {
                RecentPosts = recentPosts,
                TopicPosts  = topicPostsViewModel
            };

            return(View(vhvm));
        }
Esempio n. 4
0
        public async void GetRecentBlogPostsTest()
        {
            Container container = new Container();

            container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle();

            container.Register <BlogDbContext>(() => { return(new BlogDbContext(new DbContextOptionsBuilder <BlogDbContext>().UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options)); }, Lifestyle.Scoped);

            container.Register <IQueryHandlerAsync <GetRecentBlogPostsQuery, IList <BlogPost> >, GetRecentBlogPostsEFQH>();

            container.Verify();

            using (AsyncScopedLifestyle.BeginScope(container))
            {
                var db = container.GetInstance <BlogDbContext>();

                SeedBlogDbContext.SeedData(db);

                QueryProcessorAsync qpa = new QueryProcessorAsync(container);

                GetRecentBlogPostsQuery grbp = new GetRecentBlogPostsQuery()
                {
                    NumberOfPostsToGet = 2
                };

                var x = await qpa.ProcessAsync(grbp);

                Assert.Equal(2, x.Count);

                grbp.NumberOfPostsToGet = 3;

                x = await qpa.ProcessAsync(grbp);

                Assert.Equal(3, x.Count);
            }
        }