/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kie.workbench.common.screens.projecteditor.client.handlers; import com.google.gwt.core.client.Callback; import org.guvnor.asset.management.model.RepositoryStructureModel; import org.guvnor.asset.management.service.RepositoryStructureService; import org.guvnor.common.services.project.client.security.ProjectController; import org.guvnor.common.services.project.context.ProjectContext; import org.guvnor.common.services.project.model.GAV; import org.guvnor.common.services.project.model.POM; import org.guvnor.structure.organizationalunit.OrganizationalUnit; import org.guvnor.structure.repositories.Repository; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.kie.workbench.common.screens.projecteditor.client.wizard.NewProjectWizard; import org.kie.workbench.common.widgets.client.handlers.NewResourcePresenter; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.uberfire.ext.editor.commons.client.validation.ValidatorWithReasonCallback; import org.uberfire.mocks.CallerMock; import org.uberfire.mvp.Command; import org.uberfire.workbench.type.AnyResourceTypeDefinition; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class NewProjectHandlerTest { private NewProjectHandler handler; @Mock NewProjectHandlerView view; @Mock ProjectContext context; @Mock NewProjectWizard wizard; @Mock RepositoryStructureService repositoryStructureService; @Mock Repository repository; @Mock RepositoryStructureModel model; @Mock ProjectController projectController; private AnyResourceTypeDefinition resourceType = mock(AnyResourceTypeDefinition.class); private NewResourcePresenter newResourcePresenter = mock(NewResourcePresenter.class); @Before public void setup() { handler = new NewProjectHandler(view, context, wizard, new CallerMock<RepositoryStructureService>(repositoryStructureService), projectController, resourceType); } @Test(expected = UnsupportedOperationException.class) public void testCreate() { handler.create(mock(org.guvnor.common.services.project.model.Package.class), "projectName", newResourcePresenter); } @Test(expected = UnsupportedOperationException.class) public void testValidate() { handler.validate("projectName", mock(ValidatorWithReasonCallback.class)); } @Test public void testAcceptContextNoActiveRepository() { when(context.getActiveRepository()).thenReturn(null); final Callback<Boolean, Void> callback = mock(Callback.class); handler.acceptContext(callback); verify(callback, times(1)).onSuccess(eq(false)); } @Test public void testAcceptContextWithUnmanagedActiveRepository() { when(context.getActiveRepository()).thenReturn(repository); when(repositoryStructureService.load(any(Repository.class), anyString())).thenReturn(model); when(model.isManaged()).thenReturn(false); final Callback<Boolean, Void> callback = mock(Callback.class); handler.acceptContext(callback); verify(callback, times(1)).onSuccess(eq(true)); } @Test public void testAcceptContextWithManagedActiveRepositoryIsMultiModule() { multiModuleTestHelp(true); } @Test public void testAcceptContextWithManagedActiveRepositoryIsNotMultiModule() { multiModuleTestHelp(false); } private void multiModuleTestHelp(boolean isMultiModule) { when(context.getActiveRepository()).thenReturn(repository); when(repositoryStructureService.load(any(Repository.class), anyString())).thenReturn(model); when(model.isManaged()).thenReturn(true); when(model.isMultiModule()).thenReturn(isMultiModule); final Callback<Boolean, Void> callback = mock(Callback.class); handler.acceptContext(callback); verify(callback, times(1)).onSuccess(eq(isMultiModule)); } @Test public void testGetCommandWithNoActiveRepository() { when(context.getActiveRepository()).thenReturn(null); final Command command = handler.getCommand(newResourcePresenter); assertNotNull(command); command.execute(); verify(view, times(1)).showNoRepositorySelectedPleaseSelectARepository(); verify(wizard, never()).start(); } @Test public void testGetCommandWithUnmanagedActiveRepository() { when(context.getActiveRepository()).thenReturn(repository); OrganizationalUnit organizationalUnit = mock(OrganizationalUnit.class); when(context.getActiveOrganizationalUnit()).thenReturn(organizationalUnit); when(organizationalUnit.getDefaultGroupId()).thenReturn("defaultGroupId"); when(repositoryStructureService.load(any(Repository.class), anyString())).thenReturn(model); when(model.isManaged()).thenReturn(false); final Command command = handler.getCommand(newResourcePresenter); assertNotNull(command); command.execute(); ArgumentCaptor<POM> pomArgumentCaptor = ArgumentCaptor.forClass(POM.class); verify(wizard, times(1)).initialise(pomArgumentCaptor.capture()); verify(wizard, times(1)).start(any(org.uberfire.client.callbacks.Callback.class), anyBoolean()); assertEquals("defaultGroupId", pomArgumentCaptor.getValue().getGav().getGroupId()); assertEquals("kjar", pomArgumentCaptor.getValue().getPackaging()); } @Test public void testGetCommandWithManagedActiveRepository() { when(context.getActiveRepository()).thenReturn(repository); when(repositoryStructureService.load(any(Repository.class), anyString())).thenReturn(model); when(model.isManaged()).thenReturn(true); final GAV gav = new GAV("groupID", "", "version"); final POM pom = new POM(gav); when(model.getPOM()).thenReturn(pom); final Command command = handler.getCommand(newResourcePresenter); assertNotNull(command); command.execute(); ArgumentCaptor<POM> pomArgumentCaptor = ArgumentCaptor.forClass(POM.class); verify(wizard).initialise(pomArgumentCaptor.capture()); POM capturedPOM = pomArgumentCaptor.getValue(); assertEquals("groupID", capturedPOM.getGav().getGroupId()); assertEquals("version", capturedPOM.getGav().getVersion()); assertEquals("kjar", capturedPOM.getPackaging()); verify(wizard, times(1)).initialise(any(POM.class)); verify(wizard, times(1)).start(any(org.uberfire.client.callbacks.Callback.class), anyBoolean()); } }