public static List <Issue> CreateRandomIssues(string preTitle, string preDescription, int numIssues) { List <Issue> outputIssues = new List <Issue>(); List <Project> ps = ProjectManager.GetAllProjects(); if (ps.Count > 0) { Project p = ps[0]; int StartIssueCount = IssueManager.GetByProjectId(p.Id).Count; RandomProjectData prand = new RandomProjectData(p); for (int i = 0; i < numIssues; i++) { // Get Random yet valid data for the current project Category c = prand.GetCategory(); Milestone ms = prand.GetMilestone(); Status st = prand.GetStatus(); Priority pr = prand.GetPriority(); IssueType isst = prand.GetIssueType(); Resolution res = prand.GetResolution(); string assigned = prand.GetUsername(); // creator is also the owner string createdby = prand.GetUsername(); var issue = new Issue { ProjectId = p.Id, Id = Globals.NEW_ID, Title = preTitle + RandomStrings.RandomString(30), CreatorUserName = createdby, DateCreated = DateTime.Now, Description = preDescription + RandomStrings.RandomString(250), DueDate = DateTime.MinValue, IssueTypeId = isst.Id, AffectedMilestoneId = ms.Id, AssignedUserName = assigned, CategoryId = c.Id, MilestoneId = ms.Id, OwnerUserName = createdby, PriorityId = pr.Id, ResolutionId = res.Id, StatusId = st.Id, Estimation = 0, Visibility = 1 }; IssueManager.SaveOrUpdate(issue); // To return to the unit tests outputIssues.Add(issue); } } return(outputIssues); }
public void TestCreateRandomNewIssueVerifyThenDelete() { // Davin, please advise if I have gone overboard with the asserts int StartIssueCount = -1; List <Issue> TestIssues = new List <Issue>(); List <Project> ps = ProjectManager.GetAllProjects(); // Sub test // Check if the system is ocnfigured Assert.IsTrue(ps.Count > 0, "ProjectManager.GetAllProjects() returned nothing"); // Now get the number of issues in the first project so we can test this later // asset passed so we dont need an "if (ps.count > 0)" Project p = ps[0]; StartIssueCount = IssueManager.GetByProjectId(p.Id).Count; // Now generate CNST_NumIssues random issues and return them TestIssues = RandomIssueCreator.CreateRandomIssues("From Unit Test ", DateTime.Now.ToString() + " Unit Test TestCreateRandomNewIssueVerifyThenDelete() Random Data=", CNST_NumIssues); // Sub test // Ok verify that we created at least one issue Assert.IsTrue(TestIssues.Count > 0, "No Issues were randomly created "); // There is now one or more issue present. // Since all issues were created in the same project, we use the first // projectID int pid = TestIssues[0].ProjectId; // Get the number of issues in the first project now. int EndIssueCount = IssueManager.GetByProjectId(pid).Count; // Sub Test // Did we create only CNST_SmallIssues issues? string strAssert = string.Format("The test did not create {0} Issues. StartCount={1} EndCount={2}", CNST_NumIssues.ToString(), StartIssueCount.ToString(), EndIssueCount.ToString()); Assert.IsTrue(EndIssueCount == StartIssueCount + CNST_NumIssues, strAssert); // Verify the same issues are in the database Issue tstIssue; foreach (Issue iss in TestIssues) { // Retrieve the same Issue.ID from the database tstIssue = IssueManager.GetById(iss.Id); // Sub Tests // Now check it // // Cant i use reflection? Assert.IsTrue(tstIssue.Title == iss.Title); Assert.IsTrue(tstIssue.Description == iss.Description); Assert.IsTrue(tstIssue.Id == iss.Id); Assert.IsTrue(tstIssue.IsClosed == iss.IsClosed); Assert.IsTrue(tstIssue.IssueTypeId == iss.IssueTypeId); Assert.IsTrue(tstIssue.IssueTypeImageUrl == iss.IssueTypeImageUrl); Assert.IsTrue(tstIssue.IssueTypeName == iss.IssueTypeName); Assert.IsTrue(tstIssue.LastUpdate == iss.LastUpdate); Assert.IsTrue(tstIssue.LastUpdateDisplayName == iss.LastUpdateDisplayName); Assert.IsTrue(tstIssue.LastUpdateUserName == iss.LastUpdateUserName); Assert.IsTrue(tstIssue.MilestoneDueDate == iss.MilestoneDueDate); Assert.IsTrue(tstIssue.MilestoneId == iss.MilestoneId); Assert.IsTrue(tstIssue.AffectedMilestoneId == iss.AffectedMilestoneId); Assert.IsTrue(tstIssue.AffectedMilestoneImageUrl == iss.AffectedMilestoneImageUrl); Assert.IsTrue(tstIssue.AffectedMilestoneName == iss.AffectedMilestoneName); } // Delete Issues foreach (Issue iss in TestIssues) { IssueManager.Delete(iss.Id); } // Get the number of issues in the first project now. int AfterDeleteIssueCount = IssueManager.GetByProjectId(pid).Count; // Sub Test // Are they gone? strAssert = string.Format("The test did not delete {0} Issues. StartCount={1} AfterDeleteIssueCount={2}", CNST_NumIssues.ToString(), StartIssueCount.ToString(), AfterDeleteIssueCount.ToString()); Assert.IsTrue(EndIssueCount - CNST_NumIssues == AfterDeleteIssueCount, strAssert); // we can now test each one to see if it gone if we like ... not implemented yet }
public void TestGetIssuesByProjectId() { List <Issue> issues = IssueManager.GetByProjectId(ProjectId); Assert.IsTrue(issues.Count > 0); }
public void CreateRandomIssues() { List <Project> ps = ProjectManager.GetAllProjects(); if (ps.Count > 0) { Project p = ps[1]; int StartIssueCount = IssueManager.GetByProjectId(p.Id).Count; RandomProjectData prand = new RandomProjectData(p); for (int i = 0; i < CNST_NumIssues; i++) { // Get Random yet valid data for the current project Category c = prand.GetCategory(); Milestone ms = prand.GetMilestone(); Status st = prand.GetStatus(); Priority pr = prand.GetPriority(); IssueType isst = prand.GetIssueType(); Resolution res = prand.GetResolution(); string assigned = prand.GetUsername(); // creator is also the owner string createdby = prand.GetUsername(); DateTime date = GetRandomDate(); Issue iss = new Issue() { Id = 0, ProjectId = p.Id, Title = RandomStrings.RandomString(30), Description = RandomStrings.RandomString(250), CategoryId = c.Id, PriorityId = pr.Id, StatusId = st.Id, IssueTypeId = isst.Id, MilestoneId = ms.Id, AffectedMilestoneId = ms.Id, ResolutionId = res.Id, CreatorUserName = createdby, LastUpdateUserName = createdby, OwnerUserName = assigned, AssignedUserName = assigned, DateCreated = date, LastUpdate = date, DueDate = GetRandomDate(), Disabled = false, TimeLogged = RandomNumber(1, 24), Votes = 0 }; try { IssueManager.SaveOrUpdate(iss); } catch (Exception ex) { Console.WriteLine(ex.Message); } } int EndIssueCount = IssueManager.GetByProjectId(p.Id).Count; // Did we create only CNST_SmallIssues issues? Assert.IsTrue(EndIssueCount == StartIssueCount + CNST_NumIssues); } }
/// <summary> /// Alls the issues feed. /// </summary> /// <param name="feed">The feed.</param> private void AllIssuesFeed(ref SyndicationFeed feed) { IEnumerable <SyndicationItem> feedItems = CreateSyndicationItemsFromIssueList(IssueManager.GetByProjectId(_projectId)); Project p = ProjectManager.GetById(_projectId); feed.Title = SyndicationContent.CreatePlaintextContent( string.Format(GetLocalResourceObject("AllIssuesTitle").ToString(), p.Name)); feed.Description = SyndicationContent.CreatePlaintextContent( string.Format(GetLocalResourceObject("AllIssuesDescription").ToString(), p.Name)); feed.Items = feedItems; }
public object[] GetProjectIssues(int ProjectId, string Filter) { if (ProjectManager.GetById(ProjectId).AccessType == Common.ProjectAccessType.Private && !ProjectManager.IsUserProjectMember(UserName, ProjectId)) { throw new UnauthorizedAccessException(string.Format(LoggingManager.GetErrorMessageResource("ProjectAccessDenied"), UserName)); } List <Issue> issues; var queryClauses = new List <QueryClause>(); if (Filter.Trim() == "") { // Return all Issues issues = IssueManager.GetByProjectId(ProjectId); } else { queryClauses.Add(new QueryClause("AND", "iv.[Disabled]", "=", "0", SqlDbType.Int)); foreach (var item in Filter.Split('&')) { if (item.StartsWith("status=", StringComparison.CurrentCultureIgnoreCase)) { if (item.EndsWith("=notclosed", StringComparison.CurrentCultureIgnoreCase)) { queryClauses.Add(new QueryClause("AND", "iv.[IsClosed]", "=", "0", SqlDbType.Int)); } else if (item.EndsWith("=new", StringComparison.CurrentCultureIgnoreCase)) { queryClauses.Add(new QueryClause("AND", "iv.[IsClosed]", "=", "0", SqlDbType.Int)); queryClauses.Add(new QueryClause("AND", "iv.[IssueAssignedUserId]", "IS", null, SqlDbType.Int)); } } else if (item.StartsWith("owner=", StringComparison.CurrentCultureIgnoreCase)) { queryClauses.Add(new QueryClause("AND", "iv.[OwnerUsername]", "=", item.Substring(item.IndexOf('=') + 1, item.Length - item.IndexOf('=') - 1), SqlDbType.NVarChar)); } else if (item.StartsWith("reporter=", StringComparison.CurrentCultureIgnoreCase)) { queryClauses.Add(new QueryClause("AND", "iv.[CreatorUsername]", "=", item.Substring(item.IndexOf('=') + 1, item.Length - item.IndexOf('=') - 1), SqlDbType.NVarChar)); } else if (item.StartsWith("assigned=", StringComparison.CurrentCultureIgnoreCase)) { queryClauses.Add(new QueryClause("AND", "iv.[AssignedUsername]", "=", item.Substring(item.IndexOf('=') + 1, item.Length - item.IndexOf('=') - 1), SqlDbType.NVarChar)); } } issues = IssueManager.PerformQuery(queryClauses, null, ProjectId); } var issueList = new List <Object>(); foreach (var item in issues) { var issueitem = new Object[13]; issueitem[0] = item.Id; issueitem[1] = item.DateCreated; issueitem[2] = item.LastUpdate; issueitem[3] = item.StatusName; issueitem[4] = item.Description; issueitem[5] = item.CreatorUserName; issueitem[6] = item.ResolutionName; issueitem[7] = item.CategoryName; issueitem[8] = item.Title; issueitem[9] = item.PriorityName; issueitem[10] = item.MilestoneName; issueitem[11] = item.OwnerUserName; issueitem[12] = item.IssueTypeName; issueList.Add(issueitem); } return(issueList.ToArray()); }