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
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #5
0
        /// <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());
        }