public void Disposing_Tasks_On_Project_Changed() { // creates a Task list IEventAggregator aggregator = new ScrumFactory.Composition.EventAggregator(); ViewModel.TasksListViewModel list = new ViewModel.TasksListViewModel( null, null, null, aggregator, null, null); // create a task and adds to the task list view model List<ViewModel.TaskViewModel> tasks = new List<ViewModel.TaskViewModel>(); Mock<ViewModel.TaskViewModel> taskVM = new Mock<ViewModel.TaskViewModel>( null, null, aggregator, null, null, new Task(), null); tasks.Add(taskVM.Object); list.Tasks = tasks; // emulates a project change Project project = new Project(); aggregator.Publish<Project>(ScrumFactoryEvent.ViewProjectDetails, project); taskVM.Verify(i => i.Dispose(), "Dispose was not called"); }
public void Disposing_Tasks_On_Load() { // creates a fake taskservice Mock<Services.ITasksService> tasksService = new Mock<Services.ITasksService>(); tasksService.Setup(t => t.GetProjectTasks(It.IsAny<string>(), It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<bool>(), It.IsAny<string>())) .Returns(new List<Task>()); // creates a immediate bg executor Mock<IBackgroundExecutor> executor = BackgroundExecutorMock.SetupExecutorForCollectionOf<Task>(null); // creates a Task list IEventAggregator aggregator = new ScrumFactory.Composition.EventAggregator(); ViewModel.TasksListViewModel list = new ViewModel.TasksListViewModel( tasksService.Object, null, executor.Object, aggregator, null, null); // assign a project to the list (no tasks yet, so no dispose by now) aggregator.Publish<Project>(ScrumFactoryEvent.ViewProjectDetails, new Project()); // create a task and adds to the task list view model List<ViewModel.TaskViewModel> tasks = new List<ViewModel.TaskViewModel>(); Mock<ViewModel.TaskViewModel> taskVM = new Mock<ViewModel.TaskViewModel>( null, null, aggregator, new Mock<IDialogService>().Object, null, new Task(), null); tasks.Add(taskVM.Object); list.Tasks = tasks; // emulates two load command list.OnLoadCommand.Execute(null); taskVM.Verify(i => i.Dispose(), "Dispose was not called"); }