public void WhenProcessingChangesetAndHasBugRegexesThatDoesnotMatchShouldNotCountAsBug()
        {
            this.changesetProcessor = new ChangesetProcessor(@"gramolias+;bug+", this.loggerMock.Object);
            var c = CreateCommitWithAddedLines("file2", 10);

            c.ChangesetFileChanges[0].Deleted = 5;
            c.ChangesetMessage = "This is a comment a newline new feature";
            this.changesetProcessor.ProcessChangeset(c);
            Assert.Equal(0, GetOutputFor("file2").NumberOfChangesWithFixes);
            Assert.Equal(0, GetOutputFor("file2").TotalLinesChangedWithFixes);
        }
        public void WhenProcessingChangesetAndHasBugRegexesShouldEvaluateBugRegexes()
        {
            this.changesetProcessor = new ChangesetProcessor(@"gramolias+;bug+", this.loggerMock.Object);
            var c = CreateCommitWithAddedLines("file2", 10);

            c.ChangesetFileChanges[0].Deleted = 5;
            c.ChangesetMessage = "This is a comment a newline \n\r and a bug";
            this.changesetProcessor.ProcessChangeset(c);
            Assert.Equal(1, GetOutputFor("file2").NumberOfChangesWithFixes);
            Assert.Equal(15, GetOutputFor("file2").TotalLinesChangedWithFixes);
        }
        public void WhenProcessingBugDatabaseChangesetAndDoesntMatchBugRegexesThatDoesntMatchShouldIncrementBugDatabaseCodeChurn()
        {
            this.changesetProcessor = new ChangesetProcessor(@"gramolias+;bug+", this.loggerMock.Object);
            this.changesetProcessor.WorkItemCache.Add("SomeCommitHash", new List <WorkItem>());

            var c = CreateCommitWithAddedLines("file2", 10);

            c.ChangesetFileChanges[0].Deleted = 5;
            c.ChangesetMessage = "This is a comment a newline new feature";
            this.changesetProcessor.ProcessChangeset(c);

            Assert.Equal(1, GetOutputFor("file2").BugDatabase.NumberOfChangesInFixes);
            Assert.Equal(15, GetOutputFor("file2").BugDatabase.TotalLinesChangedInFixes);
        }
        public void ProcessPersistedChangesTest()
        {
            storage = repository.StrictMock<IChangesetStorage>();
            processor = new ChangesetProcessor(storage, ReferenceExpression);

            CvsChange change01 = CreateSingleChange("file", 0, "Add B-01001");
            CvsChange change02 = CreateSingleChange("file2", 9, "Add B-01001");
            changes.Add(change01);
            changes.Add(change02);

            Expect.Call(storage.LookupChange(change01)).Return(change01);
            Expect.Call(storage.LookupChange(change02)).Return(change02);

            repository.ReplayAll();

            IList<CvsChangeSet> changeSets = processor.Group(changes);
            Assert.AreEqual(changeSets.Count, 0);

            repository.VerifyAll();
        }
        public void WhenProcessingBugDatabaseChangesetAndDailyCodeChurnContainsBugDatabaseThenAppenedExisting()
        {
            this.changesetProcessor = new ChangesetProcessor(@"gramolias+;bug+", this.loggerMock.Object);
            this.changesetProcessor.WorkItemCache.Add("SomeCommitHash", new List <WorkItem>());

            var c1 = CreateCommitWithAddedLines("file2", 10);

            c1.ChangesetFileChanges[0].Deleted = 5;
            c1.ChangesetMessage = "This is a comment a newline \n\r and a bug";
            this.changesetProcessor.ProcessChangeset(c1);

            var c2 = CreateCommitWithAddedLines("file2", 10);

            c2.ChangesetFileChanges[0].Deleted = 5;
            c2.ChangesetMessage = "This is a comment a newline \n\r and a bug";
            this.changesetProcessor.ProcessChangeset(c2);

            Assert.Equal(2, GetOutputFor("file2").BugDatabase.NumberOfChangesInFixes);
            Assert.Equal(30, GetOutputFor("file2").BugDatabase.TotalLinesChangedInFixes);
        }
        public void GroupTest()
        {
            storage = repository.Stub<IChangesetStorage>();
            processor = new ChangesetProcessor(storage, ReferenceExpression);

            CvsChange change01 = CreateSingleChange("file", 0, "MessageTest");
            CvsChange change02 = CreateSingleChange("file1", 1, "MessageTest");
            CvsChange change03 = CreateSingleChange("file1", 2, "MessageTest");

            CvsChange change1 = CreateSingleChange("file", 2, "MessageTest1");

            CvsChange change2 = CreateSingleChange("file2", 3, "MessageTest2");

            CvsChange change30 = CreateSingleChange("file31", 14, "MessageTest3");
            CvsChange change31 = CreateSingleChange("file32", 10, "MessageTest3");
            CvsChange change32 = CreateSingleChange("file33", 11, "MessageTest3");

            changes.AddRange(new CvsChange[] { change01, change02, change03, change1, change2, change30, change31, change32 });
            IList<CvsChangeSet> changeSets = processor.Group(changes);
            Assert.AreEqual(changeSets.Count, 5);
            Assert.AreEqual(changeSets[0].Changes.Count, 2);
            Assert.AreEqual(changeSets[4].Changes.Count, 3);
        }
        public void TransformTest()
        {
            storage = repository.Stub<IChangesetStorage>();
            processor = new ChangesetProcessor(storage, ReferenceExpression);

            CvsChange change01 = CreateSingleChange("file", 0, "MessageTest");
            changes.Add(change01);
            IList<CvsChangeSet> changeSets = processor.Group(changes);
            Assert.AreEqual(1, changeSets.Count);

            IList<ChangeSetInfo> setInfos = (IList<ChangeSetInfo>)processor.Transform(changeSets);
            Assert.AreEqual(1, setInfos.Count);
            Assert.AreEqual(1, setInfos[0].ChangedFiles.Count);
            Assert.AreEqual(change01.File + " REVISION: 1.1 BRANCH: BranchName", setInfos[0].ChangedFiles[0]);
        }
        public void TimeSpanTest()
        {
            storage = repository.Stub<IChangesetStorage>();
            processor = new ChangesetProcessor(storage, ReferenceExpression);

            CvsChange change01 = CreateSingleChange("file", 0, "Add B-01001");
            CvsChange change02 = CreateSingleChange("file2", 9, "Add B-01001");
            changes.Add(change01);
            changes.Add(change02);

            IList<CvsChangeSet> changeSets = processor.Group(changes);
            Assert.AreEqual(changeSets.Count, 1);
            Assert.AreEqual(changeSets[0].Changes.Count, 2);

            processor = new ChangesetProcessor(storage, ReferenceExpression);
            processor.ChangesetTimeSpanSeconds = 300;
            changeSets = processor.Group(changes);
            Assert.AreEqual(changeSets.Count, 2);
        }
 public GivenAChangesetProcessor()
 {
     this.loggerMock         = new Mock <ILogger>();
     this.changesetProcessor = new ChangesetProcessor("", this.loggerMock.Object);
 }