/* * 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.tableeditor.variables; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import org.eclipse.nebula.widgets.nattable.config.ConfigRegistry; import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry; import org.eclipse.nebula.widgets.nattable.edit.EditConfigAttributes; import org.eclipse.nebula.widgets.nattable.edit.editor.ICellEditor; import org.eclipse.nebula.widgets.nattable.style.DisplayMode; import org.junit.Test; import org.rf.ide.core.testdata.model.table.variables.AVariable.VariableType; import org.robotframework.ide.eclipse.main.plugin.mockmodel.RobotSuiteFileCreator; import org.robotframework.ide.eclipse.main.plugin.model.RobotSuiteFile; import org.robotframework.ide.eclipse.main.plugin.tableeditor.RobotEditorCommandsStack; import org.robotframework.ide.eclipse.main.plugin.tableeditor.TableThemes.TableTheme; import org.robotframework.red.nattable.edit.CellEditorValueValidationJobScheduler; import org.robotframework.red.nattable.edit.CellEditorValueValidator; import org.robotframework.red.nattable.edit.DetailCellEditor; import org.robotframework.red.nattable.edit.RedTextCellEditor; import org.robotframework.red.nattable.edit.VariableNameRedCellEditorValidator; public class VariableValuesEditConfigurationTest { @Test public void thereIsATextCellEditorRegisteredForDictionaryName() { assertNameColumnValidator(VariableType.DICTIONARY); } @Test public void thereIsATextCellEditorRegisteredForListName() { assertNameColumnValidator(VariableType.LIST); } @Test public void thereIsATextCellEditorRegisteredForScalarAsListName() { assertNameColumnValidator(VariableType.SCALAR_AS_LIST); } @Test public void thereIsATextCellEditorRegisteredForScalarName() { assertNameColumnValidator(VariableType.SCALAR); } private void assertNameColumnValidator(final VariableType type) { // prepare final RobotSuiteFile suiteFile = new RobotSuiteFileCreator().build(); final VariableValuesEditConfiguration config = new VariableValuesEditConfiguration(mock(TableTheme.class), suiteFile, mock(VariablesDataProvider.class), mock(RobotEditorCommandsStack.class), true); // execute final IConfigRegistry configRegistry = new ConfigRegistry(); config.configureRegistry(configRegistry); // verify final ICellEditor editor = configRegistry.getConfigAttribute(EditConfigAttributes.CELL_EDITOR, DisplayMode.NORMAL, VariableTypesAndColumnsLabelAccumulator.getNameColumnLabel(type)); assertThat(editor).isInstanceOf(RedTextCellEditor.class); final CellEditorValueValidationJobScheduler<String> validationScheduler = ((RedTextCellEditor) editor) .getValidationJobScheduler(); final CellEditorValueValidator<String> validator = validationScheduler.getValidator(); assertThat(validator).isInstanceOf(VariableNameRedCellEditorValidator.class); } @Test public void thereIsATextCellEditorRegisteredForScalarVariableValues() { final RobotSuiteFile suiteFile = new RobotSuiteFileCreator().build(); final VariableValuesEditConfiguration config = new VariableValuesEditConfiguration(mock(TableTheme.class), suiteFile, mock(VariablesDataProvider.class), mock(RobotEditorCommandsStack.class), true); final IConfigRegistry configRegistry = new ConfigRegistry(); config.configureRegistry(configRegistry); final ICellEditor editor = configRegistry.getConfigAttribute(EditConfigAttributes.CELL_EDITOR, DisplayMode.NORMAL, VariableTypesAndColumnsLabelAccumulator.getValueColumnLabel(VariableType.SCALAR)); assertThat(editor).isInstanceOf(RedTextCellEditor.class); } @Test public void thereIsADetailCellEditorRegisteredForScalarAsListVariableValues() { final RobotSuiteFile suiteFile = new RobotSuiteFileCreator().build(); final VariableValuesEditConfiguration config = new VariableValuesEditConfiguration(mock(TableTheme.class), suiteFile, mock(VariablesDataProvider.class), mock(RobotEditorCommandsStack.class), true); final IConfigRegistry configRegistry = new ConfigRegistry(); config.configureRegistry(configRegistry); final ICellEditor editor = configRegistry.getConfigAttribute(EditConfigAttributes.CELL_EDITOR, DisplayMode.NORMAL, VariableTypesAndColumnsLabelAccumulator.getValueColumnLabel(VariableType.SCALAR_AS_LIST)); assertThat(editor).isInstanceOf(DetailCellEditor.class); } @Test public void thereIsADetailCellEditorRegisteredForListVariableValues() { final RobotSuiteFile suiteFile = new RobotSuiteFileCreator().build(); final VariableValuesEditConfiguration config = new VariableValuesEditConfiguration(mock(TableTheme.class), suiteFile, mock(VariablesDataProvider.class), mock(RobotEditorCommandsStack.class), true); final IConfigRegistry configRegistry = new ConfigRegistry(); config.configureRegistry(configRegistry); final ICellEditor editor = configRegistry.getConfigAttribute(EditConfigAttributes.CELL_EDITOR, DisplayMode.NORMAL, VariableTypesAndColumnsLabelAccumulator.getValueColumnLabel(VariableType.LIST)); assertThat(editor).isInstanceOf(DetailCellEditor.class); } @Test public void thereIsADetailCellEditorRegisteredForDictionaryVariableValues() { final RobotSuiteFile suiteFile = new RobotSuiteFileCreator().build(); final VariableValuesEditConfiguration config = new VariableValuesEditConfiguration(mock(TableTheme.class), suiteFile, mock(VariablesDataProvider.class), mock(RobotEditorCommandsStack.class), true); final IConfigRegistry configRegistry = new ConfigRegistry(); config.configureRegistry(configRegistry); final ICellEditor editor = configRegistry.getConfigAttribute(EditConfigAttributes.CELL_EDITOR, DisplayMode.NORMAL, VariableTypesAndColumnsLabelAccumulator.getValueColumnLabel(VariableType.DICTIONARY)); assertThat(editor).isInstanceOf(DetailCellEditor.class); } @Test public void thereIsADetailCellEditorRegisteredForInvalidVariableValues() { final RobotSuiteFile suiteFile = new RobotSuiteFileCreator().build(); final VariableValuesEditConfiguration config = new VariableValuesEditConfiguration(mock(TableTheme.class), suiteFile, mock(VariablesDataProvider.class), mock(RobotEditorCommandsStack.class), true); final IConfigRegistry configRegistry = new ConfigRegistry(); config.configureRegistry(configRegistry); final ICellEditor editor = configRegistry.getConfigAttribute(EditConfigAttributes.CELL_EDITOR, DisplayMode.NORMAL, VariableTypesAndColumnsLabelAccumulator.getValueColumnLabel(VariableType.INVALID)); assertThat(editor).isInstanceOf(DetailCellEditor.class); } }