/**
* Copyright (c) 2014 Olav Lenz.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Olav Lenz - initial API and implementation.
*/
package org.eclipse.recommenders.internal.snipmatch.rcp;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.*;
import java.util.List;
import org.eclipse.recommenders.snipmatch.model.SnippetRepositoryConfiguration;
import org.eclipse.recommenders.snipmatch.rcp.ISnippetRepositoryWizard;
import org.eclipse.recommenders.utils.Checks;
import org.junit.Test;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import com.google.common.collect.Lists;
public class WizardDescriptorsTest {
@Test
public void testEmptyDescriptorList() {
SnippetRepositoryConfiguration config = mock(SnippetRepositoryConfiguration.class);
List<WizardDescriptor> descriptors = Lists.newArrayList();
List<WizardDescriptor> filteredDescriptors = WizardDescriptors.filterApplicableWizardDescriptors(descriptors,
config);
assertThat(filteredDescriptors.isEmpty(), is(true));
}
@Test
public void testNoApplicableWizardDescriptorAvailable() {
SnippetRepositoryConfiguration config = mock(SnippetRepositoryConfiguration.class);
List<WizardDescriptor> descriptors = Lists.newArrayList(createMock(config));
SnippetRepositoryConfiguration otherConfig = mock(SnippetRepositoryConfiguration.class);
List<WizardDescriptor> filteredDescriptors = WizardDescriptors.filterApplicableWizardDescriptors(descriptors,
otherConfig);
assertThat(filteredDescriptors.isEmpty(), is(true));
}
@Test
public void testOneApplicableWizardDescriptorAvailable() {
SnippetRepositoryConfiguration config = mock(SnippetRepositoryConfiguration.class);
SnippetRepositoryConfiguration otherConfig = mock(SnippetRepositoryConfiguration.class);
WizardDescriptor wizardMock = createMock(config);
List<WizardDescriptor> descriptors = Lists.newArrayList(wizardMock, createMock(otherConfig));
List<WizardDescriptor> filteredDescriptors = WizardDescriptors.filterApplicableWizardDescriptors(descriptors,
config);
assertThat(filteredDescriptors.size(), is(1));
assertThat(filteredDescriptors, hasItem(wizardMock));
}
@Test
public void testMoreApplicableWizardDescriptorAvailable() {
SnippetRepositoryConfiguration config = mock(SnippetRepositoryConfiguration.class);
SnippetRepositoryConfiguration otherConfig = mock(SnippetRepositoryConfiguration.class);
WizardDescriptor wizardMock = createMock(config);
WizardDescriptor otherWizardMock = createMock(config);
List<WizardDescriptor> descriptors = Lists.newArrayList(wizardMock, otherWizardMock, createMock(otherConfig));
List<WizardDescriptor> filteredDescriptors = WizardDescriptors.filterApplicableWizardDescriptors(descriptors,
config);
assertThat(filteredDescriptors.size(), is(2));
assertThat(filteredDescriptors, hasItems(wizardMock, otherWizardMock));
}
private static WizardDescriptor createMock(final SnippetRepositoryConfiguration applicableConfiguration) {
ISnippetRepositoryWizard wizard = mock(ISnippetRepositoryWizard.class);
when(wizard.isApplicable(Mockito.<SnippetRepositoryConfiguration>anyObject())).thenAnswer(
new Answer<Boolean>() {
@Override
public Boolean answer(InvocationOnMock invocation) throws Throwable {
SnippetRepositoryConfiguration config = Checks.cast(invocation.getArguments()[0]);
return config.equals(applicableConfiguration);
}
});
return new WizardDescriptor("", wizard);
}
}