package vnet.sms.common.shell.clamshellspring.internal;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.List;
import org.clamshellcli.api.IOConsole;
import org.clamshellcli.api.InputController;
import org.clamshellcli.api.Plugin;
import org.clamshellcli.api.Shell;
import org.clamshellcli.impl.CliConsole;
import org.clamshellcli.impl.CliShell;
import org.clamshellcli.impl.CmdController;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("itest")
@ContextConfiguration({ "classpath*:META-INF/module/module-context.xml" })
public class SpringPluginRegistryIT {
@Autowired
private SpringPluginRegistry objectUnderTest;
@Test
public final void assertThatSpringPluginRegistryRegistersAllPlugins() {
final List<Plugin> allRegisteredPlugins = this.objectUnderTest
.getPlugins();
assertEquals(
"SpringPluginRegistry registered an unexpected number of plugins on application context startup",
3, allRegisteredPlugins.size());
}
@Test
public final void assertThatSpringPluginRegistryRegistersCliShell() {
final Shell shell = this.objectUnderTest.getShell();
assertEquals(
"SpringPluginRegistry registered unexpected type of shell",
CliShell.class, shell.getClass());
}
@Test
public final void assertThatSpringPluginRegistryRegistersCliConsole() {
final IOConsole console = this.objectUnderTest.getIOConsole();
assertEquals(
"SpringPluginRegistry registered unexpected type of console",
CliConsole.class, console.getClass());
}
@Test
public final void assertThatSpringPluginRegistryRegistersCmdController() {
final List<InputController> inputControllers = this.objectUnderTest
.getPluginsByType(InputController.class);
CmdController cmdController = null;
for (final InputController candidate : inputControllers) {
if (CmdController.class.isInstance(candidate)) {
cmdController = CmdController.class.cast(candidate);
break;
}
}
assertNotNull(
"SpringPluginRegistry did NOT register CmdController a plugin",
cmdController);
}
}