public void Setup()
 {
     _context = ShimsContext.Create();
     _createNewAjaxDataHost = new CreateNewAjaxDataHost();
     _privateObject         = new PrivateObject(_createNewAjaxDataHost);
     _privatePageObject     = new PrivateObject(_createNewAjaxDataHost, new PrivateType(typeof(Page)));
 }
        private void GetListLibLinks(List <NavLink> links)
        {
            var lists     = new Dictionary <int, string[]>();
            var libraries = new Dictionary <int, string[]>();

            string appStoreLink = string.Empty;

            var tasks = new List <Task>();

            Task t1 = Task.Factory.StartNew(() =>
            {
                using (var spSite = new SPSite(SiteId, GetUserToken()))
                {
                    using (SPWeb spWeb = spSite.OpenWeb(WebId))
                    {
                        if (spWeb.DoesUserHavePermissions(SPBasePermissions.ManageWeb))
                        {
                            appStoreLink =
                                string.Format(
                                    "<span class='epm-app-btn' data-url='{0}'><span class='fui-plus'></span></span>",
                                    string.Format("{0}/_layouts/15/addanapp.aspx", RelativeUrl));
                        }

                        try
                        {
                            lists = CreateNewAjaxDataHost.GetCreatableLists(spWeb);
                        }
                        catch { }
                    }
                }
            });

            tasks.Add(t1);

            Task t2 = Task.Factory.StartNew(() =>
            {
                using (var spSite = new SPSite(SiteId, GetUserToken()))
                {
                    using (SPWeb spWeb = spSite.OpenWeb(WebId))
                    {
                        try
                        {
                            libraries = CreateNewAjaxDataHost.GetCreatableLibraries(spWeb);

                            foreach (var library in libraries)
                            {
                                string[] libInfo = library.Value;

                                if (!libInfo[1].ToLower().Trim().Equals("site pages"))
                                {
                                    continue;
                                }
                                library.Value[4] = libInfo[4].Replace("SitePages/Forms/Upload.aspx?source=",
                                                                      "_layouts/15/createwebpage.aspx");

                                break;
                            }
                        }
                        catch { }
                    }
                }
            });

            tasks.Add(t2);

            try
            {
                Task.WaitAll(tasks.ToArray());
            }
            catch (AggregateException exception)
            {
                exception.Handle(e => { throw e; });
            }

            links.Add(new NavLink
            {
                Title = string.Format("List Apps{0}", appStoreLink),
                Url   = "Header"
            });

            if (lists.Count > 0)
            {
                links.AddRange(lists.Select(list => list.Value).Select(l => new NavLink
                {
                    Title    = l[1],
                    Url      = GetUrl(l),
                    ObjectId = l[5]
                }));
            }
            else
            {
                links.Add(new NavLink
                {
                    Title = "No list apps",
                    Url   = "PlaceHolder"
                });
            }

            links.Add(new NavLink
            {
                Title = string.Format("Library Apps{0}", appStoreLink),
                Url   = "Header"
            });

            if (libraries.Count > 0)
            {
                links.AddRange(libraries.Select(lib => lib.Value).Select(l => new NavLink
                {
                    Title    = l[1],
                    Url      = GetUrl(l),
                    ObjectId = l[5]
                }));
            }
            else
            {
                links.Add(new NavLink
                {
                    Title = "No library apps",
                    Url   = "PlaceHolder"
                });
            }
        }