public void ShowSaveFileDialogExtensionTest() { FileType rtfFileType = new FileType("RichText Document", ".rtf"); FileType xpsFileType = new FileType("XPS Document", ".xps"); IEnumerable <FileType> fileTypes = new FileType[] { rtfFileType, xpsFileType }; string defaultFileName = "Document 1.rtf"; FileDialogResult result = new FileDialogResult("Document 2.rtf", rtfFileType); MockFileDialogService service = new MockFileDialogService(); service.Result = result; Assert.AreEqual(result, service.ShowSaveFileDialog(rtfFileType)); Assert.AreEqual(rtfFileType, service.FileTypes.Single()); AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, rtfFileType)); AssertHelper.ExpectedException <ArgumentNullException>(() => service.ShowSaveFileDialog((FileType)null)); Assert.AreEqual(result, service.ShowSaveFileDialog(rtfFileType, defaultFileName)); Assert.AreEqual(rtfFileType, service.FileTypes.Single()); Assert.AreEqual(defaultFileName, service.DefaultFileName); AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, rtfFileType, defaultFileName)); AssertHelper.ExpectedException <ArgumentNullException>(() => service.ShowSaveFileDialog((FileType)null, defaultFileName)); Assert.AreEqual(result, service.ShowSaveFileDialog(fileTypes)); Assert.IsTrue(service.FileTypes.SequenceEqual(new FileType[] { rtfFileType, xpsFileType })); AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, fileTypes)); }
public void OpenSaveDocumentTest() { MockFileDialogService fileDialogService = Container.GetExportedValue <MockFileDialogService>(); IFileService fileService = Container.GetExportedValue <IFileService>(); fileDialogService.Result = new FileDialogResult(); fileService.OpenCommand.Execute(null); Assert.AreEqual(FileDialogType.OpenFileDialog, fileDialogService.FileDialogType); Assert.IsFalse(fileService.SaveCommand.CanExecute(null)); Assert.IsFalse(fileService.SaveAsCommand.CanExecute(null)); fileService.NewCommand.Execute(null); Assert.IsFalse(fileService.SaveCommand.CanExecute(null)); Assert.IsTrue(fileService.SaveAsCommand.CanExecute(null)); MainViewModel mainViewModel = Container.GetExportedValue <MainViewModel>(); RichTextViewModel richTextViewModel = ViewHelper.GetViewModel <RichTextViewModel>((IView)mainViewModel.ActiveDocumentView); AssertHelper.CanExecuteChangedEvent(fileService.SaveCommand, () => richTextViewModel.Document.Modified = true); Assert.IsTrue(fileService.SaveCommand.CanExecute(null)); Assert.IsTrue(fileService.SaveAsCommand.CanExecute(null)); fileDialogService.Result = new FileDialogResult(); fileService.SaveCommand.Execute(null); Assert.AreEqual(FileDialogType.SaveFileDialog, fileDialogService.FileDialogType); Assert.IsTrue(richTextViewModel.Document.Modified); fileDialogService.Result = new FileDialogResult(); fileService.SaveAsCommand.Execute(null); Assert.AreEqual(FileDialogType.SaveFileDialog, fileDialogService.FileDialogType); }
public void SaveChangesTest() { var controller = Container.GetExportedValue <ModuleController>(); controller.Initialize(); controller.Run(); ShellViewModel shellViewModel = Container.GetExportedValue <ShellViewModel>(); shellViewModel.FileService.NewCommand.Execute(null); MainViewModel mainViewModel = Container.GetExportedValue <MainViewModel>(); RichTextViewModel richTextViewModel = ViewHelper.GetViewModel <RichTextViewModel>((IView)mainViewModel.ActiveDocumentView); richTextViewModel.Document.Modified = true; bool showDialogCalled = false; MockSaveChangesView.ShowDialogAction = view => { showDialogCalled = true; Assert.IsTrue(ViewHelper.GetViewModel <SaveChangesViewModel>(view).Documents.SequenceEqual( new[] { richTextViewModel.Document })); view.Close(); }; // When we try to close the ShellView then the ApplicationController shows the SaveChangesView because the // modified document wasn't saved. shellViewModel.ExitCommand.Execute(null); Assert.IsTrue(showDialogCalled); MockShellView shellView = (MockShellView)Container.GetExportedValue <IShellView>(); Assert.IsTrue(shellView.IsVisible); showDialogCalled = false; MockSaveChangesView.ShowDialogAction = view => { showDialogCalled = true; view.ViewModel.YesCommand.Execute(null); }; MockFileDialogService fileDialogService = (MockFileDialogService)Container.GetExportedValue <IFileDialogService>(); fileDialogService.Result = new FileDialogResult(); // This time we let the SaveChangesView to save the modified document shellViewModel.ExitCommand.Execute(null); Assert.IsTrue(showDialogCalled); Assert.AreEqual(FileDialogType.SaveFileDialog, fileDialogService.FileDialogType); Assert.IsFalse(shellView.IsVisible); MockSaveChangesView.ShowDialogAction = null; }
public void OpenDocumentTest() { MockFileDialogService fileDialogService = Container.GetExportedValue <MockFileDialogService>(); FileController fileController = Container.GetExportedValue <FileController>(); IFileService fileService = Container.GetExportedValue <IFileService>(); MockDocumentType documentType = new MockDocumentType("Mock Document", ".mock"); fileController.Register(documentType); Assert.IsFalse(fileService.Documents.Any()); Assert.IsNull(fileService.ActiveDocument); fileDialogService.Result = new FileDialogResult("Document1.mock", new FileType("Mock Document", ".mock")); fileService.OpenCommand.Execute(null); Assert.AreEqual(FileDialogType.OpenFileDialog, fileDialogService.FileDialogType); Assert.AreEqual("Mock Document", fileDialogService.FileTypes.Last().Description); Assert.AreEqual(".mock", fileDialogService.FileTypes.Last().FileExtension); Assert.AreEqual(DocumentOperation.Open, documentType.DocumentOperation); Assert.AreEqual("Document1.mock", documentType.FileName); IDocument document = fileService.Documents.Last(); Assert.AreEqual("Document1.mock", document.FileName); Assert.IsTrue(fileService.Documents.SequenceEqual(new[] { document })); Assert.AreEqual(document, fileService.ActiveDocument); // Open the same file again -> It's not opened again, just activated. fileService.ActiveDocument = null; fileService.OpenCommand.Execute("Document1.mock"); Assert.IsTrue(fileService.Documents.SequenceEqual(new[] { document })); Assert.AreEqual(document, fileService.ActiveDocument); // Now the user cancels the OpenFileDialog box fileDialogService.Result = new FileDialogResult(); int documentsCount = fileService.Documents.Count; fileService.OpenCommand.Execute(null); Assert.AreEqual(documentsCount, fileService.Documents.Count); Assert.IsTrue(fileService.Documents.SequenceEqual(new[] { document })); Assert.AreEqual(document, fileService.ActiveDocument); }
public void SaveDocumentTest() { MockFileDialogService fileDialogService = Container.GetExportedValue <MockFileDialogService>(); FileController fileController = Container.GetExportedValue <FileController>(); IFileService fileService = Container.GetExportedValue <IFileService>(); MockDocumentType documentType = new MockDocumentType("Mock Document", ".mock"); fileController.Register(documentType); fileController.New(documentType); IDocument document = fileService.Documents.Single(); document.FileName = "Document.mock"; fileDialogService.Result = new FileDialogResult("Document1.mock", new FileType("Mock Document", ".mock")); fileService.SaveAsCommand.Execute(null); Assert.AreEqual(FileDialogType.SaveFileDialog, fileDialogService.FileDialogType); Assert.AreEqual("Mock Document", fileDialogService.FileTypes.Single().Description); Assert.AreEqual(".mock", fileDialogService.FileTypes.Single().FileExtension); Assert.AreEqual("Mock Document", fileDialogService.DefaultFileType.Description); Assert.AreEqual(".mock", fileDialogService.DefaultFileType.FileExtension); Assert.AreEqual("Document", fileDialogService.DefaultFileName); Assert.AreEqual(DocumentOperation.Save, documentType.DocumentOperation); Assert.AreEqual(document, documentType.Document); Assert.AreEqual("Document1.mock", documentType.FileName); // Change the CanSave to return false so that no documentType is able to save the document anymore documentType.CanSaveResult = false; Assert.IsFalse(fileService.SaveCommand.CanExecute(null)); // Simulate an exception during the Save operation. MockMessageService messageService = Container.GetExportedValue <MockMessageService>(); messageService.Clear(); documentType.ThrowException = true; documentType.CanSaveResult = true; fileService.SaveAsCommand.Execute(null); Assert.AreEqual(MessageType.Error, messageService.MessageType); Assert.IsFalse(string.IsNullOrEmpty(messageService.Message)); }
public void ShowMockFileDialogService() { var fileDialogService = new MockFileDialogService(); var owner = new object(); var fileType = new FileType("description", ".fileExtension"); var fileTypes = new[] { fileType }; var result = new FileDialogResult("selectedName", fileType); fileDialogService.Result = result; Assert.AreEqual(result, fileDialogService.ShowOpenFileDialog(owner, fileTypes, fileType, "defaultFileName")); Assert.AreEqual(FileDialogType.OpenFileDialog, fileDialogService.FileDialogType); Assert.AreEqual(owner, fileDialogService.Owner); Assert.AreEqual(fileTypes, fileDialogService.FileTypes); Assert.AreEqual(fileType, fileDialogService.DefaultFileType); Assert.AreEqual("defaultFileName", fileDialogService.DefaultFileName); fileDialogService.Clear(); Assert.AreEqual(FileDialogType.None, fileDialogService.FileDialogType); Assert.IsNull(fileDialogService.Owner); Assert.IsNull(fileDialogService.FileTypes); Assert.IsNull(fileDialogService.DefaultFileType); Assert.IsNull(fileDialogService.DefaultFileName); fileDialogService.Result = result; Assert.AreEqual(result, fileDialogService.ShowSaveFileDialog(owner, fileTypes, fileType, "defaultFileName")); Assert.AreEqual(FileDialogType.SaveFileDialog, fileDialogService.FileDialogType); Assert.AreEqual(owner, fileDialogService.Owner); Assert.AreEqual(fileTypes, fileDialogService.FileTypes); Assert.AreEqual(fileType, fileDialogService.DefaultFileType); Assert.AreEqual("defaultFileName", fileDialogService.DefaultFileName); }
public void SaveDocumentWhenFileExistsTest() { // Get the absolute file path string fileName = Path.GetFullPath("SaveWhenFileExistsTest.mock"); MockFileDialogService fileDialogService = Container.GetExportedValue <MockFileDialogService>(); FileController fileController = Container.GetExportedValue <FileController>(); IFileService fileService = Container.GetExportedValue <IFileService>(); MockDocumentType documentType = new MockDocumentType("Mock Document", ".mock"); fileController.Register(documentType); using (StreamWriter writer = new StreamWriter(fileName)) { writer.WriteLine("Hello World"); } IDocument document = fileController.New(documentType); ((MockDocument)document).Modified = true; // We set the absoulte file path to simulate that we already saved the document document.FileName = fileName; fileService.SaveCommand.Execute(null); Assert.AreEqual(DocumentOperation.Save, documentType.DocumentOperation); Assert.AreEqual(document, documentType.Document); Assert.AreEqual(fileName, documentType.FileName); // Simulate the scenario when the user overwrites the existing file fileDialogService.Result = new FileDialogResult(fileName, new FileType("Mock Document", ".mock")); fileService.SaveAsCommand.Execute(null); Assert.AreEqual("Mock Document", fileDialogService.DefaultFileType.Description); Assert.AreEqual(".mock", fileDialogService.DefaultFileType.FileExtension); Assert.AreEqual(DocumentOperation.Save, documentType.DocumentOperation); Assert.AreEqual(document, documentType.Document); Assert.AreEqual(fileName, documentType.FileName); }
public void ShowSaveFileDialogExtensionTest() { var rtfFileType = new FileType("RichText Document", ".rtf"); var xpsFileType = new FileType("XPS Document", ".xps"); var fileTypes = new[] { rtfFileType, xpsFileType }; string defaultFileName = "Document 1.rtf"; var result = new FileDialogResult("Document 2.rtf", rtfFileType); object owner = new object(); var service = new MockFileDialogService() { Result = result }; Assert.AreEqual(result, service.ShowSaveFileDialog(rtfFileType)); Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType); Assert.AreEqual(rtfFileType, service.FileTypes.Single()); AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null !, rtfFileType)); AssertHelper.ExpectedException <ArgumentNullException>(() => service.ShowSaveFileDialog((FileType)null !)); service.Clear(); Assert.AreEqual(result, service.ShowSaveFileDialog(owner, rtfFileType)); Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType); Assert.AreEqual(owner, service.Owner); Assert.AreEqual(rtfFileType, service.FileTypes.Single()); AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null !, owner, rtfFileType)); AssertHelper.ExpectedException <ArgumentNullException>(() => service.ShowSaveFileDialog(owner, (FileType)null !)); service.Clear(); Assert.AreEqual(result, service.ShowSaveFileDialog(rtfFileType, defaultFileName)); Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType); Assert.AreEqual(rtfFileType, service.FileTypes.Single()); Assert.AreEqual(defaultFileName, service.DefaultFileName); AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null !, rtfFileType, defaultFileName)); AssertHelper.ExpectedException <ArgumentNullException>(() => service.ShowSaveFileDialog((FileType)null !, defaultFileName)); service.Clear(); Assert.AreEqual(result, service.ShowSaveFileDialog(owner, rtfFileType, defaultFileName)); Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType); Assert.AreEqual(owner, service.Owner); Assert.AreEqual(rtfFileType, service.FileTypes.Single()); Assert.AreEqual(defaultFileName, service.DefaultFileName); AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null !, owner, rtfFileType, defaultFileName)); AssertHelper.ExpectedException <ArgumentNullException>(() => service.ShowSaveFileDialog(owner, (FileType)null !, defaultFileName)); service.Clear(); Assert.AreEqual(result, service.ShowSaveFileDialog(fileTypes)); Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType); AssertHelper.SequenceEqual(new[] { rtfFileType, xpsFileType }, service.FileTypes); AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null !, fileTypes)); service.Clear(); Assert.AreEqual(result, service.ShowSaveFileDialog(owner, fileTypes)); Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType); Assert.AreEqual(owner, service.Owner); AssertHelper.SequenceEqual(new[] { rtfFileType, xpsFileType }, service.FileTypes); AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null !, owner, fileTypes)); service.Clear(); Assert.AreEqual(result, service.ShowSaveFileDialog(fileTypes, rtfFileType, defaultFileName)); Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType); AssertHelper.SequenceEqual(new[] { rtfFileType, xpsFileType }, service.FileTypes); Assert.AreEqual(rtfFileType, service.DefaultFileType); Assert.AreEqual(defaultFileName, service.DefaultFileName); AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null !, fileTypes, rtfFileType, defaultFileName)); }
public void ShowSaveFileDialogExtensionTest() { FileType rtfFileType = new FileType("RichText Document", ".rtf"); FileType xpsFileType = new FileType("XPS Document", ".xps"); IEnumerable<FileType> fileTypes = new[] { rtfFileType, xpsFileType }; string defaultFileName = "Document 1.rtf"; FileDialogResult result = new FileDialogResult("Document 2.rtf", rtfFileType); object owner = new object(); MockFileDialogService service = new MockFileDialogService(); service.Result = result; Assert.AreEqual(result, service.ShowSaveFileDialog(rtfFileType)); Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType); Assert.AreEqual(rtfFileType, service.FileTypes.Single()); AssertHelper.ExpectedException<ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, rtfFileType)); AssertHelper.ExpectedException<ArgumentNullException>(() => service.ShowSaveFileDialog((FileType)null)); service.Clear(); Assert.AreEqual(result, service.ShowSaveFileDialog(owner, rtfFileType)); Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType); Assert.AreEqual(owner, service.Owner); Assert.AreEqual(rtfFileType, service.FileTypes.Single()); AssertHelper.ExpectedException<ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, owner, rtfFileType)); AssertHelper.ExpectedException<ArgumentNullException>(() => service.ShowSaveFileDialog(owner, (FileType)null)); service.Clear(); Assert.AreEqual(result, service.ShowSaveFileDialog(rtfFileType, defaultFileName)); Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType); Assert.AreEqual(rtfFileType, service.FileTypes.Single()); Assert.AreEqual(defaultFileName, service.DefaultFileName); AssertHelper.ExpectedException<ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, rtfFileType, defaultFileName)); AssertHelper.ExpectedException<ArgumentNullException>(() => service.ShowSaveFileDialog((FileType)null, defaultFileName)); service.Clear(); Assert.AreEqual(result, service.ShowSaveFileDialog(owner, rtfFileType, defaultFileName)); Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType); Assert.AreEqual(owner, service.Owner); Assert.AreEqual(rtfFileType, service.FileTypes.Single()); Assert.AreEqual(defaultFileName, service.DefaultFileName); AssertHelper.ExpectedException<ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, owner, rtfFileType, defaultFileName)); AssertHelper.ExpectedException<ArgumentNullException>(() => service.ShowSaveFileDialog(owner, (FileType)null, defaultFileName)); service.Clear(); Assert.AreEqual(result, service.ShowSaveFileDialog(fileTypes)); Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType); Assert.IsTrue(service.FileTypes.SequenceEqual(new[] { rtfFileType, xpsFileType })); AssertHelper.ExpectedException<ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, fileTypes)); service.Clear(); Assert.AreEqual(result, service.ShowSaveFileDialog(owner, fileTypes)); Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType); Assert.AreEqual(owner, service.Owner); Assert.IsTrue(service.FileTypes.SequenceEqual(new[] { rtfFileType, xpsFileType })); AssertHelper.ExpectedException<ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, owner, fileTypes)); service.Clear(); Assert.AreEqual(result, service.ShowSaveFileDialog(fileTypes, rtfFileType, defaultFileName)); Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType); Assert.IsTrue(service.FileTypes.SequenceEqual(new[] { rtfFileType, xpsFileType })); Assert.AreEqual(rtfFileType, service.DefaultFileType); Assert.AreEqual(defaultFileName, service.DefaultFileName); AssertHelper.ExpectedException<ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, fileTypes, rtfFileType, defaultFileName)); }
public void ShowMockFileDialogService() { var fileDialogService = new MockFileDialogService(); var owner = new object(); var fileType = new FileType("description", ".fileExtension"); var fileTypes = new[] { fileType }; var result = new FileDialogResult("selectedName", fileType); fileDialogService.Result = result; Assert.AreEqual(result, fileDialogService.ShowOpenFileDialog(owner, fileTypes, fileType, "defaultFileName")); Assert.AreEqual(FileDialogType.OpenFileDialog, fileDialogService.FileDialogType); Assert.AreEqual(owner, fileDialogService.Owner); Assert.AreEqual(fileTypes, fileDialogService.FileTypes); Assert.AreEqual(fileType, fileDialogService.DefaultFileType); Assert.AreEqual("defaultFileName", fileDialogService.DefaultFileName); fileDialogService.Clear(); Assert.AreEqual(FileDialogType.None, fileDialogService.FileDialogType); Assert.IsNull(fileDialogService.Owner); Assert.IsFalse(fileDialogService.FileTypes.Any()); Assert.IsNull(fileDialogService.DefaultFileType); Assert.IsNull(fileDialogService.DefaultFileName); fileDialogService.Result = result; Assert.AreEqual(result, fileDialogService.ShowSaveFileDialog(owner, fileTypes, fileType, "defaultFileName")); Assert.AreEqual(FileDialogType.SaveFileDialog, fileDialogService.FileDialogType); Assert.AreEqual(owner, fileDialogService.Owner); Assert.AreEqual(fileTypes, fileDialogService.FileTypes); Assert.AreEqual(fileType, fileDialogService.DefaultFileType); Assert.AreEqual("defaultFileName", fileDialogService.DefaultFileName); var showOpenFileDialogCalled = false; fileDialogService.ShowOpenFileDialogStub = (view, fTypes, defaultFType, defaultFName) => { showOpenFileDialogCalled = true; Assert.AreSame(owner, view); Assert.AreSame(fTypes, fileTypes); Assert.AreSame(defaultFType, fileType); Assert.AreEqual("defaultFileName", defaultFName); return(new FileDialogResult()); }; Assert.IsFalse(fileDialogService.ShowOpenFileDialog(owner, fileTypes, fileType, "defaultFileName").IsValid); Assert.IsTrue(showOpenFileDialogCalled); var showSaveFileDialogCalled = false; fileDialogService.ShowSaveFileDialogStub = (view, fTypes, defaultFType, defaultFName) => { showSaveFileDialogCalled = true; Assert.AreSame(owner, view); Assert.AreSame(fTypes, fileTypes); Assert.AreSame(defaultFType, fileType); Assert.AreEqual("defaultFileName", defaultFName); return(new FileDialogResult()); }; Assert.IsFalse(fileDialogService.ShowSaveFileDialog(owner, fileTypes, fileType, "defaultFileName").IsValid); Assert.IsTrue(showSaveFileDialogCalled); }