public void TryLoadSiteSchedule_AsAdmin_ReturnSchedule() { FogBugzClient.LogOn(AdminCredentials.Url, AdminCredentials.UserName, AdminCredentials.Password); var token = FogBugzClient.GetToken(); var scheduleLoader = new FbScheduleLoader(); bool isAdmin; var fbSchedule = scheduleLoader.Load("https://fogbugzpm-demo.fogbugz.com", token, out isAdmin); Assert.IsTrue(isAdmin, "isAdmin"); Assert.IsNotNull(fbSchedule.SiteSchedule); Assert.IsTrue(fbSchedule.SiteSchedule.TimeOffRanges.Count >0 ); }
//Load info that doesn't change very often private static FogBugzClientCache LoadFogBugzAgentCache() { object existingFbAgentCache=null; string cacheKey = MsCacheKey.Gen(MsCacheDataType.FogBugz_ClientCacheByFogBugzUrl, FbAccountContext.Current.Url); if (MsCache.TryGet(cacheKey, ref existingFbAgentCache)) return (FogBugzClientCache)existingFbAgentCache; var fbClient = Client; //need to use local variable otherwise multithreading will fail since .Client is dependent on HttpContext var fbAgentCache = new FogBugzClientCache(); bool allowSubProjects = FbAccountContext.Current.Settings.AllowSubProjects; string subProjectTag = FbAccountContext.Current.Settings.SubProjectTag; var url = FbAccountContext.Current.Url; var token = fbClient.GetToken(); //Get data from FogBugz in parallel Parallel.Invoke( () => { fbAgentCache.Projects = fbClient.GetProjects().Where(m => m.Name != "Inbox").ToList(); //Skip inbox for now }, () => { fbAgentCache.Milestones = fbClient.GetFixFors().Where(f => !f.Deleted && f.Name != "Undecided").OrderBy(m => m.DateRelease).ToList(); //Skip undecided for now if (allowSubProjects) fbAgentCache.SubProjectParentCases = GetCasesByTag(subProjectTag, fbAgentCache.Milestones, fbClient); }, () => { fbAgentCache.Statuses = fbClient.GetStatuses().ToList(); }, () => { fbAgentCache.Persons = fbClient.GetPersons().ToList(); }, () => { var scheduleLoader = new FbScheduleLoader(); bool isAdmin; FogBugzClient.LogOn(url+"/api.asp", token); fbAgentCache.Schedule = scheduleLoader.Load(url , token, out isAdmin); fbAgentCache.IsLoadedByAdminUser = isAdmin; } ); //Expire in 1 day MsCache.Set(cacheKey, fbAgentCache, new TimeSpan(1, 0, 0, 0)); return fbAgentCache; }