/*! * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright (c) 2002-2015 Pentaho Corporation.. All rights reserved. */ package org.pentaho.reporting.designer.extensions.pentaho.repository.model; import static org.junit.Assert.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.doReturn; import javax.swing.tree.TreePath; import org.apache.commons.vfs2.FileName; import org.apache.commons.vfs2.FileObject; import org.apache.commons.vfs2.FileSystemException; import org.apache.commons.vfs2.FileType; import org.junit.Before; import org.junit.Test; public class RepositoryTreeModelTest { FileObject repositoryRoot, childFile1, childFile2, childFile3, childFile4; FileName childFileName1, childFileName2, childFileName3; @Before public void setUp() throws Exception { repositoryRoot = mock( FileObject.class ); childFile1 = mock( FileObject.class ); childFile2 = mock( FileObject.class ); childFile3 = mock( FileObject.class ); childFile4 = mock( FileObject.class ); childFileName1 = mock( FileName.class ); childFileName2 = mock( FileName.class ); childFileName3 = mock( FileName.class ); } @Test public void testRepositoryTreeModel() { RepositoryTreeModel treeModel = new RepositoryTreeModel(); assertNotNull( treeModel ); } @Test public void testRepositoryTreeModelFileObjectStringArrayBoolean() { String[] filters = new String[] { "manny", "moe", "jack" }; RepositoryTreeModel treeModel = new RepositoryTreeModel( repositoryRoot, filters, true ); assertNotNull( treeModel ); assertArrayEquals( filters, treeModel.getFilters() ); assertNotNull( treeModel.getRoot() ); assertTrue( treeModel.isShowFoldersOnly() ); } @Test public void testIsSetShowFoldersOnly() { RepositoryTreeModel treeModel = new RepositoryTreeModel(); assertNotNull( treeModel ); assertTrue( treeModel.isShowFoldersOnly() ); treeModel.setShowFoldersOnly( false ); assertFalse( treeModel.isShowFoldersOnly() ); } @Test public void testIsSetShowHiddenFiles() { RepositoryTreeModel treeModel = new RepositoryTreeModel(); assertNotNull( treeModel ); assertFalse( treeModel.isShowHiddenFiles() ); treeModel.setShowHiddenFiles( true ); assertTrue( treeModel.isShowHiddenFiles() ); } @Test public void testGetSetFilters() { String[] filters = new String[] { "manny", "moe", "jack" }; RepositoryTreeModel treeModel = new RepositoryTreeModel(); assertNotNull( treeModel ); assertEquals( 0, treeModel.getFilters().length ); treeModel.setFilters( filters ); assertArrayEquals( filters, treeModel.getFilters() ); } @Test public void testGetSetFileSystemRoot() { RepositoryTreeModel treeModel = new RepositoryTreeModel(); assertNotNull( treeModel ); assertNull( treeModel.getFileSystemRoot() ); treeModel.setFileSystemRoot( repositoryRoot ); assertEquals( repositoryRoot, treeModel.getFileSystemRoot() ); } @Test public void testGetChild() { RepositoryTreeModel treeModel = new RepositoryTreeModel(); assertNotNull( treeModel ); assertNull( treeModel.getFileSystemRoot() ); FileObject[] childFiles = new FileObject[] { childFile1, childFile2, childFile3 }; try { doReturn( childFiles ).when( repositoryRoot ).getChildren(); } catch ( FileSystemException e ) { e.printStackTrace(); } treeModel.setFileSystemRoot( repositoryRoot ); Object value = treeModel.getChild( repositoryRoot, 1 ); assertEquals( childFile2, value ); treeModel.setShowFoldersOnly( true ); try { doReturn( FileType.FILE ).when( childFile1 ).getType(); doReturn( FileType.FILE ).when( childFile2 ).getType(); doReturn( FileType.FILE ).when( childFile3 ).getType(); } catch ( FileSystemException e ) { e.printStackTrace(); } value = treeModel.getChild( repositoryRoot, 0 ); assertEquals( childFile1, value ); treeModel.setShowHiddenFiles( false ); try { doReturn( FileType.FOLDER ).when( childFile1 ).getType(); doReturn( FileType.FOLDER ).when( childFile2 ).getType(); doReturn( FileType.FOLDER ).when( childFile3 ).getType(); doReturn( true ).when( childFile1 ).isHidden(); doReturn( true ).when( childFile2 ).isHidden(); doReturn( true ).when( childFile3 ).isHidden(); } catch ( FileSystemException e ) { e.printStackTrace(); } value = treeModel.getChild( repositoryRoot, 2 ); assertEquals( childFile3, value ); } @Test public void testGetChildCount() { RepositoryTreeModel treeModel = new RepositoryTreeModel(); assertNotNull( treeModel ); treeModel.setFileSystemRoot( repositoryRoot ); assertEquals( 0, treeModel.getChildCount( repositoryRoot ) ); FileObject[] childFiles = new FileObject[] { childFile1, childFile2, childFile3 }; try { doReturn( childFiles ).when( repositoryRoot ).getChildren(); doReturn( FileType.FOLDER ).when( repositoryRoot ).getType(); doReturn( FileType.FOLDER ).when( childFile1 ).getType(); doReturn( FileType.FOLDER ).when( childFile2 ).getType(); doReturn( FileType.FOLDER ).when( childFile3 ).getType(); } catch ( FileSystemException e ) { e.printStackTrace(); } assertEquals( 3, treeModel.getChildCount( repositoryRoot ) ); } @Test public void testIsLeaf() { RepositoryTreeModel treeModel = new RepositoryTreeModel(); assertNotNull( treeModel ); treeModel.setFileSystemRoot( repositoryRoot ); assertTrue( treeModel.isLeaf( repositoryRoot ) ); } @Test public void testValueForPathChanged() { RepositoryTreeModel treeModel = new RepositoryTreeModel(); assertNotNull( treeModel ); treeModel.valueForPathChanged( null, null ); } @Test public void testGetIndexOfChild() { RepositoryTreeModel treeModel = new RepositoryTreeModel(); assertNotNull( treeModel ); treeModel.setFileSystemRoot( repositoryRoot ); treeModel.setShowFoldersOnly( false ); FileObject[] childFiles = new FileObject[] { childFile1, childFile2, childFile3 }; try { doReturn( childFiles ).when( repositoryRoot ).getChildren(); doReturn( childFileName1 ).when( childFile1 ).getName(); doReturn( childFileName2 ).when( childFile2 ).getName(); doReturn( childFileName3 ).when( childFile3 ).getName(); doReturn( "BaseName1" ).when( childFileName1 ).getBaseName(); doReturn( "BaseName2" ).when( childFileName2 ).getBaseName(); doReturn( "BaseName3" ).when( childFileName3 ).getBaseName(); } catch ( FileSystemException e ) { e.printStackTrace(); } assertEquals( 1, treeModel.getIndexOfChild( repositoryRoot, childFile2 ) ); assertEquals( -1, treeModel.getIndexOfChild( repositoryRoot, childFile4 ) ); } @Test public void testGetTreePathForSelection() { RepositoryTreeModel treeModel = new RepositoryTreeModel(); assertNotNull( treeModel ); treeModel.setFileSystemRoot( repositoryRoot ); FileObject[] childFiles = new FileObject[] { childFile1, childFile2, childFile3 }; try { doReturn( childFiles ).when( repositoryRoot ).getChildren(); doReturn( childFileName1 ).when( childFile1 ).getName(); doReturn( childFileName2 ).when( childFile2 ).getName(); doReturn( childFileName3 ).when( childFile3 ).getName(); doReturn( repositoryRoot ).when( childFile1 ).getParent(); doReturn( repositoryRoot ).when( childFile2 ).getParent(); doReturn( repositoryRoot ).when( childFile3 ).getParent(); TreePath path = treeModel.getTreePathForSelection( childFile2, null ); assertEquals( 2, path.getPath().length ); assertEquals( childFile2, path.getLastPathComponent() ); } catch ( FileSystemException e ) { e.printStackTrace(); } } @Test public void testFindNodeByName() { FileObject[] childFiles = new FileObject[] { childFile1, childFile2, childFile3 }; try { doReturn( FileType.FOLDER ).when( repositoryRoot ).getType(); doReturn( childFiles ).when( repositoryRoot ).getChildren(); doReturn( childFileName1 ).when( childFile1 ).getName(); doReturn( childFileName2 ).when( childFile2 ).getName(); doReturn( childFileName3 ).when( childFile3 ).getName(); doReturn( "BaseName1" ).when( childFileName1 ).getBaseName(); doReturn( "BaseName2" ).when( childFileName2 ).getBaseName(); doReturn( "BaseName3" ).when( childFileName3 ).getBaseName(); doReturn( childFile2 ).when( repositoryRoot ).getChild( "BaseName2" ); assertEquals( childFile2, RepositoryTreeModel.findNodeByName( repositoryRoot, "BaseName2" ) ); } catch ( FileSystemException e ) { e.printStackTrace(); } } }