public void ErrorReportIsProcessedWhenItIsCreatedAsFileOnDrive()
        {
            StorageManager.InTemporaryDirectory(directory =>
            {
                //Given
                var config                 = new ErrorReportConfiguration(directory, Path.Combine(directory, "processed"));
                var container              = GetErrorReportReporter(config);
                var errorReportReporter    = container.ErrorReportReporter;
                var gitHubIssueCreatorMock = container.GitHubIssueCreatorMock;
                gitHubIssueCreatorMock.Setup(gic => gic.CreateIssue(It.IsAny <ErrorReport>()));
                var fileSystemWatcherMock = container.FileSystemWatcherMock;
                var eventArgs             = new FileSystemEventArgs(WatcherChangeTypes.Created, directory, "error-report.json");

                var errorReport = new ErrorReport();
                var json        = JsonConvert.SerializeObject(errorReport);
                var filePath    = Path.Combine(directory, "error-report.json");
                errorReportReporter.Start();

                //When
                File.WriteAllText(filePath, json);
                fileSystemWatcherMock.Raise(fsw => fsw.Created += null, eventArgs);

                //Then
                gitHubIssueCreatorMock.Verify(gic => gic.CreateIssue(It.IsAny <ErrorReport>()), Times.Once);
            });
        }
 public GetContainer(Mock <IFileSystemWatcher> fileSystemWatcherMock, Mock <IGitHubIssueCreator> gitHubIssueCreatorMock, ErrorReportReporter errorReportReporter, ErrorReportConfiguration errorReportConfiguration)
 {
     FileSystemWatcherMock    = fileSystemWatcherMock;
     GitHubIssueCreatorMock   = gitHubIssueCreatorMock;
     ErrorReportReporter      = errorReportReporter;
     ErrorReportConfiguration = errorReportConfiguration;
 }
Esempio n. 3
0
        private static void Register(IKernel kernel)
        {
            var gitHubRepoInfo = new GitHubRepoInfo("CreateMask", "Devoney", "create-mask-error-reporter", "createmask2018");

            kernel.Bind <GitHubRepoInfo>().ToConstant(gitHubRepoInfo);

            var errorReportConfiguration = new ErrorReportConfiguration("./error-reports", "./error-reports/reported");

            kernel.Bind <ErrorReportConfiguration>().ToConstant(errorReportConfiguration);

            kernel.Bind <IArgumentsParser>().To <ArgumentsParser>();
            kernel.Bind <IBitmapProcessor>().To <BitmapProcessor>();
            kernel.Bind <IDateTimeWorker>().To <DateTimeWorker>();
            kernel.Bind <ICloner>().To <Cloner>();
            kernel.Bind <IErrorReportCreator>().To <ErrorReportCreator>();
            kernel.Bind <IErrorReportReporter>().To <ErrorReportReporter>();
            kernel.Bind <IExposureTimeCalculator>().To <ExposureTimeCalculator>();
            kernel.Bind <IFileSystemWatcher>().To <FileSystemWatcher>();
            kernel.Bind <IGenericGridLoader <int> >().To <GenericGridLoader <int> >();
            kernel.Bind <IGenericLoader <Measurement> >().To <GenericLoader <Measurement> >();
            kernel.Bind <IGitHubIssueCreator>().To <GitHubIssueCreator>();
            kernel.Bind <IMaskIntensityResistanceInterpolatorFactory>().To <MaskIntensityResistanceInterpolatorFactory>();
            kernel.Bind <IMeasurementGridProcessor>().To <MeasurementGridProcessor>();
            kernel.Bind <IOutputWriter>().To <OutputWriter>();
            RegisterGithubClients(kernel);
            kernel.Bind <IReleaseManager>().To <ReleaseManager>();
        }
Esempio n. 4
0
 public ErrorReportReporter(IFileSystemWatcher fileSystemWatcher,
                            ErrorReportConfiguration errorReportConfiguration,
                            IGitHubIssueCreator gitHubIssueCreator)
 {
     _fileSystemWatcher        = fileSystemWatcher;
     _errorReportConfiguration = errorReportConfiguration;
     _gitHubIssueCreator       = gitHubIssueCreator;
 }
        private static GetContainer GetErrorReportReporter(ErrorReportConfiguration errorReportConfiguration)
        {
            var fileSystemWatcherMock  = new Mock <IFileSystemWatcher>();
            var gitHubIssueCreatorMock = new Mock <IGitHubIssueCreator>();
            var errorReportReporter    = new ErrorReportReporter(fileSystemWatcherMock.Object, errorReportConfiguration, gitHubIssueCreatorMock.Object);

            return(new GetContainer(fileSystemWatcherMock, gitHubIssueCreatorMock, errorReportReporter, errorReportConfiguration));
        }
        public void DirectoryToMoveReportedReportsToIsCreated()
        {
            StorageManager.InTemporaryDirectory(directory =>
            {
                //Given
                const string subDirName = "reported";
                var subDir = Path.Combine(directory, subDirName);
                var errorReportConfiguration = new ErrorReportConfiguration(directory, subDir);
                var container           = GetErrorReportReporter(errorReportConfiguration);
                var errorReportReporter = container.ErrorReportReporter;

                //When
                errorReportReporter.Start();

                //Then
                Directory.Exists(subDir).Should().BeTrue();
            });
        }
        public void ErrorReportReporterStartsOnceWhenStartingItTwice()
        {
            //Given
            var errorReportConfiguration = new ErrorReportConfiguration("./", "./");
            var container = GetErrorReportReporter(errorReportConfiguration);
            var fswMock   = container.FileSystemWatcherMock;
            var fileSystemWatcherStartTimesCalled = 0;

            fswMock.Setup(fsw => fsw.Start(It.IsAny <string>())).Callback(() =>
            {
                fileSystemWatcherStartTimesCalled++;
            });
            var errorReportReporter = container.ErrorReportReporter;

            //When
            errorReportReporter.Start();
            errorReportReporter.Start();

            //Then
            fileSystemWatcherStartTimesCalled.Should().Be(1);
        }
        public void ErrorReportIsNotProcessedWhenItDoesNotExistOnDiskThoughFileSystemWatcherRaisedCreatedEvent()
        {
            StorageManager.InTemporaryDirectory(directory =>
            {
                //Given
                var config                 = new ErrorReportConfiguration(directory, Path.Combine(directory, "processed"));
                var container              = GetErrorReportReporter(config);
                var errorReportReporter    = container.ErrorReportReporter;
                var gitHubIssueCreatorMock = container.GitHubIssueCreatorMock;
                gitHubIssueCreatorMock.Setup(gic => gic.CreateIssue(It.IsAny <ErrorReport>()));
                var fileSystemWatcherMock = container.FileSystemWatcherMock;
                var eventArgs             = new FileSystemEventArgs(WatcherChangeTypes.Created, directory, "error-report.json");
                errorReportReporter.Start();

                //When
                fileSystemWatcherMock.Raise(fsw => fsw.Created += null, eventArgs);

                //Then
                gitHubIssueCreatorMock.Verify(gic => gic.CreateIssue(It.IsAny <ErrorReport>()), Times.Never);
            });
        }
Esempio n. 9
0
        public Main(IGenericLoader <Measurement> measurementsLoader,
                    IMaskIntensityResistanceInterpolatorFactory maskIntensityInterpolatorFactory,
                    IGenericGridLoader <int> measurementGridLoader,
                    IMeasurementGridProcessor measurementGridProcessor,
                    IExposureTimeCalculator exposureTimeCalculator,
                    IOutputWriter outputWriter,
                    IBitmapProcessor bitmapProcessor,
                    IErrorReportCreator errorReportCreator,
                    ErrorReportConfiguration errorReportConfiguration,
                    IErrorReportReporter errorReportReporter)
        {
            _measurementsLoader = measurementsLoader;
            _maskIntensityInterpolatorFactory = maskIntensityInterpolatorFactory;
            _measurementGridLoader            = measurementGridLoader;
            _measurementGridProcessor         = measurementGridProcessor;
            _exposureTimeCalculator           = exposureTimeCalculator;
            _outputWriter             = outputWriter;
            _bitmapProcessor          = bitmapProcessor;
            _errorReportCreator       = errorReportCreator;
            _errorReportConfiguration = errorReportConfiguration;

            errorReportReporter.Start();
        }
        public void AlreadyExistingErrorReportIsMovedToProcessedFolder()
        {
            StorageManager.InTemporaryDirectory(directory =>
            {
                //Given
                var errorReport              = new ErrorReport();
                var processedFolder          = Path.Combine(directory, "processed");
                var json                     = JsonConvert.SerializeObject(errorReport);
                const string errorReportName = "error-report.json";
                var filePath                 = Path.Combine(directory, errorReportName);
                var expectedFilePath         = Path.Combine(processedFolder, errorReportName);
                File.WriteAllText(filePath, json);
                var config              = new ErrorReportConfiguration(directory, processedFolder);
                var container           = GetErrorReportReporter(config);
                var errorReportReporter = container.ErrorReportReporter;

                //When
                errorReportReporter.Start();

                //Then
                File.Exists(expectedFilePath).Should().BeTrue();
            });
        }
        public void IssueIsCreatedFromAlreadyExistingErrorReport()
        {
            StorageManager.InTemporaryDirectory(directory =>
            {
                //Given
                var errorReport              = new ErrorReport();
                var processedFolder          = Path.Combine(directory, "processed");
                var json                     = JsonConvert.SerializeObject(errorReport);
                const string errorReportName = "error-report.json";
                var filePath                 = Path.Combine(directory, errorReportName);
                File.WriteAllText(filePath, json);
                var config                 = new ErrorReportConfiguration(directory, processedFolder);
                var container              = GetErrorReportReporter(config);
                var errorReportReporter    = container.ErrorReportReporter;
                var githubIssueCreatorMock = container.GitHubIssueCreatorMock;
                githubIssueCreatorMock.Setup(gic => gic.CreateIssue(It.IsAny <ErrorReport>()));

                //When
                errorReportReporter.Start();

                //Then
                githubIssueCreatorMock.Verify(gic => gic.CreateIssue(It.IsAny <ErrorReport>()), Times.Once);
            });
        }
        public void InvalidErrorReportCausesNoException()
        {
            StorageManager.InTemporaryDirectory(directory =>
            {
                //Given
                var config                 = new ErrorReportConfiguration(directory, Path.Combine(directory, "processed"));
                var container              = GetErrorReportReporter(config);
                var errorReportReporter    = container.ErrorReportReporter;
                var gitHubIssueCreatorMock = container.GitHubIssueCreatorMock;
                gitHubIssueCreatorMock.Setup(gic => gic.CreateIssue(It.IsAny <ErrorReport>()));
                var fileSystemWatcherMock = container.FileSystemWatcherMock;
                var eventArgs             = new FileSystemEventArgs(WatcherChangeTypes.Created, directory, "error-report.json");

                var filePath = Path.Combine(directory, "error-report.json");
                errorReportReporter.Start();

                //When
                File.WriteAllText(filePath, "eijef9*()f397");
                fileSystemWatcherMock.Raise(fsw => fsw.Created += null, eventArgs);

                //Then
                gitHubIssueCreatorMock.Verify(gic => gic.CreateIssue(It.IsAny <ErrorReport>()), Times.Never);
            });
        }