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 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));
        }
        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));
        }