package com.uwsoft.editor.controller; import com.google.common.collect.Sets; import com.puremvc.patterns.observer.BaseNotification; import com.uwsoft.editor.Overlap2DFacade; import com.uwsoft.editor.controller.commands.*; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import java.util.Set; import static org.hamcrest.core.IsCollectionContaining.hasItems; import static org.junit.Assert.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.MockitoAnnotations.initMocks; @RunWith(PowerMockRunner.class) @PrepareForTest(Overlap2DFacade.class) public class BootstrapCommandTest { private BootstrapCommand bootstrapCommand; @Mock private Overlap2DFacade overlap2DFacade; @Before public void setUp() throws Exception { initMocks(this); PowerMockito.mockStatic(Overlap2DFacade.class); PowerMockito.when(Overlap2DFacade.getInstance()).thenReturn(overlap2DFacade); bootstrapCommand = new BootstrapCommand(); } @Test public void shouldRegisterAllCommands() throws Exception { Set<Class> commandsList = Sets.newHashSet(); Mockito.doAnswer(invocation -> { Class argument = invocation.getArgumentAt(1, Class.class); commandsList.add(argument); return null; }).when(overlap2DFacade).registerCommand(anyString(), any()); bootstrapCommand.execute(new BaseNotification("baseNotification")); //TODO: This some how gives too many incovations //verify(overlap2DFacade, times(26)).registerCommand(anyString(), any()); //assertThat(commandsList.size(), is(26)); assertThat(commandsList, hasItems(CopyItemsCommand.class, DeleteItemsCommand.class, AddComponentToItemCommand.class)); assertThat(commandsList, hasItems(ItemTransformCommand.class, AddSelectionCommand.class, UpdateEntityComponentsCommand.class)); } }