コード例 #1
0
        public void Handle(FileOpenEvent message)
        {
            if (!fileSystem.File.Exists(message.Path))
            {
                return;
            }

            var openedDocs         = MDI.Items.Cast <DocumentViewModel>();
            var fileSystemSiteItem = new FileSystemSiteItem(eventAggregator, fileSystem, message.Path);
            var openedDoc          = openedDocs.SingleOrDefault(d => d.MarkpadDocument.IsSameItem(fileSystemSiteItem));

            if (openedDoc != null)
            {
                MDI.ActivateItem(openedDoc);
            }
            else
            {
                var finishedLoading = DoingWork(string.Format("Opening {0}", message.Path));
                documentFactory
                .OpenDocument(message.Path)
                .ContinueWith(t =>
                {
                    OpenDocumentResult(t);
                    finishedLoading.Dispose();
                }, TaskScheduler.FromCurrentSynchronizationContext());
            }
        }
コード例 #2
0
        public void deletes_matching_child_when_deleted_event_raised()
        {
            // arrange
            var          eventAggregator = Substitute.For <IEventAggregator>();
            const string fileName        = @"c:\Folder\file.txt";
            var          testItem        = new FileSystemSiteItem(eventAggregator, fileSystem, fileName)
            {
                Name       = "file.txt",
                Selected   = true,
                IsRenaming = true
            };
            var folder = new FileSystemSiteItem(eventAggregator, fileSystem, @"c:\Folder")
            {
                Name     = "Folder",
                Children =
                {
                    testItem
                }
            };

            // act
            folder.Handle(new FileDeletedEvent(fileName));

            // assert
            Assert.Empty(folder.Children);
        }
コード例 #3
0
        public void deletes_matching_child_when_deleted_event_raised()
        {
            // arrange
            var eventAggregator = Substitute.For<IEventAggregator>();
            const string fileName = @"c:\Folder\file.txt";
            var testItem = new FileSystemSiteItem(eventAggregator, fileSystem, fileName)
            {
                Name = "file.txt",
                Selected = true,
                IsRenaming = true
            };
            var folder = new FileSystemSiteItem(eventAggregator, fileSystem, @"c:\Folder")
            {
                Name = "Folder",
                Children =
                {
                    testItem
                }
            };

            // act
            folder.Handle(new FileDeletedEvent(fileName));

            // assert
            Assert.Empty(folder.Children);
        }
コード例 #4
0
        public async void Handle(FileOpenEvent message)
        {
            if (!fileSystem.File.Exists(message.Path))
            {
                return;
            }
            var fileSystemSiteItem = new FileSystemSiteItem(eventAggregator, fileSystem, message.Path);

            await OpenDocument(fileSystemSiteItem, message.Path, () => documentFactory.OpenDocument(message.Path));
        }
コード例 #5
0
        public void deletes_matching_child_when_deleted_event_raised()
        {
            // arrange
            const string fileName = @"c:\Folder\file.txt";
            var          testItem = new FileSystemSiteItem(eventAggregator, fileSystem, fileName)
            {
                Name       = "file.txt",
                Selected   = true,
                IsRenaming = true
            };

            jekyllContext.Items.Add(testItem);

            // act
            jekyllContext.Handle(new FileDeletedEvent(fileName));

            // assert
            Assert.Empty(jekyllContext.Items);
        }
コード例 #6
0
        public void commit_rename_moves_file()
        {
            // arrange
            var          eventAggregator = Substitute.For <IEventAggregator>();
            const string oldFileName     = @"c:\OldFile.txt";
            const string newFileName     = @"c:\newFile.txt";
            var          testItem        = new FileSystemSiteItem(eventAggregator, fileSystem, oldFileName)
            {
                Name       = "Test",
                Selected   = true,
                IsRenaming = true
            };

            // act
            testItem.Name = newFileName;
            testItem.CommitRename();

            // assert
            fileSystem.File.Received().Move(oldFileName, newFileName);
        }
コード例 #7
0
        public void undo_rename_reverts_changes()
        {
            // arrange
            var          eventAggregator = Substitute.For <IEventAggregator>();
            const string oldFileName     = @"c:\OldFile.txt";
            var          testItem        = new FileSystemSiteItem(eventAggregator, fileSystem, oldFileName)
            {
                Name       = "Test",
                Selected   = true,
                IsRenaming = true
            };

            // act
            testItem.Name = "Changed";
            testItem.UndoRename();

            // assert
            Assert.Equal("OldFile.txt", testItem.Name);
            Assert.Equal(oldFileName, testItem.Path);
        }
コード例 #8
0
        public void commit_rename_moves_file()
        {
            // arrange
            var eventAggregator = Substitute.For<IEventAggregator>();
            const string oldFileName = @"c:\OldFile.txt";
            const string newFileName = @"c:\newFile.txt";
            var testItem = new FileSystemSiteItem(eventAggregator, fileSystem, oldFileName)
            {
                Name = "Test",
                Selected = true,
                IsRenaming = true
            };

            // act
            testItem.Name = newFileName;
            testItem.CommitRename();

            // assert
            fileSystem.File.Received().Move(oldFileName, newFileName);
        }
コード例 #9
0
        public void renames_self_when_receives_filerenamed_event()
        {
            // arrange
            var          eventAggregator = Substitute.For <IEventAggregator>();
            const string oldFileName     = @"c:\OldFile.txt";
            const string newFileName     = @"c:\newFile.txt";
            var          testItem        = new FileSystemSiteItem(eventAggregator, fileSystem, oldFileName)
            {
                Name       = "Test",
                Selected   = true,
                IsRenaming = true
            };

            // act
            testItem.Handle(new FileRenamedEvent(oldFileName, newFileName));

            // assert
            Assert.Equal("newFile.txt", testItem.Name);
            Assert.Equal(newFileName, testItem.Path);
        }
コード例 #10
0
        public void undo_rename_reverts_changes()
        {
            // arrange
            var eventAggregator = Substitute.For<IEventAggregator>();
            const string oldFileName = @"c:\OldFile.txt";
            var testItem = new FileSystemSiteItem(eventAggregator, fileSystem, oldFileName)
            {
                Name = "Test",
                Selected = true,
                IsRenaming = true
            };

            // act
            testItem.Name = "Changed";
            testItem.UndoRename();

            // assert
            Assert.Equal("OldFile.txt", testItem.Name);
            Assert.Equal(oldFileName, testItem.Path);
        }
コード例 #11
0
        public void renames_self_when_receives_filerenamed_event()
        {
            // arrange
            var eventAggregator = Substitute.For<IEventAggregator>();
            const string oldFileName = @"c:\OldFile.txt";
            const string newFileName = @"c:\newFile.txt";
            var testItem = new FileSystemSiteItem(eventAggregator, fileSystem, oldFileName)
            {
                Name = "Test",
                Selected = true,
                IsRenaming = true
            };

            // act
            testItem.Handle(new FileRenamedEvent(oldFileName, newFileName));

            // assert
            Assert.Equal("newFile.txt", testItem.Name);
            Assert.Equal(newFileName, testItem.Path);
        }
コード例 #12
0
        public void inserts_new_file_into_sitecontext()
        {
            // arrange
            var          eventAggregator = Substitute.For <IEventAggregator>();
            const string oldFileName     = @"c:\Site\Folder";
            var          testItem        = new FileSystemSiteItem(eventAggregator, fileSystem, oldFileName);

            testItem.Children.Add(new TestItem(eventAggregator)
            {
                Name = "Alpha.txt"
            });
            testItem.Children.Add(new TestItem(eventAggregator)
            {
                Name = "Gamma.txt"
            });

            // act
            testItem.Handle(new FileCreatedEvent(@"c:\Site\Folder\Beta.txt"));

            // assert
            Assert.Equal("Beta.txt", testItem.Children[1].Name);
        }
コード例 #13
0
        public void deletes_matching_child_when_deleted_event_raised()
        {
            // arrange
            const string fileName = @"c:\Folder\file.txt";
            var testItem = new FileSystemSiteItem(eventAggregator, fileSystem, fileName)
            {
                Name = "file.txt",
                Selected = true,
                IsRenaming = true
            };
            jekyllContext.Items.Add(testItem);

            // act
            jekyllContext.Handle(new FileDeletedEvent(fileName));

            // assert
            Assert.Empty(jekyllContext.Items);
        }
コード例 #14
0
        public void inserts_new_file_into_sitecontext()
        {
            // arrange
            var eventAggregator = Substitute.For<IEventAggregator>();
            const string oldFileName = @"c:\Site\Folder";
            var testItem = new FileSystemSiteItem(eventAggregator, fileSystem, oldFileName);
            testItem.Children.Add(new TestItem(eventAggregator) { Name = "Alpha.txt" });
            testItem.Children.Add(new TestItem(eventAggregator) { Name = "Gamma.txt" });

            // act
            testItem.Handle(new FileCreatedEvent(@"c:\Site\Folder\Beta.txt"));

            // assert
            Assert.Equal("Beta.txt", testItem.Children[1].Name);
        }