/* * Copyright 2012 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.guvnor.organizationalunit.manager.client.editor; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import com.google.gwtmockito.GwtMock; import com.google.gwtmockito.GwtMockitoTestRunner; import org.guvnor.organizationalunit.manager.client.editor.popups.AddOrganizationalUnitPopup; import org.guvnor.organizationalunit.manager.client.editor.popups.EditOrganizationalUnitPopup; import org.guvnor.structure.client.security.OrganizationalUnitController; import org.guvnor.structure.events.AfterCreateOrganizationalUnitEvent; import org.guvnor.structure.events.AfterDeleteOrganizationalUnitEvent; import org.guvnor.structure.organizationalunit.OrganizationalUnit; import org.guvnor.structure.organizationalunit.OrganizationalUnitService; import org.guvnor.structure.repositories.RepositoryService; import org.jboss.errai.common.client.api.Caller; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.uberfire.mocks.CallerMock; import org.uberfire.mocks.EventSourceMock; import static org.mockito.Mockito.*; @RunWith(GwtMockitoTestRunner.class) public class OrganizationalUnitManagerPresenterTest { @GwtMock private AddOrganizationalUnitPopup addOrganizationalUnitPopup; @GwtMock private EditOrganizationalUnitPopup editOrganizationalUnitPopup; @Mock private EventSourceMock<AfterCreateOrganizationalUnitEvent> createOUEvent; @Mock private EventSourceMock<AfterDeleteOrganizationalUnitEvent> deleteOUEvent; @Mock private OrganizationalUnitController organizationalUnitController; @Mock private OrganizationalUnit organizationalUnitA; private OrganizationalUnitManagerView view = mock( OrganizationalUnitManagerView.class ); private OrganizationalUnitService mockOUService = mock( OrganizationalUnitService.class ); private Caller<OrganizationalUnitService> organizationalUnitService = new CallerMock<OrganizationalUnitService>( mockOUService ); private RepositoryService mockRepositoryService = mock( RepositoryService.class ); private Caller<RepositoryService> repositoryService = new CallerMock<RepositoryService>( mockRepositoryService ); private OrganizationalUnitManagerPresenterImpl presenter; private OrganizationalUnit mockOU = mock( OrganizationalUnit.class ); @Before @SuppressWarnings("unchecked") public void setup() { presenter = new OrganizationalUnitManagerPresenterImpl( view, organizationalUnitService, repositoryService, organizationalUnitController, addOrganizationalUnitPopup, editOrganizationalUnitPopup, createOUEvent, deleteOUEvent ); when( mockOU.getName() ).thenReturn( "mock" ); when( mockOU.getOwner() ).thenReturn( "mock" ); when( mockOU.getDefaultGroupId() ).thenReturn( "mock" ); when( mockOUService.getOrganizationalUnits() ).thenReturn( new ArrayList<OrganizationalUnit>() ); when( mockOUService.getOrganizationalUnit( anyString() ) ).thenReturn( organizationalUnitA ); when( mockOUService.createOrganizationalUnit( any( String.class ), any( String.class ), any( String.class ), any( Collection.class ) ) ).thenReturn( mockOU ); when(organizationalUnitController.canCreateOrgUnits()).thenReturn(false); when(organizationalUnitController.canUpdateOrgUnit(organizationalUnitA)).thenReturn(true); when(organizationalUnitController.canDeleteOrgUnit(organizationalUnitA)).thenReturn(true); when(organizationalUnitA.getRepositories()).thenReturn(Collections.EMPTY_LIST); presenter.loadOrganizationalUnits(); } @Test public void testOnStartup() { presenter.onStartup(); verify(view).setAddOrganizationalUnitEnabled(false); verify(view).setDeleteOrganizationalUnitEnabled(false); verify(view).setDeleteOrganizationalUnitEnabled(false); } @Test public void testSelectOrgUnit() { presenter.onStartup(); presenter.organizationalUnitSelected(organizationalUnitA); verify(view).setDeleteOrganizationalUnitEnabled(true); verify(view).setDeleteOrganizationalUnitEnabled(true); } @Test public void testCreateOUEvent() { presenter.createNewOrganizationalUnit( mockOU.getName(), mockOU.getOwner(), mockOU.getDefaultGroupId() ); verify( createOUEvent, times( 1 ) ).fire( any( AfterCreateOrganizationalUnitEvent.class ) ); } @Test public void testDeleteOUEvent() { presenter.deleteOrganizationalUnit( mockOU ); verify( deleteOUEvent, times( 1 ) ).fire( any( AfterDeleteOrganizationalUnitEvent.class ) ); } }