public void WhenProcessingSeparateFilesOutputShouldWriteJsonFile() { this.jsonOutputProcessor = new JsonOutputProcessor(new DataConverter(), streamFactoryMock.Object, loggerMock.Object); var dict = new Dictionary <DateTime, Dictionary <string, WorkItem> >(); dict.Add(new DateTime(2018, 08, 30), new Dictionary <string, WorkItem>()); dict[new DateTime(2018, 08, 30)].Add("Some Change Set Id", new WorkItem() { ChangesetId = "Some Change Set Id", ClosedDate = new DateTime(2018, 08, 30), WorkItemId = "Some Work Item Id" }); var output = new MemoryStream(); this.streamFactoryMock.Setup(m => m.createFileStream("filename_2018-08-30_Some Work Item Id_Some Change Set Id.json", FileMode.Create, FileAccess.Write)).Returns(output); this.jsonOutputProcessor.ProcessOutput(OutputType.SeparateFiles, "filename", dict); var resultString = Encoding.UTF8.GetString(output.ToArray()); Assert.NotEmpty(resultString); Assert.Equal( "{\"SchemaVersion\":" + JsonOutputData <DailyCodeChurn> .CurrentVersion + "," + "\"Data\":[{" + "\"ClosedDate\":\"2018/08/30 00:00:00\"," + "\"WorkItemId\":\"Some Work Item Id\"," + "\"ChangesetId\":\"Some Change Set Id\"" + "}]}", resultString); }
public void WhenConvertToOrderedListAsSeparateFilesShouldReturnExpectedOutput() { this.jsonOutputProcessor = new JsonOutputProcessor(new DataConverter(), streamFactoryMock.Object, loggerMock.Object); var dict = new Dictionary <DateTime, Dictionary <string, WorkItem> >(); dict.Add(new DateTime(2018, 08, 30), new Dictionary <string, WorkItem>()); dict[new DateTime(2018, 08, 30)].Add("Some Change Set Id 1", new WorkItem() { ChangesetId = "Some Change Set Id 1", ClosedDate = new DateTime(2018, 08, 30), WorkItemId = "Some Work Item Id 1" }); dict.Add(new DateTime(2018, 08, 31), new Dictionary <string, WorkItem>()); dict[new DateTime(2018, 08, 31)].Add("Some Change Set Id 2", new WorkItem() { ChangesetId = "Some Change Set Id 2", ClosedDate = new DateTime(2018, 08, 31), WorkItemId = "Some Work Item Id 2" }); var output1 = new MemoryStream(); var output2 = new MemoryStream(); this.streamFactoryMock.Setup(m => m.createFileStream("filename_2018-08-30_Some Work Item Id 1_Some Change Set Id 1.json", FileMode.Create, FileAccess.Write)).Returns(output1); this.streamFactoryMock.Setup(m => m.createFileStream("filename_2018-08-31_Some Work Item Id 2_Some Change Set Id 2.json", FileMode.Create, FileAccess.Write)).Returns(output2); this.jsonOutputProcessor.ProcessOutputSeparateFiles("filename", dict); var resultString1 = Encoding.UTF8.GetString(output1.ToArray()); var resultString2 = Encoding.UTF8.GetString(output2.ToArray()); Assert.NotEmpty(resultString1); Assert.NotEmpty(resultString2); }
private static int RunDownloadCodeChurnFromCosmosDbToJsonFiles(DownloadFromCosmosDbCommandLineArgs a) { var logger = new ConsoleLoggerWithTimestamp(); var cosmosConnection = new CosmosConnection(new DatabaseFactory(a, JsonSerializerSettingsFactory.CreateDefaultSerializerSettingsForCosmosDB()), a.DatabaseId, Properties.Settings.Default.CosmosBulkBatchSize); var dataDocumentRepository = new DataDocumentRepository(cosmosConnection, a.CodeChurnCosmosContainer); var cosmosOutputProcessor = new CosmosDbOutputProcessor(logger, dataDocumentRepository, new DataConverter(), a.CosmosProjectName, Properties.Settings.Default.CosmosBulkBatchSize); var jsonOutputProcessor = new JsonOutputProcessor(new DataConverter(), new FileStreamFactory(), logger); var environment = new EnvironmentImpl(); var endDate = a.EndDate ?? (a.EndDate = environment.GetCurrentDateTime()); switch (a.DocumentType) { case DocumentType.BugDatabase: { var data = cosmosOutputProcessor.GetDocumentsInDateRange <WorkItem>(a.StartDate.Value, endDate.Value); jsonOutputProcessor.ProcessOutput(a.OutputType, a.OutputFile, data); break; } case DocumentType.CodeChurn: { var data = cosmosOutputProcessor.GetDocumentsInDateRange <DailyCodeChurn>(a.StartDate.Value, endDate.Value); jsonOutputProcessor.ProcessOutput(a.OutputType, a.OutputFile, data); break; } default: throw new ArgumentOutOfRangeException(); } return(0); }
public GivenAJsonOutputProcessor() { this.outputStream = new MemoryStream(); this.streamFactoryMock = new Mock <IStreamFactory>(); this.streamFactoryMock.Setup(m => m.createFileStream("filename", FileMode.Create, FileAccess.Write)).Returns(outputStream); this.loggerMock = new Mock <ILogger>(); this.jsonOutputProcessor = new JsonOutputProcessor(new DataConverter(), streamFactoryMock.Object, loggerMock.Object); }
private static int RunGitCodeChurnProcessor(GitExtractCommandLineArgs a) { var processWrapper = new ProcessWrapper(); var commandLineParser = new CommandLineParser(); var gitLogParser = new GitLogParser(); var logger = new ConsoleLoggerWithTimestamp(); var outputProcessor = new JsonOutputProcessor(new DataConverter(), new FileStreamFactory(), logger); var bugDatabaseFactory = new BugDatabaseFactory(); var bugDatabaseDllLoader = new BugDatabaseDllLoader(logger, bugDatabaseFactory); var webRequest = new WebRequest(new HttpClientWrapperFactory(bugDatabaseFactory)); var fileSystem = new FileSystem(); var jsonParser = new JsonListParser <WorkItem>(new FileStreamFactory()); var bugDatabaseProcessor = new BugDatabaseProcessor(bugDatabaseDllLoader, webRequest, fileSystem, jsonParser, logger, a.BugDatabaseOutputFile); var processor = new GitCodeChurnProcessor(commandLineParser, processWrapper, gitLogParser, outputProcessor, bugDatabaseProcessor, logger, a); processor.QueryBugDatabase(); return(processor.Extract()); }
private static int RunPerforceCodeChurnProcessor(P4ExtractCommandLineArgs a) { var processWrapper = new ProcessWrapper(); var changesParser = new ChangesParser(); var describeParser = new DescribeParser(); var commandLineParser = new CommandLineParser(); var logger = new ConsoleLoggerWithTimestamp(); var stopWatch = new StopWatchWrapper(); var outputProcessor = new JsonOutputProcessor(new DataConverter(), new FileStreamFactory(), logger); var bugDatabaseFactory = new BugDatabaseFactory(); var bugDatabaseDllLoader = new BugDatabaseDllLoader(logger, bugDatabaseFactory); var webRequest = new WebRequest(new HttpClientWrapperFactory(bugDatabaseFactory)); var fileSystem = new FileSystem(); var jsonParser = new JsonListParser <WorkItem>(new FileStreamFactory()); var bugDatabaseProcessor = new BugDatabaseProcessor(bugDatabaseDllLoader, webRequest, fileSystem, jsonParser, logger, a.BugDatabaseOutputFile); var processor = new PerforceCodeChurnProcessor(processWrapper, changesParser, describeParser, commandLineParser, bugDatabaseProcessor, logger, stopWatch, outputProcessor, a); processor.QueryBugDatabase(); return(processor.Extract()); }
public void WhenProcessingOutputTypeCosmosDbShouldDoNothing() { this.jsonOutputProcessor = new JsonOutputProcessor(new DataConverter(), streamFactoryMock.Object, loggerMock.Object); var dict = new Dictionary <DateTime, Dictionary <string, WorkItem> >(); dict.Add(new DateTime(2018, 08, 30), new Dictionary <string, WorkItem>()); dict[new DateTime(2018, 08, 30)].Add("Some Change Set Id", new WorkItem() { ChangesetId = "Some Change Set Id", ClosedDate = new DateTime(2018, 08, 30), WorkItemId = "Some Work Item Id" }); var output = new MemoryStream(); this.streamFactoryMock.Setup(m => m.createFileStream("filename_2018-08-30_Some Work Item Id_Some Change Set Id.json", FileMode.Create, FileAccess.Write)).Returns(output); this.jsonOutputProcessor.ProcessOutput(OutputType.CosmosDb, "filename", dict); var resultString = Encoding.UTF8.GetString(output.ToArray()); Assert.Empty(resultString); }