public void Displays404PageOnMissingDocFile() { // Arrange var docsEvent = new OpenDocumentationLinkEventArgs(new Uri("missingFile.html", UriKind.Relative)); var viewExtension = SetupNewViewExtension(true); // Act var tabsBeforeExternalEventTrigger = this.View.ExtensionTabItems.Count; viewExtension.HandleRequestOpenDocumentationLink(docsEvent); var tabsAfterExternalEventTrigger = this.View.ExtensionTabItems.Count; var htmlContent = GetSidebarDocsBrowserContents(); // Assert Assert.IsFalse(docsEvent.IsRemoteResource); Assert.AreEqual(0, tabsBeforeExternalEventTrigger); Assert.AreEqual(1, tabsAfterExternalEventTrigger); Assert.IsTrue(htmlContent.Contains(fileMissingHtmlHeader)); }
public void CanHandleDocsEventWithValidLink() { // Arrange var docsEvent = new OpenDocumentationLinkEventArgs(new Uri(localDocsFileLink, UriKind.Relative)); var viewExtension = SetupNewViewExtension(true); // Act var tabsBeforeExternalEventTrigger = this.View.ExtensionTabItems.Count; viewExtension.HandleRequestOpenDocumentationLink(docsEvent); var tabsAfterExternalEventTrigger = this.View.ExtensionTabItems.Count; var htmlContent = GetSidebarDocsBrowserContents(); // Assert Assert.IsFalse(docsEvent.IsRemoteResource); Assert.AreEqual(0, tabsBeforeExternalEventTrigger); Assert.AreEqual(1, tabsAfterExternalEventTrigger); Assert.IsTrue(htmlContent.Contains(excelDocsFileHtmlHeader)); }
/// <summary> /// This method handles the documentation open requests coming from Dynamo. /// The incoming request is routed to the ViewModel for processing. /// </summary> /// <param name="args">The incoming event data.</param> public void HandleRequestOpenDocumentationLink(OpenDocumentationLinkEventArgs args) { if (args == null) { return; } // ignore events targeting remote resources so the sidebar is not displayed if (args.IsRemoteResource) { return; } // make sure the view is added to the Sidebar // this also forces the Sidebar to open AddToSidebar(false); // forward the event to the ViewModel to handle this.ViewModel?.HandleOpenDocumentationLinkEvent(args); }
public void CanTriggerDocumentationLinkEvent() { // Arrange InfoBubbleViewModel infoBubble = new InfoBubbleViewModel(this.ViewModel); const string documentationFile = "dynamo.html"; string content = $"This is the test infoBubble href={documentationFile}"; InfoBubbleDataPacket infoBubbleDataPacket = new InfoBubbleDataPacket(InfoBubbleViewModel.Style.Error, new Point(0, 0), new Point(0, 0), content, InfoBubbleViewModel.Direction.Bottom); var docEventArgs = new OpenDocumentationLinkEventArgs(infoBubbleDataPacket.Link); // register an extra handler for documentation events so we can confirm // the Dynamo ViewModel event gets triggered from the InfoBubble viewmodel RequestOpenDocumentationLinkHandler handler = (OpenDocumentationLinkEventArgs e) => { Assert.IsNotNull(e); Assert.AreEqual(documentationFile, e.Link.ToString()); }; this.ViewModel.RequestOpenDocumentationLink += handler; // Act // test we can pass in content with a link and it gets set if (infoBubble.UpdateContentCommand.CanExecute(null)) { infoBubble.UpdateContentCommand.Execute(infoBubbleDataPacket); } // test the InfoBubbleViewModel raises the right DynamoViewModel event if (infoBubble.OpenDocumentationLinkCommand.CanExecute(null)) { infoBubble.OpenDocumentationLinkCommand.Execute(docEventArgs.Link); } // Assert Assert.IsNotNull(infoBubble.DocumentationLink); Assert.AreEqual(documentationFile, infoBubble.DocumentationLink.ToString()); this.ViewModel.RequestOpenDocumentationLink -= handler; }
public void Displays404PageWhenLinkPointsToAssemblyThatCannotBeFound() { // Arrange var viewExtension = SetupNewViewExtension(true); // Reference an embedded HTML file in a loaded assembly var assemblyName = "NonExisting"; var fileName = "Whatever.html"; var uri = $"{assemblyName};{fileName}"; var docsEvent = new OpenDocumentationLinkEventArgs(new Uri(uri, UriKind.Relative)); // Act var tabsBeforeExternalEventTrigger = this.View.ExtensionTabItems.Count; viewExtension.HandleRequestOpenDocumentationLink(docsEvent); var tabsAfterExternalEventTrigger = this.View.ExtensionTabItems.Count; var htmlContent = GetSidebarDocsBrowserContents(); // Assert Assert.IsFalse(docsEvent.IsRemoteResource); Assert.AreEqual(0, tabsBeforeExternalEventTrigger); Assert.AreEqual(1, tabsAfterExternalEventTrigger); Assert.IsTrue(htmlContent.Contains(fileMissingHtmlHeader)); }
public void DisplaysHtmlEmbeddedInLoadedAssemblies() { // Arrange var viewExtension = SetupNewViewExtension(true); // Reference an embedded HTML file in a loaded assembly var assemblyName = "DocumentationBrowserViewExtension"; var fileName = "ArgumentNullException.html"; var uri = $"{assemblyName};{fileName}"; var docsEvent = new OpenDocumentationLinkEventArgs(new Uri(uri, UriKind.Relative)); // Act var tabsBeforeExternalEventTrigger = this.View.ExtensionTabItems.Count; viewExtension.HandleRequestOpenDocumentationLink(docsEvent); var tabsAfterExternalEventTrigger = this.View.ExtensionTabItems.Count; var htmlContent = GetSidebarDocsBrowserContents(); // Assert Assert.IsFalse(docsEvent.IsRemoteResource); Assert.AreEqual(0, tabsBeforeExternalEventTrigger); Assert.AreEqual(1, tabsAfterExternalEventTrigger); Assert.IsTrue(htmlContent.Contains("<h2>Value cannot be null</h2>")); }
/// <summary> /// Open a documentation link in the sidebar DocumentationBrowser embedded browser. /// Link should ideally point to a local HTML file, but can also point to a web address. /// </summary> /// <param name="link">The Uri to the resource do display in the DocumentationBrowser.</param> public void OpenDocumentationLinkCommand(Uri link) { var eventArgs = new OpenDocumentationLinkEventArgs(link); dynamoViewModel.OpenDocumentationLink(eventArgs); }