/*
* 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.assist;
import static org.assertj.core.api.Assertions.assertThat;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Text;
import org.junit.Rule;
import org.junit.Test;
import org.robotframework.ide.eclipse.main.plugin.assist.RedSettingProposals.SettingTarget;
import org.robotframework.red.jface.assist.AssistantContext;
import org.robotframework.red.jface.assist.RedContentProposal;
import org.robotframework.red.junit.ShellProvider;
import org.robotframework.red.nattable.edit.AssistanceSupport.NatTableAssistantContext;
public class SettingProposalsProviderTest {
@Rule
public ShellProvider shellProvider = new ShellProvider();
@Test
public void thereAreNoTestCaseSettingProposalsProvided_whenColumnIsDifferentThanFirst() {
final SettingProposalsProvider provider = new SettingProposalsProvider(SettingTarget.TEST_CASE);
for (int column = 0; column < 10; column++) {
if (column == 0) { // first column is omitted
continue;
}
final AssistantContext context = new NatTableAssistantContext(column, 0);
final RedContentProposal[] proposals = provider.getProposals("foo", 0, context);
assertThat(proposals).isEmpty();
}
}
@Test
public void thereAreNoTestCaseSettingProposalsProvided_whenThereIsNoKeywordMatchingCurrentPrefix()
throws Exception {
final SettingProposalsProvider provider = new SettingProposalsProvider(SettingTarget.TEST_CASE);
final AssistantContext context = new NatTableAssistantContext(0, 0);
final RedContentProposal[] proposals = provider.getProposals("xyz", 1, context);
assertThat(proposals).isEmpty();
}
@Test
public void thereAreTestCaseProposalsProvided_whenPrefixIsMatchingAndProperContentIsInserted() throws Exception {
final Text text = new Text(shellProvider.getShell(), SWT.SINGLE);
text.setText("[dx");
final SettingProposalsProvider provider = new SettingProposalsProvider(SettingTarget.TEST_CASE);
final AssistantContext context = new NatTableAssistantContext(0, 0);
final RedContentProposal[] proposals = provider.getProposals(text.getText(), 2, context);
assertThat(proposals).hasSize(1);
proposals[0].getModificationStrategy().insert(text, proposals[0]);
assertThat(text.getText()).isEqualTo("[Documentation]");
}
@Test
public void thereAreNoKeywordSettingProposalsProvided_whenColumnIsDifferentThanFirst() {
final SettingProposalsProvider provider = new SettingProposalsProvider(SettingTarget.KEYWORD);
for (int column = 0; column < 10; column++) {
if (column == 0) { // first column is omitted
continue;
}
final AssistantContext context = new NatTableAssistantContext(column, 0);
final RedContentProposal[] proposals = provider.getProposals("foo", 0, context);
assertThat(proposals).isEmpty();
}
}
@Test
public void thereAreNoKeywordSettingProposalsProvided_whenThereIsNoKeywordMatchingCurrentPrefix() throws Exception {
final SettingProposalsProvider provider = new SettingProposalsProvider(SettingTarget.KEYWORD);
final AssistantContext context = new NatTableAssistantContext(0, 0);
final RedContentProposal[] proposals = provider.getProposals("xyz", 1, context);
assertThat(proposals).isEmpty();
}
@Test
public void thereAreKeywordSettingsProposalsProvided_whenPrefixIsMatchingAndProperContentIsInserted()
throws Exception {
final Text text = new Text(shellProvider.getShell(), SWT.SINGLE);
text.setText("[dx");
final SettingProposalsProvider provider = new SettingProposalsProvider(SettingTarget.KEYWORD);
final AssistantContext context = new NatTableAssistantContext(0, 0);
final RedContentProposal[] proposals = provider.getProposals(text.getText(), 2, context);
assertThat(proposals).hasSize(1);
proposals[0].getModificationStrategy().insert(text, proposals[0]);
assertThat(text.getText()).isEqualTo("[Documentation]");
}
@Test
public void thereAreNoGeneralSettingProposalsProvided_whenColumnIsDifferentThanFirst() {
final SettingProposalsProvider provider = new SettingProposalsProvider(SettingTarget.GENERAL);
for (int column = 0; column < 10; column++) {
if (column == 0) { // first column is omitted
continue;
}
final AssistantContext context = new NatTableAssistantContext(column, 0);
final RedContentProposal[] proposals = provider.getProposals("foo", 0, context);
assertThat(proposals).isEmpty();
}
}
@Test
public void thereAreNoGeneralSettingProposalsProvided_whenThereIsNoKeywordMatchingCurrentPrefix()
throws Exception {
final SettingProposalsProvider provider = new SettingProposalsProvider(SettingTarget.GENERAL);
final AssistantContext context = new NatTableAssistantContext(0, 0);
final RedContentProposal[] proposals = provider.getProposals("xyz", 1, context);
assertThat(proposals).isEmpty();
}
@Test
public void thereAreGeneralSettingsProposalsProvided_whenPrefixIsMatchingAndProperContentIsInserted()
throws Exception {
final Text text = new Text(shellProvider.getShell(), SWT.SINGLE);
text.setText("dox");
final SettingProposalsProvider provider = new SettingProposalsProvider(SettingTarget.GENERAL);
final AssistantContext context = new NatTableAssistantContext(0, 0);
final RedContentProposal[] proposals = provider.getProposals(text.getText(), 2, context);
assertThat(proposals).hasSize(1);
proposals[0].getModificationStrategy().insert(text, proposals[0]);
assertThat(text.getText()).isEqualTo("Documentation");
}
}