public void ActivateDataset()
        {
            var history = new Mock<ITimeline>();
            {
                history.Setup(h => h.Mark())
                    .Verifiable();
            }

            var project = new Mock<IProject>();
            {
                project.Setup(p => p.History)
                    .Returns(history.Object);
            }

            var projectFacade = new ProjectFacade(project.Object);
            var projectLink = new Mock<ILinkToProjects>();
            {
                projectLink.Setup(p => p.ActiveProject())
                    .Returns(projectFacade);
            }

            var proxy = new Mock<IProxyDataset>();
            {
                proxy.Setup(p => p.IsActivated)
                    .Returns(false);
                proxy.Setup(p => p.CanActivate)
                    .Returns(true);
                proxy.Setup(
                    p => p.Activate(
                        It.IsAny<DistributionLocations>(),
                        It.IsAny<Func<IEnumerable<DistributionSuggestion>, SelectedProposal>>(),
                        It.IsAny<CancellationToken>()))
                    .Returns<DistributionLocations, Func<IEnumerable<DistributionSuggestion>, SelectedProposal>, CancellationToken>(
                        (d, f, c) => Task.Factory.StartNew(
                            () =>
                            {
                            },
                            c,
                            TaskCreationOptions.None,
                            new CurrentThreadTaskScheduler()))
                    .Verifiable();
            }

            var dataset = new DatasetFacade(proxy.Object);

            Func<IEnumerable<DistributionSuggestion>, SelectedProposal> selectionFunc = suggestions => null;
            Func<string, IDisposable> timerFunc = s => new MockDisposable();

            var command = new ActivateDatasetCommand(projectLink.Object, dataset, selectionFunc, timerFunc);
            command.Execute(null);

            proxy.Verify(
                p => p.Activate(
                    It.IsAny<DistributionLocations>(),
                    It.IsAny<Func<IEnumerable<DistributionSuggestion>, SelectedProposal>>(),
                    It.IsAny<CancellationToken>()),
                Times.Once());
            history.Verify(h => h.Mark(), Times.Once());
        }
        public void CanActivateWithActivatedDataset()
        {
            var project = new Mock<ILinkToProjects>();

            var proxy = new Mock<IProxyDataset>();
            {
                proxy.Setup(p => p.IsActivated)
                    .Returns(true);
            }

            var dataset = new DatasetFacade(proxy.Object);

            Func<IEnumerable<DistributionSuggestion>, SelectedProposal> selectionFunc = suggestions => null;
            Func<string, IDisposable> timerFunc = s => new MockDisposable();

            var command = new ActivateDatasetCommand(project.Object, dataset, selectionFunc, timerFunc);
            Assert.IsFalse(command.CanExecute(null));
        }
        public void CanActivateWithNullDataset()
        {
            var project = new Mock<ILinkToProjects>();

            Func<IEnumerable<DistributionSuggestion>, SelectedProposal> selectionFunc = suggestions => null;
            Func<string, IDisposable> timerFunc = s => new MockDisposable();

            var command = new ActivateDatasetCommand(project.Object, null, selectionFunc, timerFunc);
            Assert.IsFalse(command.CanExecute(null));
        }