public void Should_Return_Redirects_List_Successfully()
        {
            BetterCms.Module.Pages.Models.Redirect redirect1 = TestDataProvider.CreateNewRedirect();
            BetterCms.Module.Pages.Models.Redirect redirect2 = TestDataProvider.CreateNewRedirect();

            Mock <IRepository> repositoryMock = new Mock <IRepository>();

            repositoryMock
            .Setup(f => f.AsQueryable <BetterCms.Module.Pages.Models.Redirect>())
            .Returns(new[] { redirect1, redirect2 }.AsQueryable());

            using (var service = new PagesApiContext(Container.BeginLifetimeScope(), repositoryMock.Object))
            {
                var redirects = service.GetRedirects();

                Assert.IsNotNull(redirects);
                Assert.AreEqual(redirects.Items.Count, 2);
                Assert.AreEqual(redirects.TotalCount, 2);

                var redirect = redirects.Items.FirstOrDefault(l => redirect1.Id == l.Id);
                Assert.IsNotNull(redirect);
                Assert.AreEqual(redirect1.PageUrl, redirect.PageUrl);
                Assert.AreEqual(redirect1.RedirectUrl, redirect.RedirectUrl);
            }
        }
Exemplo n.º 2
0
        public void Should_Find_Page_And_Return_ViewModel_Successfully()
        {
            // DEBUG START
            var request = new SearchableGridOptions
            {
                SearchQuery = "a",
                PageNumber  = 2,
                PageSize    = 3,
                Column      = "PageUrl",
                Direction   = SortDirection.Descending
            };
            var sessionFactory = this.Container.Resolve <ISessionFactoryProvider>();
            // DEBUG END

            SearchableGridViewModel <SiteSettingRedirectViewModel> model;

            using (var session = sessionFactory.OpenSession())
            {
                BetterCms.Module.Pages.Models.Redirect alias      = null;
                SiteSettingRedirectViewModel           modelAlias = null;

                IQueryOver <BetterCms.Module.Pages.Models.Redirect, BetterCms.Module.Pages.Models.Redirect> query = session.QueryOver(() => alias);

                // Filter
                if (!string.IsNullOrWhiteSpace(request.SearchQuery))
                {
                    var searchQuery = string.Format("%{0}%", request.SearchQuery);
                    query = query
                            .Where(
                        Restrictions.InsensitiveLike(Projections.Property(() => alias.PageUrl), searchQuery) ||
                        Restrictions.InsensitiveLike(Projections.Property(() => alias.RedirectUrl), searchQuery));
                }

                // Select fields
                query = query
                        .SelectList(select => select
                                    .Select(() => alias.Id).WithAlias(() => modelAlias.Id)
                                    .Select(() => alias.PageUrl).WithAlias(() => modelAlias.PageUrl)
                                    .Select(() => alias.RedirectUrl).WithAlias(() => modelAlias.RedirectUrl)
                                    .Select(() => alias.Version).WithAlias(() => modelAlias.Version))
                        .TransformUsing(Transformers.AliasToBean <SiteSettingRedirectViewModel>());

                // Count
                var count = query.RowCount();

                // Sorting and paging
                query.AddSortingAndPaging(request);

                // Get results
                var redirects = query.List <SiteSettingRedirectViewModel>();

                model = new SearchableGridViewModel <SiteSettingRedirectViewModel>
                {
                    GridOptions = request,
                    Items       = new CustomPagination <SiteSettingRedirectViewModel>(redirects, request.PageNumber, request.PageSize, count)
                };
            }

            // DEBUG START
            Assert.IsNotNull(model);
            // DEBUG END
        }