/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library 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. */ package com.liferay.portlet.documentlibrary.service; import com.liferay.document.library.kernel.model.DLFileEntryConstants; import com.liferay.document.library.kernel.service.DLAppServiceUtil; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.repository.model.FileEntry; import com.liferay.portal.kernel.repository.model.FileVersion; import com.liferay.portal.kernel.service.ServiceContext; import com.liferay.portal.kernel.test.rule.AggregateTestRule; import com.liferay.portal.kernel.test.rule.Sync; import com.liferay.portal.kernel.test.rule.SynchronousDestinationTestRule; import com.liferay.portal.kernel.test.util.ServiceContextTestUtil; import com.liferay.portal.kernel.util.ContentTypes; import com.liferay.portal.kernel.util.StringPool; import com.liferay.portal.test.rule.LiferayIntegrationTestRule; import org.junit.Assert; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; /** * @author Alexander Chow */ @Sync public class DLFileVersionUpdateTest extends BaseDLAppTestCase { @ClassRule @Rule public static final AggregateTestRule aggregateTestRule = new AggregateTestRule( new LiferayIntegrationTestRule(), SynchronousDestinationTestRule.INSTANCE); @Test public void testWithExtensionWithContent() throws Exception { testVersionUpdate( _FULL_FILE_NAME, _ZERO_BYTES, ContentTypes.TEXT_PLAIN, _FULL_FILE_NAME, CONTENT.getBytes(), ContentTypes.TEXT_PLAIN); } @Test public void testWithExtensionWithoutContent() throws Exception { testVersionUpdate( _FULL_FILE_NAME, _ZERO_BYTES, ContentTypes.TEXT_PLAIN, _FULL_FILE_NAME, _ZERO_BYTES, ContentTypes.TEXT_PLAIN); } @Test public void testWithoutExtensionWithContent() throws Exception { testVersionUpdate( _BASE_FILE_NAME, _ZERO_BYTES, ContentTypes.APPLICATION_OCTET_STREAM, _BASE_FILE_NAME, CONTENT.getBytes(), ContentTypes.TEXT_PLAIN); } @Test public void testWithoutExtensionWithoutContent() throws Exception { testVersionUpdate( _BASE_FILE_NAME, _ZERO_BYTES, ContentTypes.APPLICATION_OCTET_STREAM, _BASE_FILE_NAME, _ZERO_BYTES, ContentTypes.APPLICATION_OCTET_STREAM); } protected void testVersionUpdate( String addFileName, byte[] addBytes, String addMimeType, String updateFileName, byte[] updateBytes, String updateMimeType) throws PortalException { String description = StringPool.BLANK; String changeLog = StringPool.BLANK; ServiceContext serviceContext = ServiceContextTestUtil.getServiceContext(group.getGroupId()); FileEntry fileEntry = DLAppServiceUtil.addFileEntry( group.getGroupId(), parentFolder.getFolderId(), addFileName, addMimeType, addFileName, description, changeLog, addBytes, serviceContext); fileEntry = DLAppServiceUtil.updateFileEntry( fileEntry.getFileEntryId(), updateFileName, updateMimeType, updateFileName, description, changeLog, false, updateBytes, serviceContext); FileVersion fileVersion = fileEntry.getFileVersion(); Assert.assertEquals( DLFileEntryConstants.VERSION_DEFAULT, fileVersion.getVersion()); Assert.assertEquals(updateMimeType, fileVersion.getMimeType()); Assert.assertEquals(updateBytes.length, fileVersion.getSize()); Assert.assertEquals( fileVersion.getExtension(), fileEntry.getExtension()); Assert.assertEquals(fileVersion.getMimeType(), fileEntry.getMimeType()); Assert.assertEquals(fileVersion.getSize(), fileEntry.getSize()); } private static final String _BASE_FILE_NAME = "Test"; private static final String _FULL_FILE_NAME = "Test.txt"; private static final byte[] _ZERO_BYTES = new byte[0]; }