/* * Copyright 2017 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.preferences; import static com.google.common.collect.Lists.newArrayList; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verifyZeroInteractions; import java.util.List; import org.eclipse.jface.preference.FieldEditor; import org.eclipse.jface.preference.FileFieldEditor; import org.eclipse.jface.preference.IntegerFieldEditor; import org.eclipse.jface.preference.StringFieldEditor; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Group; import org.eclipse.ui.IWorkbench; import org.junit.Rule; import org.junit.Test; import org.robotframework.ide.eclipse.main.plugin.RedPreferences; import org.robotframework.red.junit.ShellProvider; public class DefaultLaunchConfigurationPreferencePageTest { @Rule public ShellProvider shellProvider = new ShellProvider(); @Test public void initDoesNothing() { final IWorkbench workbench = mock(IWorkbench.class); final DefaultLaunchConfigurationPreferencePage page = new DefaultLaunchConfigurationPreferencePage(); page.init(workbench); verifyZeroInteractions(workbench); } @Test public void checkIfEditorsForAllLaunchConfigurationPreferencesAreDefined() throws Exception { final DefaultLaunchConfigurationPreferencePage page = new DefaultLaunchConfigurationPreferencePage(); page.createControl(shellProvider.getShell()); final List<String> integerPrefNames = newArrayList(RedPreferences.LAUNCH_AGENT_CONNECTION_PORT, RedPreferences.LAUNCH_AGENT_CONNECTION_TIMEOUT); final List<String> stringPrefNames = newArrayList(RedPreferences.LAUNCH_ADDITIONAL_INTERPRETER_ARGUMENTS, RedPreferences.LAUNCH_ADDITIONAL_ROBOT_ARGUMENTS, RedPreferences.LAUNCH_AGENT_CONNECTION_HOST, RedPreferences.LAUNCH_ADDITIONAL_EXECUTABLE_FILE_ARGUMENTS); final List<FieldEditor> editors = FieldEditorPreferencePageHelper.getEditors(page); assertThat(editors).hasSize(7); for (final FieldEditor editor : editors) { if (editor instanceof IntegerFieldEditor) { integerPrefNames.remove(editor.getPreferenceName()); } else if (editor instanceof StringFieldEditor) { stringPrefNames.remove(editor.getPreferenceName()); } else if (editor instanceof FileFieldEditor) { final FileFieldEditor fileFieldEditor = (FileFieldEditor) editor; assertThat(fileFieldEditor.getPreferenceName()).isEqualTo(RedPreferences.LAUNCH_EXECUTABLE_FILE_PATH); } } assertThat(integerPrefNames).isEmpty(); assertThat(stringPrefNames).isEmpty(); } @Test public void checkIfExportClientScriptButtonIsDefined() throws Exception { final DefaultLaunchConfigurationPreferencePage page = new DefaultLaunchConfigurationPreferencePage(); page.createControl(shellProvider.getShell()); boolean buttonFound = false; final Composite pageControl = (Composite) page.getControl(); final Composite fieldEditorParent = (Composite) pageControl.getChildren()[1]; for (final Control fieldEditorParentControl : fieldEditorParent.getChildren()) { if (fieldEditorParentControl instanceof Group) { for (final Control groupControl : ((Group) fieldEditorParentControl).getChildren()) { if (groupControl instanceof Button) { if (((Button) groupControl).getText().equals("Export Client Script")) { buttonFound = true; break; } } } } } assertThat(buttonFound).isTrue(); } }