public void FlyoutStaysOpenIfWanted() { // Arrange var currentProject = new ProjectViewModel( new Project { Id = 123 } ); var messenger = new Messenger(); var todoRepoMock = new Mock<ITodoRepository>(); bool messageReceived = false; messenger.Register<FlyoutMessage>( this, msg => { if( msg.FlyoutName == FlyoutMessage.AddEntryFlyoutName ) messageReceived = true; } ); var vm = new AddEntryViewModel( Enumerable.Empty<TagViewModel>(), currentProject, todoRepoMock.Object, messenger ) { Summary = "summary" }; // Act vm.StayOpen = true; vm.AddCommand.Execute( null ); bool stay = messageReceived; vm.Summary = "summary"; vm.StayOpen = false; vm.AddCommand.Execute( null ); bool dontStay = messageReceived; // Assert Assert.IsFalse( stay ); Assert.IsTrue( dontStay ); }
public void AddUsesCorrectValues() { // Arrange var tags = new[] { new TagViewModel( new Tag {Id = 1, Name = "Tag1"} ), new TagViewModel( new Tag {Id = 2, Name = "Tag2"} ) }; var currentProject = new ProjectViewModel( new Project { Id = 123 } ); var messenger = new Messenger(); bool addMessageReceived = false; messenger.Register<EntryAddedMessage>( this, msg => addMessageReceived = true ); var todoRepoMock = new Mock<ITodoRepository>(); todoRepoMock.Setup( x => x.Add( It.Is<Todo>( t => t.Summary.Equals( "summary" ) && t.Details.Equals( "details" ) && t.Project.Id == 123 ) ) ).Verifiable(); todoRepoMock.Setup( x => x.Update( It.Is<Todo>( t => t.Tags.First().Id == 2 ) ) ).Verifiable(); var vm = new AddEntryViewModel( tags, currentProject, todoRepoMock.Object, messenger ) { Summary = "summary", Details = "details" }; // Act vm.Tags[1].IsSelected = true; vm.AddCommand.Execute( null ); // Assert todoRepoMock.VerifyAll(); Assert.IsTrue( addMessageReceived ); }
public EntrySearcher( IProjectListViewModel projectList, IMessenger messenger = null ) : base(null, null, messenger) { ProjectList = projectList; _CurrentProject = ProjectList.CurrentProject; Matches = new ObservableCollection<TodoViewModel>( AllEntries ); MessengerInstance.Register<CurrentProjectChangedMessage>( this, OnCurrentProjectChanged ); MessengerInstance.Register<EntryAddedMessage>( this, OnEntryAdded ); }
public AddEntryViewModel( IEnumerable<TagViewModel> tagList, ProjectViewModel currentProject, ITodoRepository todoRepo = null, IMessenger messenger = null ) : base(null, null, messenger) { CurrentProject = currentProject; TodoRepo = todoRepo ?? new TodoRepository( App.Session ); Tags = tagList.Select( t => new TagEntry( t ) ).ToList(); Validate( nameof( Summary ) ).Check( () => !string.IsNullOrWhiteSpace( Summary ) ).Message( Strings.EntryNeedsSummary ); Reset(); }
private void ExecuteNewProjectCommand() { var project = new Project { Name = NewProjectName }; ProjectRepo.Add(project); var projectVm = new ProjectViewModel(project); projectVm.CurrentChanged += Proj_CurrentChanged; Projects.Add(projectVm); if (CurrentProject != null) { CurrentProject.IsCurrent = false; } CurrentProject = projectVm; CurrentProject.IsCurrent = true; Reset(); }
public CurrentProjectChangedMessage( ProjectViewModel project ) { CurrentProject = project; }
private async void ExecuteDeleteProjectCommand( ProjectViewModel arg ) { ConfirmationServiceArgs args = new ConfirmationServiceArgs( Strings.Confirm, string.Format( Strings.DoYouReallyWantToDeleteProjectXXX, arg.Model.Name ), Strings.Yes, Strings.No ); if( !await ViewServices.Execute<IConfirmationService, bool>( args ) ) { return; } arg.CurrentChanged -= Proj_CurrentChanged; Projects.Remove( arg ); ProjectRepo.Delete( arg.Model ); if( !Projects.Contains( CurrentProject ) ) { CurrentProject = Projects.FirstOrDefault(); if( CurrentProject != null ) { CurrentProject.IsCurrent = true; } } MessengerInstance.Send( new NotificationMessage( Strings.ProjectDeleted ) ); }
private bool CanExecuteDeleteProjectCommand( ProjectViewModel arg ) { return arg != null; }
private void ExecuteNewProjectCommand() { var project = new Project { Name = NewProjectName }; ProjectRepo.Add( project ); var projectVm = new ProjectViewModel( project ); projectVm.CurrentChanged += Proj_CurrentChanged; Projects.Add( projectVm ); if( CurrentProject != null ) { CurrentProject.IsCurrent = false; } CurrentProject = projectVm; CurrentProject.IsCurrent = true; Reset(); }
private bool CanExecuteDeleteProjectCommand(ProjectViewModel arg) { return(arg != null); }
public void _BeforeTest() { Tags = new[] { new Tag {Name = "Tag1"}, new Tag {Name = "Tag2"}, new Tag {Name = "Tag3"} }; Todos = new[] { new Todo {Summary = "Test"}, new Todo {Summary = "abc", Details = "details"}, new Todo {Summary = "123", Done = true} }; Todos[0].Tags.Add( Tags[1] ); Todos[1].Tags.Add( Tags[1] ); Todos[1].Tags.Add( Tags[2] ); Project = new Project(); foreach( var t in Tags ) { Project.Tags.Add( t ); } foreach( var t in Todos ) { Project.Todos.Add( t ); } ProjectVm = new ProjectViewModel( Project ); var mock = new Mock<IProjectListViewModel>(); mock.SetupGet( x => x.CurrentProject ).Returns( ProjectVm ); ProjectListVm = mock.Object; }