/*! * 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.platform.repository2.unified.jcr; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.junit.Before; import org.junit.Test; import org.pentaho.platform.api.mimetype.IMimeType; import org.pentaho.platform.api.mimetype.IPlatformMimeResolver; import org.pentaho.platform.api.repository2.unified.IRepositoryVersionManager; import org.pentaho.platform.repository2.unified.DefaultRepositoryVersionManager; public class DefaultRepositoryVersioningManagerTest { private static final DefaultRepositoryVersionManager defaultRepositoryVersionManagerFullTrue = new DefaultRepositoryVersionManager(); private static final DefaultRepositoryVersionManager defaultRepositoryVersionManagerPartialTrue = new DefaultRepositoryVersionManager(); private static final DefaultRepositoryVersionManager defaultRepositoryVersionManagerFalse = new DefaultRepositoryVersionManager(); private static final String FULL_VERSIONING_PATH = "/dir1/fullVersioning"; private static final String PART_VERSIONING_PATH = "/dir1/partVersioning"; private static final String NO_VERSIONING_PATH = "/dir1/noVersioning"; @Before public void setUp() { IPlatformMimeResolver platformMimeResolver = mock( IPlatformMimeResolver.class ); IMimeType mimeTypeMockFullTrue = mock( IMimeType.class ); IMimeType mimeTypeMockPartialTrue = mock( IMimeType.class ); IMimeType mimeTypeMockFalse = mock( IMimeType.class ); when( mimeTypeMockFullTrue.isVersionEnabled() ).thenReturn( true ); when( mimeTypeMockFullTrue.isVersionCommentEnabled() ).thenReturn( true ); when( mimeTypeMockPartialTrue.isVersionEnabled() ).thenReturn( true ); when( mimeTypeMockPartialTrue.isVersionCommentEnabled() ).thenReturn( false ); when( mimeTypeMockFalse.isVersionEnabled() ).thenReturn( false ); when( mimeTypeMockFalse.isVersionCommentEnabled() ).thenReturn( true ); when( platformMimeResolver.resolveMimeTypeForFileName( FULL_VERSIONING_PATH ) ).thenReturn( mimeTypeMockFullTrue ); when( platformMimeResolver.resolveMimeTypeForFileName( PART_VERSIONING_PATH ) ).thenReturn( mimeTypeMockPartialTrue ); when( platformMimeResolver.resolveMimeTypeForFileName( NO_VERSIONING_PATH ) ).thenReturn( mimeTypeMockFalse ); defaultRepositoryVersionManagerFullTrue.setMasterVersioning( true ); defaultRepositoryVersionManagerFullTrue.setMasterVersionComments( true ); defaultRepositoryVersionManagerFullTrue.setPlatformMimeResolver( platformMimeResolver ); defaultRepositoryVersionManagerPartialTrue.setMasterVersioning( true ); defaultRepositoryVersionManagerPartialTrue.setMasterVersionComments( false ); defaultRepositoryVersionManagerPartialTrue.setPlatformMimeResolver( platformMimeResolver ); defaultRepositoryVersionManagerFalse.setMasterVersioning( false ); defaultRepositoryVersionManagerFalse.setMasterVersionComments( true ); defaultRepositoryVersionManagerFalse.setPlatformMimeResolver( platformMimeResolver ); } /* * Test a file set to versioningEnable=True, versionCommentsEnabled=true with various combinations * of the master switch. */ @Test public void testFullTrue() { IRepositoryVersionManager repositoryVersionManager = defaultRepositoryVersionManagerFullTrue; assertTrue( repositoryVersionManager.isVersioningEnabled( FULL_VERSIONING_PATH ) ); assertTrue( repositoryVersionManager.isVersionCommentEnabled( FULL_VERSIONING_PATH ) ); repositoryVersionManager = defaultRepositoryVersionManagerPartialTrue; assertTrue( repositoryVersionManager.isVersioningEnabled( FULL_VERSIONING_PATH ) ); assertFalse( repositoryVersionManager.isVersionCommentEnabled( FULL_VERSIONING_PATH ) ); repositoryVersionManager = defaultRepositoryVersionManagerFalse; assertFalse( repositoryVersionManager.isVersioningEnabled( FULL_VERSIONING_PATH ) ); assertFalse( repositoryVersionManager.isVersionCommentEnabled( FULL_VERSIONING_PATH ) ); } /* * Test a file set to versioningEnable=True, versionCommentsEnabled=false with various combinations * of the master switch. */ @Test public void testPartialTrue() { IRepositoryVersionManager repositoryVersionManager = defaultRepositoryVersionManagerFullTrue; assertTrue( repositoryVersionManager.isVersioningEnabled( PART_VERSIONING_PATH ) ); assertFalse( repositoryVersionManager.isVersionCommentEnabled( PART_VERSIONING_PATH ) ); repositoryVersionManager = defaultRepositoryVersionManagerPartialTrue; assertTrue( repositoryVersionManager.isVersioningEnabled( PART_VERSIONING_PATH ) ); assertFalse( repositoryVersionManager.isVersionCommentEnabled( PART_VERSIONING_PATH ) ); repositoryVersionManager = defaultRepositoryVersionManagerFalse; assertFalse( repositoryVersionManager.isVersioningEnabled( PART_VERSIONING_PATH ) ); assertFalse( repositoryVersionManager.isVersionCommentEnabled( PART_VERSIONING_PATH ) ); } /* * Test a file set to versioningEnable=false, versionCommentsEnabled=false with various combinations * of the master switch. */ @Test public void testFalse() { IRepositoryVersionManager repositoryVersionManager = defaultRepositoryVersionManagerFullTrue; assertFalse( repositoryVersionManager.isVersioningEnabled( NO_VERSIONING_PATH ) ); assertFalse( repositoryVersionManager.isVersionCommentEnabled( NO_VERSIONING_PATH ) ); repositoryVersionManager = defaultRepositoryVersionManagerPartialTrue; assertFalse( repositoryVersionManager.isVersioningEnabled( NO_VERSIONING_PATH ) ); assertFalse( repositoryVersionManager.isVersionCommentEnabled( NO_VERSIONING_PATH ) ); repositoryVersionManager = defaultRepositoryVersionManagerFalse; assertFalse( repositoryVersionManager.isVersioningEnabled( NO_VERSIONING_PATH ) ); assertFalse( repositoryVersionManager.isVersionCommentEnabled( NO_VERSIONING_PATH ) ); } }