/* * Copyright 2016 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.library.client.screens; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.guvnor.common.services.project.model.Project; import org.guvnor.structure.organizationalunit.OrganizationalUnit; import org.guvnor.structure.repositories.Repository; import org.jboss.errai.ui.client.local.spi.TranslationService; import org.kie.workbench.common.screens.explorer.client.utils.Classifier; import org.kie.workbench.common.screens.explorer.model.FolderItem; import org.kie.workbench.common.screens.explorer.model.FolderItemType; import org.kie.workbench.common.screens.library.api.AssetInfo; import org.kie.workbench.common.screens.library.api.LibraryService; import org.kie.workbench.common.screens.library.api.ProjectAssetsQuery; import org.kie.workbench.common.screens.library.api.ProjectInfo; import org.kie.workbench.common.screens.library.client.events.AssetDetailEvent; import org.kie.workbench.common.screens.library.client.util.LibraryPlaces; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; import org.uberfire.backend.vfs.Path; import org.uberfire.client.workbench.type.ClientResourceType; import org.uberfire.ext.widgets.common.client.common.BusyIndicatorView; import org.uberfire.mocks.EventSourceMock; import static org.mockito.Matchers.any; import static org.mockito.Mockito.*; public class ProjectScreenTestBase { @Mock protected ProjectScreen.View view; @Mock protected LibraryPlaces libraryPlaces; @Mock protected TranslationService ts; @Mock protected LibraryService libraryService; @Mock protected Classifier assetClassifier; @Mock protected EventSourceMock<AssetDetailEvent> assetDetailEvent; @Mock protected BusyIndicatorView busyIndicatorView; @Captor protected ArgumentCaptor<ProjectAssetsQuery> queryArgumentCaptor; protected ProjectScreen projectScreen; protected ProjectInfo projectInfo; protected List<AssetInfo> assets = new ArrayList<>(); protected void mockClientResourceType() { final ClientResourceType clientResourceType = mock(ClientResourceType.class); doReturn(".txt").when(clientResourceType).getSuffix(); doReturn("Text file").when(clientResourceType).getDescription(); doReturn(clientResourceType).when(assetClassifier).findResourceType(any(FolderItem.class)); } protected ProjectInfo createProjectInfo() { final Path rootPath = mock(Path.class); doReturn("git://projectPath").when(rootPath).toURI(); final Project project = mock(Project.class); doReturn("projectName").when(project).getProjectName(); doReturn("projectPath").when(project).getIdentifier(); doReturn(rootPath).when(project).getRootPath(); final OrganizationalUnit organizationalUnit = mock(OrganizationalUnit.class); final Repository repository = mock(Repository.class); final String branch = "master"; return new ProjectInfo(organizationalUnit, repository, branch, project); } protected AssetInfo getAssetInfo(final String assetPathString, final FolderItemType itemType, final String itemName) { final Path assetPath = mock(Path.class); doReturn(assetPathString).when(assetPath).toURI(); final FolderItem asset = mock(FolderItem.class); doReturn(itemType).when(asset).getType(); doReturn(itemName).when(asset).getFileName(); doReturn(assetPath).when(asset).getItem(); return new AssetInfo(asset, new Date(), new Date()); } protected void mockAssets() { assets.add(getAssetInfo("git://projectPath/folder1", FolderItemType.FOLDER, "folder1")); assets.add(getAssetInfo("git://projectPath/file2.txt", FolderItemType.FILE, "file2.txt")); assets.add(getAssetInfo("git://projectPath/file3.txt", FolderItemType.FILE, "file3.txt")); doReturn(assets).when(libraryService).getProjectAssets(any(ProjectAssetsQuery.class)); } }