public bool CreateNewIssueRevision(int revision, int issueId, string repository, string revisionAuthor, string revisionDate, string revisionMessage, string changeset = "", string branch = "")
        {
            if (issueId <= 0)
            {
                throw new ArgumentOutOfRangeException("issueId");
            }

            var projectId = IssueManager.GetById(issueId).ProjectId;

            //authentication checks against user access to project
            if (ProjectManager.GetById(projectId).AccessType == ProjectAccessType.Private && !ProjectManager.IsUserProjectMember(UserName, projectId))
            {
                throw new UnauthorizedAccessException(string.Format(LoggingManager.GetErrorMessageResource("ProjectAccessDenied"), UserName));
            }

            var issueRevision = new IssueRevision
            {
                Revision     = revision,
                IssueId      = issueId,
                Author       = revisionAuthor,
                Message      = revisionMessage,
                Repository   = repository,
                RevisionDate = revisionDate,
                Changeset    = changeset,
                Branch       = branch
            };

            return(IssueRevisionManager.SaveOrUpdate(issueRevision));
        }
示例#2
0
        /// <summary>
        /// Saves this instance.
        /// </summary>
        /// <returns></returns>
        public static bool SaveOrUpdate(IssueRevision entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException("entity");
            }
            if (entity.IssueId <= Globals.NEW_ID)
            {
                throw (new ArgumentException("The issue id for the revision is not valid"));
            }

            var tempId = DataProviderManager.Provider.CreateNewIssueRevision(entity);

            if (tempId > Globals.NEW_ID)
            {
                entity.Id = tempId;
                return(true);
            }

            return(false);
        }
示例#3
0
        private void CheckTrackedEntities(string userName)
        {
            foreach (var entry in ChangeTracker.Entries <ITrackedEntity>().Where(a => a.State == EntityState.Added || a.State == EntityState.Modified))
            {
                if (userName == null)
                {
                    throw new Exception("Need to provide user identifier when making changes to tracked entities!");
                }

                entry.Entity.ModificationTime = DateTime.UtcNow;
                entry.Entity.ModifiedByUser   = userName;
            }

            foreach (var entry in ChangeTracker.Entries <Issue>().Where(a => a.State == EntityState.Added || a.State == EntityState.Modified).ToList())
            {
                if (entry.State == EntityState.Modified)
                {
                    Issue lastRevision = (Issue)entry.GetDatabaseValues().ToObject();

                    //Issue lastRevision = EntityHelper.GetOriginal<Issue>(this, entry.Entity);

                    IssueRevision newRevision = _mapper.Map <Issue, IssueRevision>(lastRevision);

                    int newRevisionNo = 1;

                    var item = this.IssueRevision.Where(pr => pr.IssueId == newRevision.IssueId).OrderByDescending(pr => pr.RevisionNo).FirstOrDefault();

                    if (item != null)
                    {
                        newRevisionNo = item.RevisionNo + 1;
                    }

                    newRevision.RevisionNo = newRevisionNo;

                    this.IssueRevision.Add(newRevision);
                }
            }
        }
        public void CanCreateIssueRevision()
        {
            GenericRepository <Issue> issueRepo = _unitOfWork.IssueRepository;
            GenericRepository <Build> buildRepo = _unitOfWork.BuildRepository;

            int initialIssueNo    = _context.Issues.Count();
            int initialIssueRevNo = _context.IssueRevision.Count();

            string _projectName = "Velocity";
            string _screenName  = "Install";
            string _locale      = "pl-PL";
            string _build       = "1.0";
            string initialValue = "Test issue";

            Build build = buildRepo.Get(b => b.BuildName.Equals(_build)).FirstOrDefault();

            Issue newIssue = new Issue {
                Height = 10, Width = 10, X = 5, Y = 6, Value = initialValue, IssueSeverity = IssueSeverity.Error, IssueType = IssueType.Linguistic, ProjectName = _projectName, ScreenName = _screenName, LocaleCode = _locale, Build = build, IssueStatus = IssueStatus.Active
            };

            issueRepo.Insert(newIssue);

            _unitOfWork.Save(TestInitializer.UserName);

            Guid issueId = newIssue.IssueId;

            Assert.AreEqual(initialIssueNo + 1, _context.Issues.Count());
            Assert.AreEqual(initialIssueRevNo, _context.IssueRevision.Count());

            Issue selectedIssue = issueRepo.Get(i => i.IssueId == issueId).FirstOrDefault();

            Assert.AreEqual(initialValue, selectedIssue.Value);

            string modifiedValue = "New value";

            newIssue.Value = modifiedValue;

            _unitOfWork.Save(TestInitializer.UserName);

            Assert.AreEqual(initialIssueNo + 1, _context.Issues.Count());
            Assert.AreEqual(initialIssueRevNo + 1, _context.IssueRevision.Count());

            _unitOfWork.Save(TestInitializer.UserName);

            Assert.AreEqual(initialIssueNo + 1, _context.Issues.Count());
            Assert.AreEqual(initialIssueRevNo + 1, _context.IssueRevision.Count());

            Issue         selectedUpdatedIssue  = issueRepo.Get(i => i.IssueId == issueId).FirstOrDefault();
            IssueRevision selectedIssueRevision = _context.IssueRevision.FirstOrDefault(i => i.IssueId == issueId);

            Assert.AreEqual(initialValue, selectedIssueRevision.Value);
            Assert.AreEqual(modifiedValue, selectedUpdatedIssue.Value);

            string anotherModifiedValue = initialValue;

            newIssue.Value = anotherModifiedValue;

            _unitOfWork.Save(TestInitializer.UserName);

            Assert.AreEqual(initialIssueNo + 1, _context.Issues.Count());
            Assert.AreEqual(initialIssueRevNo + 2, _context.IssueRevision.Count());

            Issue         selectedUpdatedAgainIssue = issueRepo.Get(i => i.IssueId == issueId).FirstOrDefault();
            IssueRevision selectedIssueRevision1    = _context.IssueRevision.FirstOrDefault(i => i.IssueId == issueId && i.RevisionNo == 1);
            IssueRevision selectedIssueRevision2    = _context.IssueRevision.FirstOrDefault(i => i.IssueId == issueId && i.RevisionNo == 2);

            Assert.AreEqual(initialValue, selectedIssueRevision1.Value);
            Assert.AreEqual(modifiedValue, selectedIssueRevision2.Value);
            Assert.AreEqual(anotherModifiedValue, selectedUpdatedAgainIssue.Value);
        }
示例#5
0
 //IssueRevisions
 public abstract int CreateNewIssueRevision(IssueRevision newIssueRevision);