public void AddNewChild()
        {
            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 childProxy = new Mock <IProxyDataset>();
            var proxy      = new Mock <IProxyDataset>();
            {
                proxy.Setup(p => p.IsValid)
                .Returns(true);
                proxy.Setup(p => p.CanBecomeParent)
                .Returns(true);
                proxy.Setup(p => p.StoredAt)
                .Returns(new NullPersistenceInformation());
                proxy.Setup(p => p.CreateNewChild(It.IsAny <DatasetCreationInformation>()))
                .Returns(childProxy.Object)
                .Verifiable();
            }

            var dataset = new DatasetFacade(proxy.Object);
            Func <string, IDisposable> func = s => new MockDisposable();

            var command = new AddChildDatasetCommand(projectLink.Object, dataset, func);

            Assert.IsTrue(command.CanExecute(null));

            command.Execute(null);
            proxy.Verify(p => p.CreateNewChild(It.IsAny <DatasetCreationInformation>()), Times.Once());
            history.Verify(h => h.Mark(), Times.Once());
        }
        public void GetProject_ShouldNotReturnProject()
        { //arrange
            var ProjectIdToBeQueried = 1000;

            var mockProjectRepository = new Mock <IProjectRepository>().Object;

            Mock.Get <IProjectRepository>(mockProjectRepository).Setup(r => r.Get(ProjectIdToBeQueried));

            var projectFacade     = new ProjectFacade(mockProjectRepository);
            var projectController = new ProjectController(projectFacade);

            //act
            var result = projectController.GetProject(ProjectIdToBeQueried) as OkNegotiatedContentResult <ProjectDto>;

            //assert
            Assert.AreEqual(null, null);
        }
        public void Delete_ShouldNotDeleteWhenProjectNotFound()
        {
            //arrange
            var ProjectIdToBDeleted = 4;

            var mockProjectRepository = new Mock <IProjectRepository>().Object;

            Mock.Get <IProjectRepository>(mockProjectRepository).Setup(r => r.Get(ProjectIdToBDeleted));

            var projectFacade     = new ProjectFacade(mockProjectRepository);
            var projectController = new ProjectController(projectFacade);

            //act
            var result = projectController.Delete(ProjectIdToBDeleted) as OkNegotiatedContentResult <bool>;

            //assert
            Assert.Null(result);
        }
Exemplo n.º 4
0
        public void Create()
        {
            var context         = new Mock <IContextAware>();
            var progressTracker = new Mock <ITrackSteppingProgress>();

            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 name    = "a";
            var summary = "b";
            var proxy   = new Mock <IProxyDataset>();
            {
                proxy.Setup(p => p.Name)
                .Returns(name);
                proxy.Setup(p => p.Summary)
                .Returns(summary);
                proxy.Setup(p => p.IsActivated)
                .Returns(true);
            }

            var dataset = new DatasetFacade(proxy.Object);
            var model   = new DatasetModel(context.Object, progressTracker.Object, projectLink.Object, dataset);

            Assert.AreEqual(name, model.Name);
            Assert.AreEqual(summary, model.Summary);

            Assert.IsTrue(model.IsActivated);
        }
Exemplo n.º 5
0
        public void UpdateName()
        {
            var context         = new Mock <IContextAware>();
            var progressTracker = new Mock <ITrackSteppingProgress>();
            var mockChangeSet   = new Mock <IChangeSet>();
            {
                mockChangeSet.Setup(m => m.StoreChanges())
                .Verifiable();
            }

            var history = new Mock <ITimeline>();
            {
                history.Setup(h => h.RecordHistory())
                .Returns(mockChangeSet.Object);
            }

            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.Name)
                .Verifiable();
            }

            var dataset = new DatasetFacade(proxy.Object);
            var model   = new DatasetModel(context.Object, progressTracker.Object, projectLink.Object, dataset);

            var name = "a";

            model.Name = name;
            proxy.VerifySet(p => p.Name = It.Is <string>(s => s.Equals(name)), Times.Once());
            mockChangeSet.Verify(h => h.StoreChanges(), Times.Once());
        }
Exemplo n.º 6
0
        public void CanSaveProjectWithoutChanges()
        {
            var project = new Mock <IProject>();

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

            Func <string, IDisposable> timerFunc = s => new MockDisposable();

            var command = new SaveProjectCommand(projectLink.Object, timerFunc);

            Assert.IsFalse(command.CanExecute(null));
        }
Exemplo n.º 7
0
        public void Undo()
        {
            var currentMark = new TimeMarker(10);
            var markers     = new List <TimeMarker>
            {
                currentMark,
                new TimeMarker(1),
            };
            var history = new Mock <ITimeline>();
            {
                history.Setup(h => h.CanRollBack)
                .Returns(true);
                history.Setup(h => h.MarkersInThePast())
                .Returns(markers);
                history.Setup(h => h.Current)
                .Returns(currentMark);
                history.Setup(h => h.RollBackTo(It.IsAny <TimeMarker>(), It.IsAny <TimelineTraveller>()))
                .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);
                projectLink.Setup(p => p.HasActiveProject())
                .Returns(true);
            }

            Func <string, IDisposable> timerFunc = s => new MockDisposable();

            var command = new UndoCommand(projectLink.Object, timerFunc);

            command.Execute(null);

            history.Verify(h => h.RollBackTo(It.IsAny <TimeMarker>(), It.IsAny <TimelineTraveller>()), Times.Once());
        }
Exemplo n.º 8
0
        public void DeleteDataset()
        {
            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.IsValid)
                .Returns(true);
                proxy.Setup(p => p.CanBeDeleted)
                .Returns(true);
                proxy.Setup(p => p.Delete())
                .Verifiable();
            }

            var dataset = new DatasetFacade(proxy.Object);
            Func <string, IDisposable> func = s => new MockDisposable();

            var command = new DeleteDatasetCommand(projectLink.Object, dataset, func);

            Assert.IsTrue(command.CanExecute(null));

            command.Execute(null);
            proxy.Verify(p => p.Delete(), Times.Once());
            history.Verify(h => h.Mark(), Times.Once());
        }
Exemplo n.º 9
0
        public void Summary()
        {
            var context = new Mock <IContextAware>();
            {
                context.Setup(c => c.IsSynchronized)
                .Returns(true);
            }

            var mockChangeSet = new Mock <IChangeSet>();
            {
                mockChangeSet.Setup(m => m.StoreChanges())
                .Verifiable();
            }

            var history = new Mock <ITimeline>();
            {
                history.Setup(h => h.RecordHistory())
                .Returns(mockChangeSet.Object);
            }

            var project = new Mock <IProject>();
            {
                project.SetupProperty(p => p.Summary, "a")
                .Verify();
                project.Setup(p => p.History)
                .Returns(history.Object);
            }

            var facade = new ProjectFacade(project.Object);

            var model = new ProjectDescriptionModel(context.Object, facade);

            var text = "b";

            model.Summary = text;

            project.VerifySet(p => p.Summary = text, Times.Once());
            mockChangeSet.Verify(h => h.StoreChanges(), Times.Once());
        }
Exemplo n.º 10
0
        public void CanUndoWithMarkers()
        {
            var currentMark = new TimeMarker(10);
            var markers     = new List <TimeMarker>
            {
                currentMark,
                new TimeMarker(1),
            };
            var history = new Mock <ITimeline>();
            {
                history.Setup(h => h.CanRollBack)
                .Returns(true);
                history.Setup(h => h.MarkersInThePast())
                .Returns(markers);
                history.Setup(h => h.Current)
                .Returns(currentMark);
            }

            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);
                projectLink.Setup(p => p.HasActiveProject())
                .Returns(true);
            }

            Func <string, IDisposable> timerFunc = s => new MockDisposable();

            var command = new UndoCommand(projectLink.Object, timerFunc);

            Assert.IsTrue(command.CanExecute(null));
        }
        public void GetProject_ShouldReturnCorrectProject()
        {
            //arrange
            var ProjectIdToBeQueried = 1;
            var testProjects         = GetTestProjects();

            var mockProjectRepository = new Mock <IProjectRepository>().Object;

            Mock.Get <IProjectRepository>(mockProjectRepository).Setup(r => r.Get(ProjectIdToBeQueried)).Returns(testProjects.First(u => u.Id == ProjectIdToBeQueried));

            var projectFacade     = new ProjectFacade(mockProjectRepository);
            var projectController = new ProjectController(projectFacade);
            var expectetProject   = testProjects.First(u => u.Id == ProjectIdToBeQueried);

            //act
            var result = projectController.GetProject(ProjectIdToBeQueried) as OkNegotiatedContentResult <ProjectDto>;

            //assert
            Assert.AreEqual(expectetProject.Name, result.Content.Name);
            Assert.AreEqual(expectetProject.Priority, result.Content.Priority);
            Assert.AreEqual(expectetProject.ManagerId, result.Content.ManagerId);
        }
        public void Delete_ShouldDeleteCorrectProject()
        {
            //arrange
            var testProjects        = GetTestProjects();
            var ProjectIdToBDeleted = 4;

            var Project = testProjects.First(u => u.Id == ProjectIdToBDeleted);

            var mockProjectRepository = new Mock <IProjectRepository>().Object;

            Mock.Get <IProjectRepository>(mockProjectRepository).Setup(r => r.Get(ProjectIdToBDeleted)).Returns(Project);
            Mock.Get <IProjectRepository>(mockProjectRepository).Setup(r => r.Remove(Project));

            var projectFacade     = new ProjectFacade(mockProjectRepository);
            var projectController = new ProjectController(projectFacade);

            //act
            var result = projectController.Delete(ProjectIdToBDeleted) as OkNegotiatedContentResult <bool>;

            //assert
            Assert.True(result.Content);
        }
        public void QueryProjects_ShouldReturnAllProjects()
        {
            //arrange
            var testProjects = GetTestProjects();
            var queryResult  = new FilterResult <Project>()
            {
                Data = testProjects, Total = testProjects.Count()
            };
            var mockProjectRepository = new Mock <IProjectRepository>().Object;

            Mock.Get <IProjectRepository>(mockProjectRepository).Setup(r => r.Query(It.IsAny <FilterState>())).Returns(queryResult);

            var projectFacade     = new ProjectFacade(mockProjectRepository);
            var projectController = new ProjectController(projectFacade);
            var filterState       = new FilterState();

            //act : no filters
            var x      = projectController.Query(filterState);
            var result = x as OkNegotiatedContentResult <FilterResult <ProjectDto> >;

            //assert
            Assert.AreEqual(testProjects.Count(), result.Content.Total);
        }
        public void QueryProjects_ShouldReturnTaskWithPriorityGreaterThanAndEqualToZero()
        {
            //arrange
            var testProjects = GetTestProjects().Where(p => p.Priority >= 0);
            var queryResult  = new FilterResult <Project>()
            {
                Data = testProjects, Total = testProjects.Count()
            };
            var mockProjectRepository = new Mock <IProjectRepository>().Object;

            Mock.Get <IProjectRepository>(mockProjectRepository).Setup(r => r.Query(It.IsAny <FilterState>())).Returns(queryResult);

            var projectFacade     = new ProjectFacade(mockProjectRepository);
            var projectController = new ProjectController(projectFacade);
            var thisAssembly      = Assembly.GetExecutingAssembly();
            var jsonFilePath      = Path.Combine(Directory.GetParent(thisAssembly.Location).FullName, @"TestData\FilerStat.Json");
            var fileStatString    = File.ReadAllText(jsonFilePath);
            var filterState       = fileStatString.ToObject <FilterState>();

            var result = projectController.Query(filterState) as OkNegotiatedContentResult <FilterResult <ProjectDto> >;

            //assert
            Assert.True(result.Content.Data.All(t => t.Priority >= 0));
        }
        public void Initialize()
        {
            var context = new Mock <IContextAware>();

            var view = new Mock <IProjectDescriptionView>();
            {
                view.SetupSet(v => v.Model = It.IsAny <ProjectDescriptionModel>())
                .Verifiable();
            }

            var parameter = new ProjectDescriptionParameter(context.Object);

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

            var container = new Mock <IDependencyInjectionProxy>();
            {
                container.Setup(c => c.Resolve <IContextAware>())
                .Returns(context.Object);
                container.Setup(c => c.Resolve <ILinkToProjects>())
                .Returns(projectLink.Object);
            }

            var presenter = new ProjectDescriptionPresenter(container.Object);

            ((IPresenter)presenter).Initialize(view.Object, parameter);

            Assert.AreSame(view.Object, presenter.View);
            Assert.AreSame(parameter, presenter.Parameter);
            view.VerifySet(v => v.Model = It.IsAny <ProjectDescriptionModel>(), Times.Once());
        }
Exemplo n.º 16
0
        public void LoadProject()
        {
            var history = new Mock <ITimeline>();
            {
                history.Setup(h => h.Mark(It.IsAny <string>()))
                .Verifiable();
            }

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

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

            Func <string, IDisposable> timerFunc = s => new MockDisposable();

            var command = new SaveProjectCommand(projectLink.Object, timerFunc);

            var persistence = new Mock <IPersistenceInformation>();

            command.Execute(persistence.Object);

            project.Verify(p => p.Save(It.IsAny <IPersistenceInformation>()), Times.Once());
            history.Verify(h => h.Mark(It.IsAny <string>()), Times.Once());
        }
Exemplo n.º 17
0
        public void ReloadProject()
        {
            // Create a 'binary' tree of datasets. This should create the following tree:
            //                            X
            //                          /   \
            //                         /     \
            //                        /       \
            //                       /         \
            //                      /           \
            //                     X             X
            //                   /   \         /   \
            //                  /     \       /     \
            //                 /       \     /       \
            //                X         X   X         X
            //              /   \     /   \
            //             X     X   X     X
            var nodes        = new List <Mock <IProxyDataset> >();
            var datasets     = new Queue <Tuple <Mock <IProxyDataset>, List <Mock <IProxyDataset> > > >();
            var rootChildren = new List <Mock <IProxyDataset> >();
            var root         = CreateDataset(0, rootChildren);

            datasets.Enqueue(new Tuple <Mock <IProxyDataset>, List <Mock <IProxyDataset> > >(root, rootChildren));
            nodes.Add(root);

            int count = 0;

            while (count < 10)
            {
                var tuple = datasets.Dequeue();

                count++;
                var leftChildCollection = new List <Mock <IProxyDataset> >();
                var leftChild           = CreateDataset(count, leftChildCollection);

                tuple.Item2.Add(leftChild);
                datasets.Enqueue(new Tuple <Mock <IProxyDataset>, List <Mock <IProxyDataset> > >(leftChild, leftChildCollection));
                nodes.Add(leftChild);

                count++;
                var rightChildCollection = new List <Mock <IProxyDataset> >();
                var rightChild           = CreateDataset(count, rightChildCollection);

                tuple.Item2.Add(rightChild);
                datasets.Enqueue(new Tuple <Mock <IProxyDataset>, List <Mock <IProxyDataset> > >(rightChild, rightChildCollection));
                nodes.Add(rightChild);
            }

            var context = new Mock <IContextAware>();
            {
                context.Setup(c => c.IsSynchronized)
                .Returns(true);
            }

            var tracker = new Mock <ITrackSteppingProgress>();
            var project = new Mock <IProject>();
            {
                project.Setup(p => p.BaseDataset())
                .Returns(root.Object);
            }

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

            Func <DatasetFacade, DatasetModel> toModel = d => new DatasetModel(context.Object, tracker.Object, projectLink.Object, d);
            var model = new DatasetGraphModel(context.Object, projectFacade, toModel);

            var graph = model.Graph;

            Assert.AreEqual(nodes.Count, graph.VertexCount);

            var rootVertex = graph.Vertices.FirstOrDefault(d => string.Equals(d.Model.Name, 0.ToString(CultureInfo.InvariantCulture)));

            Assert.IsNotNull(rootVertex);

            var vertices           = new Queue <DatasetViewVertex>();
            var linearisedVertices = new List <DatasetViewVertex>();

            vertices.Enqueue(rootVertex);
            linearisedVertices.Add(rootVertex);

            while (vertices.Count > 0)
            {
                var vertex   = vertices.Dequeue();
                var outEdges = graph.OutEdges(vertex);

                foreach (var edge in outEdges)
                {
                    vertices.Enqueue(edge.Target);
                    linearisedVertices.Add(edge.Target);
                }
            }

            Assert.That(
                linearisedVertices.Select(l => l.Model.Name),
                Is.EquivalentTo(nodes.Select(n => n.Object.Name)));
        }
 public ProjectController(ProjectFacade projectFacade)
 {
     this.projectFacade = projectFacade;
 }
Exemplo n.º 19
0
 public ReportController(ProjectFacade projectFacade, TaskFacade taskFacade)
 {
     this.projectFacade = projectFacade;
     this.taskFacade    = taskFacade;
 }
Exemplo n.º 20
0
        public void AddDataset()
        {
            // Create a 'binary' tree of datasets. This should create the following tree:
            //                            X
            //                          /   \
            //                         /     \
            //                        /       \
            //                       /         \
            //                      /           \
            //                     X             X
            var nodes = new List <Tuple <Mock <IProxyDataset>, List <Mock <IProxyDataset> > > >();

            for (int i = 0; i < 3; i++)
            {
                var childCollection = new List <Mock <IProxyDataset> >();
                var child           = CreateDataset(i, childCollection);

                nodes.Add(new Tuple <Mock <IProxyDataset>, List <Mock <IProxyDataset> > >(child, childCollection));
            }

            var context = new Mock <IContextAware>();
            {
                context.Setup(c => c.IsSynchronized)
                .Returns(true);
            }

            var tracker = new Mock <ITrackSteppingProgress>();
            var project = new Mock <IProject>();
            {
                project.Setup(p => p.BaseDataset())
                .Returns(nodes[0].Item1.Object);
            }

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

            Func <DatasetFacade, DatasetModel> toModel = d => new DatasetModel(context.Object, tracker.Object, projectLink.Object, d);
            var model = new DatasetGraphModel(context.Object, projectFacade, toModel);

            var graph      = model.Graph;
            var rootVertex = graph.Vertices.FirstOrDefault(d => string.Equals(d.Model.Name, 0.ToString(CultureInfo.InvariantCulture)));

            var parent = nodes[0];

            // First node
            parent.Item2.Add(nodes[1].Item1);
            project.Raise(p => p.OnDatasetCreated += null, EventArgs.Empty);

            var vertex = graph.Vertices.FirstOrDefault(d => string.Equals(d.Model.Name, 1.ToString(CultureInfo.InvariantCulture)));

            Assert.IsNotNull(vertex);

            var edges = graph.InEdges(vertex);

            Assert.AreEqual(1, edges.Count());
            Assert.AreSame(rootVertex, edges.First().Source);

            // Second node
            parent.Item2.Add(nodes[2].Item1);
            project.Raise(p => p.OnDatasetCreated += null, EventArgs.Empty);

            vertex = graph.Vertices.FirstOrDefault(d => string.Equals(d.Model.Name, 2.ToString(CultureInfo.InvariantCulture)));
            Assert.IsNotNull(vertex);

            edges = graph.InEdges(vertex);
            Assert.AreEqual(1, edges.Count());
            Assert.AreSame(rootVertex, edges.First().Source);
        }