package de.juwimm.cms.remote.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import junit.framework.Assert;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.easymock.EasyMock;
import org.easymock.LogicalOperator;
import de.juwimm.cms.authorization.model.UserHbm;
import de.juwimm.cms.authorization.model.UserHbmDao;
import de.juwimm.cms.authorization.model.UserHbmImpl;
import de.juwimm.cms.common.Constants;
import de.juwimm.cms.common.Constants.ResourceUsageState;
import de.juwimm.cms.exceptions.AlreadyCheckedOutException;
import de.juwimm.cms.exceptions.UserException;
import de.juwimm.cms.model.ContentHbm;
import de.juwimm.cms.model.ContentHbmDao;
import de.juwimm.cms.model.ContentHbmImpl;
import de.juwimm.cms.model.ContentVersionHbm;
import de.juwimm.cms.model.ContentVersionHbmDao;
import de.juwimm.cms.model.ContentVersionHbmImpl;
import de.juwimm.cms.model.DocumentHbm;
import de.juwimm.cms.model.DocumentHbmDao;
import de.juwimm.cms.model.DocumentHbmImpl;
import de.juwimm.cms.model.LockHbm;
import de.juwimm.cms.model.LockHbmDao;
import de.juwimm.cms.model.LockHbmImpl;
import de.juwimm.cms.model.PictureHbm;
import de.juwimm.cms.model.PictureHbmDao;
import de.juwimm.cms.model.PictureHbmImpl;
import de.juwimm.cms.model.UnitHbm;
import de.juwimm.cms.model.UnitHbmImpl;
import de.juwimm.cms.model.ViewComponentHbm;
import de.juwimm.cms.model.ViewComponentHbmDao;
import de.juwimm.cms.model.ViewComponentHbmImpl;
import de.juwimm.cms.remote.ContentServiceSpringImpl;
import de.juwimm.cms.vo.ContentValue;
import de.juwimm.cms.vo.ContentVersionValue;
import de.juwimm.cms.vo.DocumentSlimValue;
import de.juwimm.cms.vo.PictureSlimstValue;
/**
* @author fzalum
*
*/
public class ContentServiceTest extends AbstractServiceTest {
private static Log log = LogFactory.getLog(ContentServiceTest.class);
List<ContentVersionHbm> mockContentVersions1;
List<ContentVersionHbm> mockContentVersions2;
List<ContentVersionHbm> mockContentVersions3;
List<ContentVersionHbm> mockContentVersions4;
List<PictureHbm> mockPictures;
List<DocumentHbm> mockDocuments;
DocumentHbm documentToDelete;
String contentWithDocumentTemplate = "<documents dcfname='de.juwimm.cms.content.modules.Documents' description='test' label='Dokumente'>" + " <document displayType='block' documentName='something.pdf' src='#{documentId}'>test</document>" + " </documents>";
String contentWithPictureTemplate1 = "<picture dcfname='de.juwimm.cms.content.modules.Picture' description='#{imageId}' label='Bild'>" + "<image height='16' src='30' type='center' width='16'><legend/><filename>cms_16x16.gif</filename><alttext/></image>" + "</picture>";
String contentWithPictureTemplate2 = "<picture dcfname='picture' label='Teaser Image (198 px Breite)'> <image height='60' src='#{imageId}' type='center' width='82'> <legend><![CDATA[]]></legend> <filename><![CDATA[bda.gif]]></filename> <alttext><![CDATA[]]></alttext> </image></picture>";
String contentTemplate = "<source>" + "<head/>" + " <all>" + " #{contentDocument}" + " #{contentPicture}" + " </all>" + "</source>";
DocumentHbmDao documentDaoMock;
PictureHbmDao pictureDaoMock;
ContentVersionHbmDao contentVersionDaoMock;
ContentServiceSpringImpl contentService;
ViewComponentHbmDao viewComponentMock;
ContentHbmDao contentDaoMock;
LockHbmDao lockDaoMock;
UserHbmDao userDaoMock;
ViewComponentHbm rootViewComponent;
List<ViewComponentHbm> roots;
/**
*
* @param imageId
* @param documentId
* @return
*/
private String createNewContentXml1(Integer imageId, Integer documentId) {
return createContentXml(contentWithPictureTemplate1, contentWithDocumentTemplate, imageId, documentId);
}
/**
*
* @param imageId
* @param documentId
* @return
*/
private String createNewContentXml2(Integer imageId, Integer documentId) {
return createContentXml(contentWithPictureTemplate2, contentWithDocumentTemplate, imageId, documentId);
}
private String createContentXml(String templateImage, String templateDocument, Integer imageId, Integer documentId) {
return contentTemplate.replace("#{contentDocument}", (documentId != null ? templateDocument.replace("#{documentId}", documentId.toString()) : "")).replace("#{contentPicture}", (imageId != null ? templateImage.replace("#{imageId}", imageId.toString()) : ""));
}
/**
*
* @param version
* @param imageId
* @param documentId
* @return
*/
private ContentVersionHbm createContentVersion1(String version, Integer imageId, Integer documentId) {
ContentVersionHbm mockContentVersion = new ContentVersionHbmImpl();
mockContentVersion.setText(createNewContentXml1(imageId, documentId));
mockContentVersion.setVersion(version);
return mockContentVersion;
}
/**
*
* @param version
* @param imageId
* @param documentId
* @return
*/
private ContentVersionHbm createContentVersion2(String version, Integer imageId, Integer documentId) {
ContentVersionHbm mockContentVersion = new ContentVersionHbmImpl();
mockContentVersion.setText(createNewContentXml2(imageId, documentId));
mockContentVersion.setVersion(version);
return mockContentVersion;
}
@Override
protected void setUp() throws Exception {
super.setUp();
//contentVersion
mockContentVersions1 = new ArrayList<ContentVersionHbm>();
mockContentVersions2 = new ArrayList<ContentVersionHbm>();
mockContentVersions3 = new ArrayList<ContentVersionHbm>();
mockContentVersions4 = new ArrayList<ContentVersionHbm>();
mockContentVersions1.add(createContentVersion1("1", null, 1));
mockContentVersions1.add(createContentVersion1("2", null, 2));
mockContentVersions1.add(createContentVersion1("3", 11, 2));
mockContentVersions2.add(createContentVersion2("1", null, null));
mockContentVersions2.add(createContentVersion2(Constants.PUBLISH_VERSION, 13, null));
mockContentVersions3.add(createContentVersion1("1", 11, 1));
mockContentVersions3.add(createContentVersion1("2", null, 1));
mockContentVersions3.add(createContentVersion1("3", 12, 1));
mockContentVersions4.add(createContentVersion1("1", null, null));
mockContentVersions4.add(createContentVersion1("2", null, null));
mockContentVersions4.add(createContentVersion1(Constants.PUBLISH_VERSION, null, 3));
//pictures
mockPictures = new ArrayList<PictureHbm>();
mockPictures.add(createPictureHbm(11));
mockPictures.add(createPictureHbm(12));
mockPictures.add(createPictureHbm(13));
//documents
mockDocuments = new ArrayList<DocumentHbm>();
mockDocuments.add(createDocumentHbm(1));
mockDocuments.add(createDocumentHbm(2));
mockDocuments.add(createDocumentHbm(3));
documentToDelete = createDocumentHbm(1);
UnitHbm unit = new UnitHbmImpl();
unit.setUnitId(1);
documentToDelete.setUnit(unit);
contentService = new ContentServiceSpringImpl();
viewComponentMock = EasyMock.createMock(ViewComponentHbmDao.class);
contentService.setViewComponentHbmDao(viewComponentMock);
contentVersionDaoMock = EasyMock.createMock(ContentVersionHbmDao.class);
contentService.setContentVersionHbmDao(contentVersionDaoMock);
documentDaoMock = EasyMock.createMock(DocumentHbmDao.class);
contentService.setDocumentHbmDao(documentDaoMock);
pictureDaoMock = EasyMock.createMock(PictureHbmDao.class);
contentService.setPictureHbmDao(pictureDaoMock);
contentDaoMock = EasyMock.createMock(ContentHbmDao.class);
contentService.setContentHbmDao(contentDaoMock);
lockDaoMock = EasyMock.createMock(LockHbmDao.class);
contentService.setLockHbmDao(lockDaoMock);
userDaoMock = EasyMock.createMock(UserHbmDao.class);
contentService.setUserHbmDao(userDaoMock);
//create tree of view components
rootViewComponent = createViewComponent(0);
ViewComponentHbmImpl child1 = createViewComponent(1);
ViewComponentHbmImpl child2 = createViewComponent(2);
ViewComponentHbmImpl child3 = createViewComponent(3);
ViewComponentHbmImpl child31 = createViewComponent(4);
List<ViewComponentHbmImpl> children1 = new ArrayList<ViewComponentHbmImpl>();
children1.add(child1);
children1.add(child2);
children1.add(child3);
List<ViewComponentHbmImpl> children2 = new ArrayList<ViewComponentHbmImpl>();
children2.add(child31);
rootViewComponent.setChildren(children1);
child3.setChildren(children2);
roots = new ArrayList<ViewComponentHbm>();
roots.add(rootViewComponent);
}
ViewComponentHbmImpl createViewComponent(Integer id) {
ViewComponentHbmImpl view = new ViewComponentHbmImpl();
view.setViewComponentId(id);
return view;
}
private PictureHbm createPictureHbm(Integer pictureId) {
return createPictureHbm(pictureId, pictureId);
}
private PictureHbm createPictureHbm(Integer pictureId, Integer unitId) {
PictureHbm picture = new PictureHbmImpl();
picture.setPictureId(pictureId);
picture.setHeight(1);
picture.setWidth(1);
UnitHbm unit = new UnitHbmImpl();
unit.setUnitId(unitId);
picture.setUnit(unit);
return picture;
}
private DocumentHbm createDocumentHbm(Integer documentId) {
DocumentHbm document = new DocumentHbmImpl();
UnitHbm unit = new UnitHbmImpl();
unit.setUnitId(documentId);
document.setDocumentId(documentId);
document.setUnit(unit);
return createDocumentHbm(documentId, documentId);
}
private DocumentHbm createDocumentHbm(Integer documentId, Integer unitId) {
DocumentHbm document = new DocumentHbmImpl();
UnitHbm unit = new UnitHbmImpl();
unit.setUnitId(unitId);
document.setDocumentId(documentId);
document.setUnit(unit);
return document;
}
public void testGetUnusedResources4Unit1() {
EasyMock.expect(viewComponentMock.findRootViewComponents4Unit(EasyMock.anyInt())).andReturn(roots);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions1);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions2);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(new ArrayList<ContentVersionHbm>()).times(3);
EasyMock.expect(documentDaoMock.findAll(EasyMock.anyInt())).andReturn(mockDocuments);
EasyMock.expect(pictureDaoMock.findAllPerUnit(EasyMock.anyInt())).andReturn(mockPictures);
EasyMock.replay(viewComponentMock);
EasyMock.replay(contentVersionDaoMock);
EasyMock.replay(documentDaoMock);
EasyMock.replay(pictureDaoMock);
Map<Object, ResourceUsageState> result = null;
try {
result = contentService.getResources4Unit(1, true, false, true, false);
} catch (UserException e) {
log.error("Exception in content service.",e);
Assert.assertFalse(true);
}
EasyMock.verify(contentVersionDaoMock);
EasyMock.verify(viewComponentMock);
EasyMock.verify(documentDaoMock);
EasyMock.verify(pictureDaoMock);
Assert.assertEquals(4, result.size());
for (Entry<Object, ResourceUsageState> resource : result.entrySet()) {
if (resource.getKey() instanceof DocumentSlimValue) {
if (((DocumentSlimValue) resource.getKey()).getDocumentId().equals(1)) {
if (resource.getValue() == ResourceUsageState.Used) {
Assert.assertTrue(false);
}
}
if (((DocumentSlimValue) resource.getKey()).getDocumentId().equals(2)) {
if (resource.getValue() == ResourceUsageState.UsedInOlderVersions) {
Assert.assertTrue(false);
}
}
} else if (resource.getKey() instanceof PictureSlimstValue) {
if (resource.getValue() == ResourceUsageState.Used) {
// Assert.assertTrue(false);
}
}
}
}
public void testGetUnusedResources4Unit2() {
EasyMock.expect(viewComponentMock.findRootViewComponents4Unit(EasyMock.anyInt())).andReturn(roots);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions1);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions2);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(new ArrayList<ContentVersionHbm>()).times(3);
EasyMock.expect(documentDaoMock.findAll(EasyMock.anyInt())).andReturn(mockDocuments);
EasyMock.expect(pictureDaoMock.findAllPerUnit(EasyMock.anyInt())).andReturn(mockPictures);
EasyMock.replay(viewComponentMock);
EasyMock.replay(contentVersionDaoMock);
EasyMock.replay(documentDaoMock);
EasyMock.replay(pictureDaoMock);
Map<Object, ResourceUsageState> result = null;
try {
result = contentService.getResources4Unit(1, false, true, false, true);
} catch (UserException e) {
log.error("Exception in content service.",e);
Assert.assertFalse(true);
}
EasyMock.verify(contentVersionDaoMock);
EasyMock.verify(viewComponentMock);
EasyMock.verify(documentDaoMock);
EasyMock.verify(pictureDaoMock);
Assert.assertEquals(2, result.size());
for (Entry<Object, ResourceUsageState> resource : result.entrySet()) {
if (resource.getKey() instanceof DocumentSlimValue) {
if (((DocumentSlimValue) resource.getKey()).getDocumentId().equals(3)) {
if (resource.getValue() != ResourceUsageState.Unsused) {
Assert.assertTrue(false);
}
}
} else if (resource.getKey() instanceof PictureSlimstValue) {
if (((PictureSlimstValue) resource.getKey()).getPictureId().equals(12)) {
if (resource.getValue() != ResourceUsageState.Unsused) {
Assert.assertTrue(false);
}
}
}
}
}
public void testGetUnusedResources4Unit3() {
EasyMock.expect(viewComponentMock.findRootViewComponents4Unit(EasyMock.anyInt())).andReturn(roots);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions1);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions2);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(new ArrayList<ContentVersionHbm>()).times(3);
EasyMock.expect(documentDaoMock.findAll(EasyMock.anyInt())).andReturn(mockDocuments);
EasyMock.expect(pictureDaoMock.findAllPerUnit(EasyMock.anyInt())).andReturn(mockPictures);
EasyMock.replay(viewComponentMock);
EasyMock.replay(contentVersionDaoMock);
EasyMock.replay(documentDaoMock);
EasyMock.replay(pictureDaoMock);
Map<Object, ResourceUsageState> result = null;
try {
result = contentService.getResources4Unit(1, true, true, true, true);
} catch (UserException e) {
log.error("Exception in content service.",e);
Assert.assertFalse(true);
}
EasyMock.verify(contentVersionDaoMock);
EasyMock.verify(viewComponentMock);
EasyMock.verify(documentDaoMock);
EasyMock.verify(pictureDaoMock);
Assert.assertEquals(6, result.size());
}
public void testGetUnusedResources4Unit4() {
EasyMock.expect(viewComponentMock.findRootViewComponents4Unit(EasyMock.anyInt())).andReturn(roots);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions1);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions2);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(new ArrayList<ContentVersionHbm>()).times(3);
EasyMock.expect(documentDaoMock.findAll(EasyMock.anyInt())).andReturn(mockDocuments);
EasyMock.expect(pictureDaoMock.findAllPerUnit(EasyMock.anyInt())).andReturn(mockPictures);
EasyMock.replay(viewComponentMock);
EasyMock.replay(contentVersionDaoMock);
EasyMock.replay(documentDaoMock);
EasyMock.replay(pictureDaoMock);
Map<Object, ResourceUsageState> result = null;
try {
result = contentService.getResources4Unit(1, true, true, false, false);
} catch (UserException e) {
Assert.assertFalse(true);
}
EasyMock.verify(contentVersionDaoMock);
EasyMock.verify(viewComponentMock);
EasyMock.verify(documentDaoMock);
EasyMock.verify(pictureDaoMock);
Assert.assertEquals(3, result.size());
for (Entry<Object, ResourceUsageState> resource : result.entrySet()) {
if (resource.getKey() instanceof DocumentSlimValue) {
if (((DocumentSlimValue) resource.getKey()).getDocumentId().equals(1)) {
if (resource.getValue() == ResourceUsageState.Used) {
Assert.assertTrue(false);
}
}
if (((DocumentSlimValue) resource.getKey()).getDocumentId().equals(2)) {
if (resource.getValue() == ResourceUsageState.UsedInOlderVersions) {
Assert.assertTrue(false);
}
}
if (((DocumentSlimValue) resource.getKey()).getDocumentId().equals(2)) {
if (resource.getValue() == ResourceUsageState.UsedInOlderVersions) {
Assert.assertTrue(false);
}
}
}
}
}
public void testGetDocumentUsage1() {
DocumentHbm mockDocument = createDocumentHbm(1);
EasyMock.expect(viewComponentMock.findRootViewComponents4Unit(EasyMock.anyInt())).andReturn(roots);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions1);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions2);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(new ArrayList<ContentVersionHbm>()).times(3);
EasyMock.expect(documentDaoMock.load(EasyMock.anyInt())).andReturn(mockDocument);
EasyMock.replay(viewComponentMock);
EasyMock.replay(contentVersionDaoMock);
EasyMock.replay(documentDaoMock);
Set result = null;
try {
result = contentService.getDocumentUsage(1);
} catch (UserException e) {
Assert.assertFalse(true);
}
EasyMock.verify(contentVersionDaoMock);
EasyMock.verify(viewComponentMock);
EasyMock.verify(documentDaoMock);
Assert.assertEquals(1, result.size());
}
public void testGetDocumentUsage2() {
DocumentHbm mockDocument = createDocumentHbm(1);
EasyMock.expect(viewComponentMock.findRootViewComponents4Unit(EasyMock.anyInt())).andReturn(roots);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions1);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions2);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(new ArrayList<ContentVersionHbm>()).times(3);
EasyMock.expect(documentDaoMock.load(EasyMock.anyInt())).andReturn(mockDocument);
EasyMock.replay(viewComponentMock);
EasyMock.replay(contentVersionDaoMock);
EasyMock.replay(documentDaoMock);
Set result = null;
try {
result = contentService.getDocumentUsage(3);
} catch (UserException e) {
Assert.assertFalse(true);
}
EasyMock.verify(contentVersionDaoMock);
EasyMock.verify(viewComponentMock);
EasyMock.verify(documentDaoMock);
Assert.assertEquals(0, result.size());
}
public void testGetPictureUsage() {
PictureHbm mockPicture = createPictureHbm(1);
EasyMock.expect(viewComponentMock.findRootViewComponents4Unit(EasyMock.anyInt())).andReturn(roots);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions1);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions2);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(new ArrayList<ContentVersionHbm>()).times(3);
EasyMock.expect(pictureDaoMock.load(EasyMock.anyInt())).andReturn(mockPicture);
EasyMock.replay(viewComponentMock);
EasyMock.replay(contentVersionDaoMock);
EasyMock.replay(pictureDaoMock);
Set result = null;
try {
result = contentService.getPictureUsage(11);
} catch (UserException e) {
Assert.assertFalse(true);
}
EasyMock.verify(contentVersionDaoMock);
EasyMock.verify(viewComponentMock);
EasyMock.verify(pictureDaoMock);
Assert.assertEquals(1, result.size());
}
public void testRemoveResources() {
Integer[] pictureIds = new Integer[] {11, 12};
Integer[] documentIds = new Integer[] {1, 3};
EasyMock.expect(viewComponentMock.findRootViewComponents4Unit(EasyMock.anyInt())).andReturn(roots);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions3);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions4);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(new ArrayList<ContentVersionHbm>()).times(3);
EasyMock.expect(documentDaoMock.load(EasyMock.anyInt())).andReturn(createDocumentHbm(documentIds[0], 1));
EasyMock.expect(documentDaoMock.load(EasyMock.anyInt())).andReturn(createDocumentHbm(documentIds[1], 1));
EasyMock.expect(pictureDaoMock.load(EasyMock.anyInt())).andReturn(createPictureHbm(pictureIds[0], 1));
EasyMock.expect(pictureDaoMock.load(EasyMock.anyInt())).andReturn(createPictureHbm(pictureIds[1], 1));
EasyMock.replay(viewComponentMock);
EasyMock.replay(contentVersionDaoMock);
EasyMock.replay(documentDaoMock);
EasyMock.replay(pictureDaoMock);
boolean validationError = false;
try {
contentService.removeResources(pictureIds, documentIds, false);
} catch (Exception e) {
Assert.assertEquals("validation exception", e.getCause().getMessage());
validationError = true;
}
EasyMock.verify(contentVersionDaoMock);
EasyMock.verify(viewComponentMock);
EasyMock.verify(documentDaoMock);
EasyMock.verify(pictureDaoMock);
Assert.assertTrue(validationError);
}
public void testRemoveResources2() {
Integer[] pictureIds = new Integer[] {13};
Integer[] documentIds = new Integer[] {2};
EasyMock.expect(viewComponentMock.findRootViewComponents4Unit(EasyMock.anyInt())).andReturn(roots);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions3);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions4);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(new ArrayList<ContentVersionHbm>()).times(3);
EasyMock.expect(documentDaoMock.load(EasyMock.anyInt())).andReturn(createDocumentHbm(documentIds[0], 1));
EasyMock.expect(pictureDaoMock.load(EasyMock.anyInt())).andReturn(createPictureHbm(pictureIds[0], 1));
pictureDaoMock.deletePictures((Integer[]) EasyMock.anyObject());
documentDaoMock.deleteDocuments((Integer[]) EasyMock.anyObject());
EasyMock.replay(viewComponentMock);
EasyMock.replay(contentVersionDaoMock);
EasyMock.replay(documentDaoMock);
EasyMock.replay(pictureDaoMock);
try {
contentService.removeResources(pictureIds, documentIds, false);
} catch (Exception e) {
Assert.assertFalse(true);
}
EasyMock.verify(contentVersionDaoMock);
EasyMock.verify(viewComponentMock);
EasyMock.verify(documentDaoMock);
EasyMock.verify(pictureDaoMock);
}
@SuppressWarnings("unchecked")
public void testRemoveResources3() {
Integer[] pictureIds = new Integer[] {11, 13};
Integer[] documentIds = new Integer[] {2};
EasyMock.expect(viewComponentMock.findRootViewComponents4Unit(EasyMock.anyInt())).andReturn(roots);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions3);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(mockContentVersions4);
EasyMock.expect(contentVersionDaoMock.findContentVersionsByViewComponent(EasyMock.anyInt())).andReturn(new ArrayList<ContentVersionHbm>()).times(3);
EasyMock.expect(documentDaoMock.load(EasyMock.anyInt())).andReturn(createDocumentHbm(documentIds[0], 1));
EasyMock.expect(pictureDaoMock.load(EasyMock.anyInt())).andReturn(createPictureHbm(pictureIds[0], 1));
EasyMock.expect(pictureDaoMock.load(EasyMock.anyInt())).andReturn(createPictureHbm(pictureIds[1], 1));
//check if remove method is called with 2 elements
List mockDeleteContents = new ArrayList();
mockDeleteContents.add(null);
contentVersionDaoMock.remove(EasyMock.cmp(mockDeleteContents, new Comparator<List>() {
public int compare(List o1, List o2) {
return o1.size() == o2.size() ? 0 : -1;
}
}, LogicalOperator.EQUAL));
pictureDaoMock.deletePictures((Integer[]) EasyMock.anyObject());
documentDaoMock.deleteDocuments((Integer[]) EasyMock.anyObject());
EasyMock.replay(viewComponentMock);
EasyMock.replay(contentVersionDaoMock);
EasyMock.replay(documentDaoMock);
EasyMock.replay(pictureDaoMock);
try {
contentService.removeResources(pictureIds, documentIds, true);
} catch (Exception e) {
Assert.assertFalse(true);
}
EasyMock.verify(contentVersionDaoMock);
EasyMock.verify(viewComponentMock);
EasyMock.verify(documentDaoMock);
EasyMock.verify(pictureDaoMock);
}
/**
* Test CheckIn
* expect: no modifications so no need to create new contentVersion
* and the lock is removed
*/
public void testCheckIn() {
ContentValue contentValue = new ContentValue();
contentValue.setContentId(1);
contentValue.setContentText("testText");
contentValue.setHeading("testHeading");
UserHbm userLockOwner = new UserHbmImpl();
userLockOwner.setUserId("testUser");
LockHbm lock = new LockHbmImpl();
lock.setLockId(1);
lock.setOwner(userLockOwner);
ContentVersionHbm lastContentVersion = new ContentVersionHbmImpl();
lastContentVersion.setContentVersionId(1);
lastContentVersion.setText("testText");
lastContentVersion.setHeading("testHeading");
lastContentVersion.setVersion("1");
lastContentVersion.setLock(lock);
Collection contentVersions = new ArrayList<ContentVersionHbm>();
contentVersions.add(lastContentVersion);
ContentHbm contentHbm = new ContentHbmImpl();
contentHbm.setContentId(1);
contentHbm.setContentVersions(contentVersions);
try {
EasyMock.expect(contentDaoMock.load(1)).andReturn(contentHbm);
lockDaoMock.remove((LockHbm) EasyMock.anyObject());
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.replay(contentDaoMock);
EasyMock.replay(lockDaoMock);
try {
contentService.checkIn(contentValue);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.verify(contentDaoMock);
}
/**
* Test CheckIn
* expect: after modifications are made to the contentVersion
* a new content version is created
* and the lock is removed
*/
public void testCheckIn1() {
ContentValue contentValue = new ContentValue();
contentValue.setContentId(1);
contentValue.setContentText("testTextNew");
contentValue.setHeading("testHeading");
contentValue.setCreateNewVersion(true);
UserHbm userLockOwner = new UserHbmImpl();
userLockOwner.setUserId("testUser");
LockHbm lock = new LockHbmImpl();
lock.setLockId(1);
lock.setOwner(userLockOwner);
ContentVersionHbm lastContentVersion = new ContentVersionHbmImpl();
lastContentVersion.setContentVersionId(1);
lastContentVersion.setText("testText");
lastContentVersion.setHeading("testHeading");
lastContentVersion.setVersion("1");
lastContentVersion.setLock(lock);
Collection contentVersions = new ArrayList<ContentVersionHbm>();
contentVersions.add(lastContentVersion);
ContentHbm contentHbm = new ContentHbmImpl();
contentHbm.setContentId(1);
contentHbm.setContentVersions(contentVersions);
ContentVersionHbm contentVersion = new ContentVersionHbmImpl();
contentVersion.setContentVersionId(1);
contentVersion.setText("testTextNew");
contentVersion.setHeading("testHeading");
try {
EasyMock.expect(contentDaoMock.load(1)).andReturn(contentHbm);
lockDaoMock.remove((LockHbm) EasyMock.anyObject());
EasyMock.expect(contentVersionDaoMock.create((ContentVersionHbm) EasyMock.anyObject())).andReturn(contentVersion);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.replay(contentDaoMock);
EasyMock.replay(lockDaoMock);
EasyMock.replay(contentVersionDaoMock);
try {
contentService.checkIn(contentValue);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.verify(contentDaoMock);
EasyMock.verify(lockDaoMock);
EasyMock.verify(contentVersionDaoMock);
}
/**
* Test checkOut. Lock owner and lock caller are the same, force
* expect: create new lock
*/
public void testCheckOut() {
ContentHbm content = new ContentHbmImpl();
content.setContentId(1);
UserHbm userLockOwner = new UserHbmImpl();
userLockOwner.setUserId("testUser");
UserHbm caller = new UserHbmImpl();
caller.setUserId("testUser");
LockHbm lock = new LockHbmImpl();
lock.setLockId(1);
lock.setOwner(userLockOwner);
ContentVersionHbm lastContentVersion = new ContentVersionHbmImpl();
lastContentVersion.setContentVersionId(1);
lastContentVersion.setText("testText");
lastContentVersion.setHeading("testHeading");
lastContentVersion.setVersion("1");
lastContentVersion.setLock(lock);
Collection contentVersions = new ArrayList<ContentVersionHbm>();
contentVersions.add(lastContentVersion);
content.setContentVersions(contentVersions);
try {
EasyMock.expect(contentDaoMock.load(1)).andReturn(content);
EasyMock.expect(userDaoMock.load("testUser")).andReturn(caller);
lockDaoMock.remove((LockHbm) EasyMock.anyObject());
EasyMock.expect(lockDaoMock.create((LockHbm) EasyMock.anyObject())).andReturn(lock);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.replay(contentDaoMock);
EasyMock.replay(userDaoMock);
EasyMock.replay(lockDaoMock);
try {
ContentValue value = contentService.checkOut(1, true);
Assert.assertNotNull(value);
} catch (Exception e) {
Assert.assertTrue(false);
}
}
/**
* Test checkOut. Lock owner and lock caller are the same,not force
* expect: throw alreadyCheckedOutException
*/
public void testCheckOut1() {
ContentHbm content = new ContentHbmImpl();
content.setContentId(1);
UserHbm userLockOwner = new UserHbmImpl();
userLockOwner.setUserId("testUser");
UserHbm caller = new UserHbmImpl();
caller.setUserId("testUser");
LockHbm lock = new LockHbmImpl();
lock.setLockId(1);
lock.setOwner(userLockOwner);
ContentVersionHbm lastContentVersion = new ContentVersionHbmImpl();
lastContentVersion.setContentVersionId(1);
lastContentVersion.setText("testText");
lastContentVersion.setHeading("testHeading");
lastContentVersion.setVersion("1");
lastContentVersion.setLock(lock);
Collection contentVersions = new ArrayList<ContentVersionHbm>();
contentVersions.add(lastContentVersion);
content.setContentVersions(contentVersions);
try {
EasyMock.expect(contentDaoMock.load(1)).andReturn(content);
EasyMock.expect(userDaoMock.load("testUser")).andReturn(caller);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.replay(contentDaoMock);
EasyMock.replay(userDaoMock);
try {
ContentValue value = contentService.checkOut(1, false);
} catch (Exception e) {
if (e instanceof AlreadyCheckedOutException) {
Assert.assertTrue(true);
} else {
Assert.assertTrue(false);
}
}
}
/**
* Test checkOut. No lock, force
* expect: create new lock and set the lock owner the caller
*/
public void testCheckOut2() {
ContentHbm content = new ContentHbmImpl();
content.setContentId(1);
UserHbm userLockOwner = new UserHbmImpl();
userLockOwner.setUserId("testUser");
UserHbm caller = new UserHbmImpl();
caller.setUserId("testUser");
LockHbm lock = new LockHbmImpl();
lock.setLockId(1);
lock.setOwner(userLockOwner);
ContentVersionHbm lastContentVersion = new ContentVersionHbmImpl();
lastContentVersion.setContentVersionId(1);
lastContentVersion.setText("testText");
lastContentVersion.setHeading("testHeading");
lastContentVersion.setVersion("1");
Collection contentVersions = new ArrayList<ContentVersionHbm>();
contentVersions.add(lastContentVersion);
content.setContentVersions(contentVersions);
try {
EasyMock.expect(contentDaoMock.load(EasyMock.eq(1))).andReturn(content);
EasyMock.expect(userDaoMock.load(EasyMock.eq("testUser"))).andReturn(caller);
EasyMock.expect(lockDaoMock.create((LockHbm) EasyMock.anyObject())).andReturn(lock);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.replay(contentDaoMock);
EasyMock.replay(userDaoMock);
EasyMock.replay(lockDaoMock);
try {
ContentValue value = contentService.checkOut(1, true);
Assert.assertNotNull(value);
} catch (Exception e) {
Assert.assertTrue(false);
}
}
/**
* Test createContent
* expect: create new content with content version
*/
public void testCreateContent() {
Collection contentVersions = new ArrayList<ContentVersionHbm>();
ContentHbm contentHbm = new ContentHbmImpl();
contentHbm.setContentId(1);
contentHbm.setContentVersions(contentVersions);
ContentValue contentValue = new ContentValue();
contentValue.setContentId(1);
contentValue.setTemplate("testTemplate");
ContentVersionHbm contentVersion = new ContentVersionHbmImpl();
contentVersion.setContentVersionId(1);
contentVersion.setVersion("testVersion");
try {
EasyMock.expect(contentDaoMock.create((ContentValue) EasyMock.anyObject(), EasyMock.eq("testUser"))).andReturn(contentHbm);
EasyMock.expect(contentVersionDaoMock.create((ContentVersionHbm) EasyMock.anyObject())).andReturn(contentVersion);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.replay(contentDaoMock);
EasyMock.replay(contentVersionDaoMock);
try {
contentValue = contentService.createContent(contentValue);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.verify(contentDaoMock);
EasyMock.verify(contentVersionDaoMock);
}
/**
* Test getAllContentVersions
* expect: return only content version which don't have version "PUBLS"
* versionComment is set
*/
public void testGetAllContentVersions() {
Collection<ContentVersionHbm> contentVersions = new ArrayList<ContentVersionHbm>();
ContentVersionHbm contentVersion1 = new ContentVersionHbmImpl();
contentVersion1.setContentVersionId(1);
contentVersion1.setVersion("1");
contentVersion1.setCreator("testUser");
contentVersion1.setCreateDate(0);
ContentVersionValue contentVersionValue1 = new ContentVersionValue();
contentVersionValue1.setContentVersionId(1);
contentVersionValue1.setVersion("1");
contentVersionValue1.setCreateDate(0);
contentVersionValue1.setCreator("testUser");
ContentVersionHbm contentVersion2 = new ContentVersionHbmImpl();
contentVersion2.setContentVersionId(2);
contentVersion2.setVersion("2");
contentVersion2.setCreator("testUser");
contentVersion2.setCreateDate(0);
ContentVersionHbm contentVersion3 = new ContentVersionHbmImpl();
contentVersion3.setContentVersionId(3);
contentVersion3.setVersion("PUBLS");
contentVersion3.setCreator("testUser");
contentVersion3.setCreateDate(0);
ContentVersionValue contentVersionValue2 = new ContentVersionValue();
contentVersionValue2.setContentVersionId(1);
contentVersionValue2.setVersion("1");
contentVersionValue2.setCreateDate(0);
contentVersionValue2.setCreator("testUser");
contentVersions.add(contentVersion2);
contentVersions.add(contentVersion1);
contentVersions.add(contentVersion3);
ContentHbm content = new ContentHbmImpl();
content.setContentId(1);
content.setContentVersions(contentVersions);
try {
EasyMock.expect(contentDaoMock.load(EasyMock.eq(1))).andReturn(content);
EasyMock.expect(contentVersionDaoMock.getDao(contentVersion1)).andReturn(contentVersionValue1);
EasyMock.expect(contentVersionDaoMock.getDao(contentVersion2)).andReturn(contentVersionValue2);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.replay(contentDaoMock);
EasyMock.replay(contentVersionDaoMock);
try {
ContentVersionValue[] cv = contentService.getAllContentVersions(1);
Assert.assertEquals(2, cv.length);
Assert.assertEquals("1 - testUser (01.01.1970)", cv[0].getVersionComment());
Assert.assertEquals("testUser (01.01.1970)", cv[1].getVersionComment());
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.verify(contentDaoMock);
EasyMock.verify(contentVersionDaoMock);
}
/**
* Test GetAllContentVersionsIds
* expect: return an array with the contentVersion's ids which don't have
* version='publs'
*/
public void testGetAllContentVersionsId() {
Collection<ContentVersionHbm> contentVersions = new ArrayList<ContentVersionHbm>();
ContentVersionHbm contentVersion1 = new ContentVersionHbmImpl();
contentVersion1.setContentVersionId(1);
contentVersion1.setVersion("1");
contentVersion1.setCreator("testUser");
contentVersion1.setCreateDate(0);
ContentVersionValue contentVersionValue1 = new ContentVersionValue();
contentVersionValue1.setContentVersionId(1);
contentVersionValue1.setVersion("1");
contentVersionValue1.setCreateDate(0);
contentVersionValue1.setCreator("testUser");
ContentVersionHbm contentVersion2 = new ContentVersionHbmImpl();
contentVersion2.setContentVersionId(2);
contentVersion2.setVersion("2");
contentVersion2.setCreator("testUser");
contentVersion2.setCreateDate(0);
ContentVersionHbm contentVersion3 = new ContentVersionHbmImpl();
contentVersion3.setContentVersionId(3);
contentVersion3.setVersion("PUBLS");
contentVersion3.setCreator("testUser");
contentVersion3.setCreateDate(0);
ContentVersionValue contentVersionValue2 = new ContentVersionValue();
contentVersionValue2.setContentVersionId(1);
contentVersionValue2.setVersion("1");
contentVersionValue2.setCreateDate(0);
contentVersionValue2.setCreator("testUser");
contentVersions.add(contentVersion2);
contentVersions.add(contentVersion1);
contentVersions.add(contentVersion3);
ContentHbm content = new ContentHbmImpl();
content.setContentId(1);
content.setContentVersions(contentVersions);
try {
EasyMock.expect(contentDaoMock.load(EasyMock.eq(1))).andReturn(content);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.replay(contentDaoMock);
try {
Integer[] cv = contentService.getAllContentVersionsId(1);
Assert.assertEquals(2, cv.length);
Assert.assertEquals(1, cv[0].intValue());
Assert.assertEquals(2, cv[1].intValue());
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.verify(contentDaoMock);
}
/**
* Test GetAnchors
* expect: return the name of the anchor "test"
*/
public void testGetAnchors() {
ContentHbm content = new ContentHbmImpl();
content.setContentId(1);
ContentVersionHbm contentVersion = new ContentVersionHbmImpl();
contentVersion.setContentVersionId(1);
contentVersion.setVersion("1");
contentVersion.setText("<p><anchor dcfname=\"de.juwimm.cms.content.modules.Anchor\" description=\"testAnchor\" label=\"Anker\"><a name=\"test\" type=\"anchor\"/></anchor></p>");
Collection<ContentVersionHbm> contentVersions = new ArrayList<ContentVersionHbm>();
contentVersions.add(contentVersion);
content.setContentVersions(contentVersions);
try {
EasyMock.expect(contentDaoMock.load(EasyMock.eq(1))).andReturn(content);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.replay(contentDaoMock);
try {
String[] anchors = contentService.getAnchors(1);
Assert.assertEquals(1, anchors.length);
Assert.assertEquals("test", anchors[0]);
} catch (Exception e) {
Assert.assertTrue(false);
}
}
/**
* Test GetContentTemplateName
* expect: for view with view type internal link or symlink
* first search for the referenced view component and after that get the content referenced there
*
*/
public void testGetContentTemplateName() {
ContentHbm content = new ContentHbmImpl();
content.setContentId(1);
content.setTemplate("testTemplate");
ViewComponentHbm viewComponent = new ViewComponentHbmImpl();
viewComponent.setViewComponentId(1);
viewComponent.setViewType(Constants.VIEW_TYPE_INTERNAL_LINK);
viewComponent.setReference("2");
ViewComponentHbm viewComponentReferenced = new ViewComponentHbmImpl();
viewComponentReferenced.setViewComponentId(2);
viewComponentReferenced.setReference("1");
try {
EasyMock.expect(viewComponentMock.load(EasyMock.eq(1))).andReturn(viewComponent);
EasyMock.expect(viewComponentMock.load(EasyMock.eq(2))).andReturn(viewComponentReferenced);
EasyMock.expect(contentDaoMock.load(EasyMock.eq(1))).andReturn(content);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.replay(viewComponentMock);
EasyMock.replay(contentDaoMock);
try {
String result = contentService.getContentTemplateName(1);
Assert.assertEquals("testTemplate", result);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.verify(viewComponentMock);
EasyMock.verify(contentDaoMock);
}
/**
* Test GetContentTemplateName
* expect: from the content referenced get the template name
*
*/
public void testGetContentTemplateName1() {
ContentHbm content = new ContentHbmImpl();
content.setContentId(1);
content.setTemplate("testTemplate");
ViewComponentHbm viewComponent = new ViewComponentHbmImpl();
viewComponent.setViewComponentId(1);
viewComponent.setViewType(Constants.VIEW_TYPE_CONTENT);
viewComponent.setReference("1");
try {
EasyMock.expect(viewComponentMock.load(EasyMock.eq(1))).andReturn(viewComponent);
EasyMock.expect(contentDaoMock.load(EasyMock.eq(1))).andReturn(content);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.replay(viewComponentMock);
EasyMock.replay(contentDaoMock);
try {
String result = contentService.getContentTemplateName(1);
Assert.assertEquals("testTemplate", result);
} catch (Exception e) {
Assert.assertTrue(false);
}
EasyMock.verify(viewComponentMock);
EasyMock.verify(contentDaoMock);
}
}