/* * Copyright 2016 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.ide.eclipse.main.plugin.hyperlink; import static org.assertj.core.api.Assertions.assertThat; import static org.robotframework.ide.eclipse.main.plugin.hyperlink.Conditions.shellWithText; import org.eclipse.jface.text.Region; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; import org.junit.Test; import org.robotframework.ide.eclipse.main.plugin.RedImages; import org.robotframework.ide.eclipse.main.plugin.mockmodel.RobotSuiteFileCreator; import org.robotframework.ide.eclipse.main.plugin.model.RobotKeywordDefinition; import org.robotframework.ide.eclipse.main.plugin.model.RobotKeywordsSection; import org.robotframework.ide.eclipse.main.plugin.model.RobotSuiteFile; import org.robotframework.ide.eclipse.main.plugin.navigator.actions.KeywordDocumentationPopup; public class UserKeywordDocumentationHyperlinkTest { @Test public void testFileHyperlinkProperties() { final RobotSuiteFile suiteFile = createModel(); final RobotKeywordDefinition userKeyword = suiteFile.findSection(RobotKeywordsSection.class) .get() .getChildren() .get(0); final UserKeywordDocumentationHyperlink link = new UserKeywordDocumentationHyperlink(new Region(20, 50), suiteFile, userKeyword, "decoration"); assertThat(link.getTypeLabel()).isNull(); assertThat(link.getHyperlinkRegion()).isEqualTo(new Region(20, 50)); assertThat(link.getHyperlinkText()).isEqualTo("Open Documentation"); assertThat(link.getLabelForCompoundHyperlinksDialog()).isEqualTo("file.robot"); assertThat(link.additionalLabelDecoration()).isEqualTo("decoration"); assertThat(link.getImage()).isEqualTo(RedImages.getImageForFileWithExtension("robot")); } @Test public void testIfPopupOpensCorrectly() { final RobotSuiteFile suiteFile = createModel(); final RobotKeywordDefinition userKeyword = suiteFile.findSection(RobotKeywordsSection.class) .get() .getChildren() .get(0); final Display display = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().getDisplay(); assertThat(display.getShells()).doesNotHave(shellWithText(KeywordDocumentationPopup.POPUP_TEXT)); final UserKeywordDocumentationHyperlink link = new UserKeywordDocumentationHyperlink(new Region(20, 50), suiteFile, userKeyword, "decoration"); link.open(); assertThat(display.getShells()).has(shellWithText(KeywordDocumentationPopup.POPUP_TEXT)); for (final Shell shell : display.getShells()) { if (shell.getText().equals(KeywordDocumentationPopup.POPUP_TEXT)) { shell.close(); } } } private static RobotSuiteFile createModel() { return new RobotSuiteFileCreator() .appendLine("*** Keywords ***") .appendLine("myKeyword") .appendLine(" [Documentation] keyword doc") .appendLine(" Log 10") .build(); } }