public void WhenGettingCommitIdentifierShouldReturnChangesetNumber() { var changeset = new PerforceChangeset(); changeset.ChangesetNumber = 10; Assert.Equal(10, changeset.ChangesetIdentifier); }
public void WhenProcessingShouldLogProgressEvery60Seconds() { var changesLines = new List <string>(); var describeLines1 = new List <string>(); var describeLines2 = new List <string>(); var changeset1 = new PerforceChangeset(); var changeset2 = new PerforceChangeset(); this.processWrapperMock.Setup(m => m.Invoke("changes", "commandline")).Returns(new Tuple <int, List <string> >(0, changesLines)); this.processWrapperMock.Setup(m => m.Invoke("describe", "1")).Returns(new Tuple <int, List <string> >(0, describeLines1)); this.processWrapperMock.Setup(m => m.Invoke("describe", "2")).Returns(new Tuple <int, List <string> >(0, describeLines2)); this.changesParserMock.Setup(m => m.Parse(changesLines)).Returns(new List <int>() { 1, 2 }); this.describeParserMock.Setup(m => m.Parse(describeLines1)).Returns(changeset1); this.describeParserMock.Setup(m => m.Parse(describeLines2)).Returns(changeset2); this.stopWatchMock.SetupSequence(m => m.TotalSecondsElapsed()).Returns(10).Returns(70); this.processor.Extract(); this.loggerMock.Verify(m => m.LogToConsole("Processed 1/2 changesets"), Times.Once()); }
public void WhenProcessingWithMultipleFilesShouldProcessOutputForMultipleFiles() { commandLineArgs.OutputType = OutputType.MultipleFile; this.processor = new PerforceCodeChurnProcessor(processWrapperMock.Object, changesParserMock.Object, describeParserMock.Object, commandLineParserMock.Object, bugDatabseMock.Object, loggerMock.Object, stopWatchMock.Object, outputProcessorMock.Object, commandLineArgs); var changesLines = new List <string>(); var describeLines1 = new List <string>(); var describeLines2 = new List <string>(); var changeset1 = new PerforceChangeset(); var changeset2 = new PerforceChangeset(); this.processWrapperMock.Setup(m => m.Invoke("changes", "commandline")).Returns(new Tuple <int, List <string> >(0, changesLines)); this.processWrapperMock.Setup(m => m.Invoke("describe", "1")).Returns(new Tuple <int, List <string> >(0, describeLines1)); this.processWrapperMock.Setup(m => m.Invoke("describe", "2")).Returns(new Tuple <int, List <string> >(0, describeLines2)); this.changesParserMock.Setup(m => m.Parse(changesLines)).Returns(new List <int>() { 1, 2 }); this.describeParserMock.Setup(m => m.Parse(describeLines1)).Returns(changeset1); this.describeParserMock.Setup(m => m.Parse(describeLines2)).Returns(changeset2); this.processor.Extract(); this.outputProcessorMock.Verify(m => m.ProcessOutput(OutputType.MultipleFile, It.IsAny <string>(), It.IsAny <Dictionary <DateTime, Dictionary <string, DailyCodeChurn> > >()), Times.Once()); }
public void WhenProcessingShouldParseDescribes() { var changesLines = new List <string>(); var describeLines1 = new List <string>() { "describe 1" }; var describeLines2 = new List <string>() { "describe 2" }; var changeset1 = new PerforceChangeset(); var changeset2 = new PerforceChangeset(); this.processWrapperMock.Setup(m => m.Invoke("changes", "commandline")).Returns(new Tuple <int, List <string> >(0, changesLines)); this.processWrapperMock.Setup(m => m.Invoke("describe", "1")).Returns(new Tuple <int, List <string> >(0, describeLines1)); this.processWrapperMock.Setup(m => m.Invoke("describe", "2")).Returns(new Tuple <int, List <string> >(0, describeLines2)); this.changesParserMock.Setup(m => m.Parse(changesLines)).Returns(new List <int>() { 1, 2 }); this.describeParserMock.Setup(m => m.Parse(describeLines1)).Returns(changeset1); this.describeParserMock.Setup(m => m.Parse(describeLines2)).Returns(changeset2); this.processor.Extract(); this.describeParserMock.Verify(m => m.Parse(describeLines1), Times.Once()); this.describeParserMock.Verify(m => m.Parse(describeLines2), Times.Once()); }
public void WhenProcessingShouldWriteObject() { var changeset = new PerforceChangeset(); mockDescribeParser.Setup(m => m.Parse(invokeLines)).Returns(changeset); cmdLet.Changeset = 42; cmdLet.DoProcessRecord(); mockCmdLet.Verify(m => m.WriteObject(changeset), Times.Once()); }
public void WhenProcessingShouldSaveOutputWithExpectedResults() { var changesLines = new List <string>(); var describeLines1 = new List <string>() { "describe 1" }; var describeLines2 = new List <string>() { "describe 2" }; var describeLines3 = new List <string>() { "describe 3" }; var changeset1 = new PerforceChangeset() { AuthorName = "author1", ChangesetTimestamp = new DateTime(2018, 07, 05), ChangesetFileChanges = new List <FileChanges>() { new FileChanges() { FileName = "File1.cs", Added = 1, Deleted = 2, ChangedBefore = 10, ChangedAfter = 5 }, new FileChanges() { FileName = "File2.cs", Added = 1, Deleted = 2, ChangedBefore = 10, ChangedAfter = 5 } } }; var changeset2 = new PerforceChangeset() { AuthorName = "author1", ChangesetTimestamp = new DateTime(2018, 07, 05, 10, 0, 0), ChangesetFileChanges = new List <FileChanges>() { new FileChanges() { FileName = "File1.cs", Added = 1, Deleted = 2, ChangedBefore = 10, ChangedAfter = 5 } } }; var changeset3 = new PerforceChangeset() { AuthorName = "author1", ChangesetTimestamp = new DateTime(2018, 07, 06, 10, 0, 0), ChangesetFileChanges = new List <FileChanges>() { new FileChanges() { FileName = "File1.cs", Added = 1, Deleted = 2, ChangedBefore = 10, ChangedAfter = 5 } } }; this.processWrapperMock.Setup(m => m.Invoke("changes", "commandline")).Returns(new Tuple <int, List <string> >(0, changesLines)); this.processWrapperMock.Setup(m => m.Invoke("describe", "1")).Returns(new Tuple <int, List <string> >(0, describeLines1)); this.processWrapperMock.Setup(m => m.Invoke("describe", "2")).Returns(new Tuple <int, List <string> >(0, describeLines2)); this.processWrapperMock.Setup(m => m.Invoke("describe", "3")).Returns(new Tuple <int, List <string> >(0, describeLines3)); this.changesParserMock.Setup(m => m.Parse(changesLines)).Returns(new List <int>() { 1, 2, 3 }); this.describeParserMock.Setup(m => m.Parse(describeLines1)).Returns(changeset1); this.describeParserMock.Setup(m => m.Parse(describeLines2)).Returns(changeset2); this.describeParserMock.Setup(m => m.Parse(describeLines3)).Returns(changeset3); this.processor.Extract(); var result = this.output; Assert.Equal(2, result.Count); Assert.Equal(2, result[new DateTime(2018, 07, 05)].Count); Assert.Single(result[new DateTime(2018, 07, 06)]); var dailyCodeChurn = result[new DateTime(2018, 07, 05)]["File1.cs"]; Assert.Equal("2018/07/05 00:00:00", dailyCodeChurn.Timestamp); Assert.Equal("File1.cs", dailyCodeChurn.FileName); Assert.Equal(2, dailyCodeChurn.Added); Assert.Equal(4, dailyCodeChurn.Deleted); Assert.Equal(20, dailyCodeChurn.ChangesBefore); Assert.Equal(10, dailyCodeChurn.ChangesAfter); Assert.Equal(2, dailyCodeChurn.NumberOfChanges); dailyCodeChurn = result[new DateTime(2018, 07, 05)]["File2.cs"]; Assert.Equal("2018/07/05 00:00:00", dailyCodeChurn.Timestamp); Assert.Equal("File2.cs", dailyCodeChurn.FileName); Assert.Equal(1, dailyCodeChurn.Added); Assert.Equal(2, dailyCodeChurn.Deleted); Assert.Equal(10, dailyCodeChurn.ChangesBefore); Assert.Equal(5, dailyCodeChurn.ChangesAfter); Assert.Equal(1, dailyCodeChurn.NumberOfChanges); dailyCodeChurn = result[new DateTime(2018, 07, 06)]["File1.cs"]; Assert.Equal("2018/07/06 00:00:00", dailyCodeChurn.Timestamp); Assert.Equal("File1.cs", dailyCodeChurn.FileName); Assert.Equal(1, dailyCodeChurn.Added); Assert.Equal(2, dailyCodeChurn.Deleted); Assert.Equal(10, dailyCodeChurn.ChangesBefore); Assert.Equal(5, dailyCodeChurn.ChangesAfter); Assert.Equal(1, dailyCodeChurn.NumberOfChanges); }