public void Run_ActionDownloadsTwoPackages_DownloadingMessageLoggedOnceForEachDownloadOperationByProgressMonitor()
        {
            CreateRunner();
            AddInstallActionWithCustomExecuteAction(() => {
                var repository = new FakePackageRepository();
                repositoryFactoryEvents.RaiseRepositoryCreatedEvent(new PackageRepositoryFactoryEventArgs(repository));

                var progress = new ProgressEventArgs("Download1", 100);
                repository.RaiseProgressAvailableEvent(progress);

                progress = new ProgressEventArgs("Download2", 50);
                repository.RaiseProgressAvailableEvent(progress);

                progress = new ProgressEventArgs("Download2", 100);
                repository.RaiseProgressAvailableEvent(progress);
            });

            Run();

            progressMonitor.AssertMessageIsLogged("Download1");
            progressMonitor.AssertMessageIsLogged("Download2");
            progressMonitor.AssertMessageIsNotLogged("Download2" + Environment.NewLine + "Download2");
        }
        void FireRepositoryCreatedEvent(IPackageRepository repository)
        {
            var eventArgs = new PackageRepositoryFactoryEventArgs(repository);

            repositoryFactoryEvents.RaiseRepositoryCreatedEvent(eventArgs);
        }