diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemManager.java b/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemManager.java index 8c1550b97..1fffa72bf 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemManager.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemManager.java @@ -549,9 +549,22 @@ public class ContentItemManager { liveItem.setLifecycle(lifecycle); liveItem.setWorkflow(draftItem.getWorkflow()); + final List oldCategories = liveItem + .getCategories() + .stream() + .map(categorization -> categorization.getCategory()) + .collect(Collectors.toList()); + oldCategories.forEach(category -> { + try { + categoryManager.removeObjectFromCategory(liveItem, category); + } catch (ObjectNotAssignedToCategoryException ex) { + throw new RuntimeException(ex); + } + }); + draftItem.getCategories().forEach(categorization -> categoryManager - .addObjectToCategory(liveItem, - categorization.getCategory(), + .addObjectToCategory(liveItem, + categorization.getCategory(), categorization.getType())); // !!!!!!!!!!!!!!!!!!!!! @@ -678,10 +691,10 @@ public class ContentItemManager { } } } - + liveItem.setVersion(ContentItemVersion.LIVE); contentItemRepo.save(liveItem); - + return liveItem; } diff --git a/ccm-cms/src/test/java/org/librecms/contentsection/ContentItemManagerTest.java b/ccm-cms/src/test/java/org/librecms/contentsection/ContentItemManagerTest.java index 595ebd31e..6c8a91819 100644 --- a/ccm-cms/src/test/java/org/librecms/contentsection/ContentItemManagerTest.java +++ b/ccm-cms/src/test/java/org/librecms/contentsection/ContentItemManagerTest.java @@ -231,13 +231,16 @@ public class ContentItemManagerTest { value = "datasets/org/librecms/contentsection/" + "ContentItemManagerTest/after-create-contentitem.xml", excludeColumns = {"categorization_id", + "id", + "item_uuid", "lifecycle_id", "object_id", "object_order", "phase_id", + "rev", "task_id", "uuid", - "item_uuid", + "timestamp", "workflow_id" }) public void createContentItem() { @@ -334,13 +337,16 @@ public class ContentItemManagerTest { + "ContentItemManagerTest/" + "after-create-contentitem-with-workflow.xml", excludeColumns = {"categorization_id", + "id", + "item_uuid", "lifecycle_id", "object_id", "object_order", "phase_id", + "rev", "task_id", + "timestamp", "uuid", - "item_uuid", "workflow_id" }) public void createContentItemWithWorkflow() { @@ -427,7 +433,7 @@ public class ContentItemManagerTest { @ShouldMatchDataSet("datasets/org/librecms/contentsection/" + "ContentItemManagerTest/data.xml") @ShouldThrowException(IllegalArgumentException.class) - public void createItemNameIsNoWorkflow() { + public void createItemNameIsNullWorkflowIsNull() { final ContentSection section = sectionRepo.findByLabel("info"); final Category folder = section.getRootDocumentsFolder(); @@ -520,13 +526,16 @@ public class ContentItemManagerTest { value = "datasets/org/librecms/contentsection/" + "ContentItemManagerTest/after-copy-to-other-folder.xml", excludeColumns = {"categorization_id", + "id", + "item_uuid", "lifecycle_id", "object_id", "object_order", "phase_id", + "rev", "task_id", "uuid", - "item_uuid", + "timestamp", "workflow_id" }) public void copyToOtherFolder() { @@ -547,13 +556,16 @@ public class ContentItemManagerTest { value = "datasets/org/librecms/contentsection/" + "ContentItemManagerTest/after-copy-to-same-folder.xml", excludeColumns = {"categorization_id", + "id", + "item_uuid", "lifecycle_id", "object_id", "object_order", "phase_id", + "rev", "task_id", + "timestamp", "uuid", - "item_uuid", "workflow_id" }) public void copyToSameFolder() { @@ -604,11 +616,14 @@ public class ContentItemManagerTest { value = "datasets/org/librecms/contentsection/" + "ContentItemManagerTest/after-publish.xml", excludeColumns = {"categorization_id", + "id", "lifecycle_id", "object_id", "object_order", "phase_id", + "rev", "task_id", + "timestamp", "uuid", "workflow_id" }) @@ -629,11 +644,14 @@ public class ContentItemManagerTest { value = "datasets/org/librecms/contentsection/" + "ContentItemManagerTest/after-publish.xml", excludeColumns = {"categorization_id", + "id", "lifecycle_id", "object_id", "object_order", "phase_id", + "rev", "task_id", + "timestamp", "uuid", "workflow_id" }) @@ -649,7 +667,6 @@ public class ContentItemManagerTest { assertThat(live.getVersion(), is(ContentItemVersion.LIVE)); } - //Republish @Test @InSequence(5300) @UsingDataSet("datasets/org/librecms/contentsection/" @@ -658,14 +675,17 @@ public class ContentItemManagerTest { value = "datasets/org/librecms/contentsection/" + "ContentItemManagerTest/after-republish.xml", excludeColumns = {"categorization_id", + "id", "lifecycle_id", "object_id", "object_order", "phase_id", + "rev", + "revend", "task_id", + "timestamp", "uuid", - "workflow_id" - }) + "workflow_id"}) public void republishItem() { final Optional item = itemRepo.findById(-10200L); assertThat(item.isPresent(), is(true)); @@ -681,7 +701,30 @@ public class ContentItemManagerTest { itemManager.publish(draft.get()); } - // publish item null + @Test(expected = IllegalArgumentException.class) + @InSequence(5400) + @UsingDataSet("datasets/org/librecms/contentsection/" + + "ContentItemManagerTest/data.xml") + @ShouldMatchDataSet("datasets/org/librecms/contentsection/" + + "ContentItemManagerTest/data.xml") + @ShouldThrowException(IllegalArgumentException.class) + public void publishItemNull() { + itemManager.publish(null); + } + + @Test(expected = IllegalArgumentException.class) + @InSequence(5500) + @UsingDataSet("datasets/org/librecms/contentsection/" + + "ContentItemManagerTest/data.xml") + @ShouldMatchDataSet("datasets/org/librecms/contentsection/" + + "ContentItemManagerTest/data.xml") + @ShouldThrowException(IllegalArgumentException.class) + public void publishItemLifecycleNull() { + final Optional draft = itemRepo.findById(-10200L); + + itemManager.publish(draft.get(), null); + } + // unpublish item // unpublish non live // unpublish item null diff --git a/ccm-cms/src/test/java/org/librecms/contentsection/ContentItemRepositoryTest.java b/ccm-cms/src/test/java/org/librecms/contentsection/ContentItemRepositoryTest.java index b0561a41d..55d20bc23 100644 --- a/ccm-cms/src/test/java/org/librecms/contentsection/ContentItemRepositoryTest.java +++ b/ccm-cms/src/test/java/org/librecms/contentsection/ContentItemRepositoryTest.java @@ -357,7 +357,10 @@ public class ContentItemRepositoryTest { + "ContentItemRepositoryTest/data.xml") @ShouldMatchDataSet(value = "datasets/org/librecms/contentsection/" + "ContentItemRepositoryTest/after-save.xml", - excludeColumns = {"object_id", "uuid", "item_uuid"}) + excludeColumns = {"object_id", + "uuid", + "item_uuid", + "timestamp"}) public void saveChangedItem() { final Optional item = itemRepo.findById(-10100L); diff --git a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/after-copy-to-other-folder.xml b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/after-copy-to-other-folder.xml index 54d696942..d2fddefdc 100644 --- a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/after-copy-to-other-folder.xml +++ b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/after-copy-to-other-folder.xml @@ -80,6 +80,11 @@ localized_value="The only phase" locale="en" /> + + + @@ -120,6 +125,31 @@ display_name="article1" uuid="12b63933-3167-4dc5-9b55-726a727c55b1" /> + + + + + + + + + + + + + + @@ -242,6 +303,37 @@ locale="en" localized_value="article2" /> + + + + + + + @@ -261,6 +353,37 @@ locale="en" localized_value="Article 2" /> + + + + + + + @@ -295,6 +418,36 @@ locale="en" localized_value="Duis quis tincidunt elit. In pharetra justo sit amet ipsum dictum, at." /> + + + + + + + + + @@ -120,6 +126,30 @@ display_name="article1_copy1" uuid="12b63933-3167-4dc5-9b55-726a727c55b1" /> + + + + + + + + + + + + - + + + + + + + + @@ -263,6 +354,37 @@ locale="en" localized_value="Article 2" /> + + + + + + + @@ -297,7 +419,37 @@ locale="en" localized_value="Duis quis tincidunt elit. In pharetra justo sit amet ipsum dictum, at." /> - + + + + + + diff --git a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/after-create-contentitem-with-workflow.xml b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/after-create-contentitem-with-workflow.xml index 3d9b59136..995cfaff8 100644 --- a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/after-create-contentitem-with-workflow.xml +++ b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/after-create-contentitem-with-workflow.xml @@ -103,6 +103,11 @@ started="false" finished="false" />--> + + + @@ -143,6 +148,31 @@ display_name="new-article" uuid="cfa0efb6-7ce2-41e8-be03-4ee8c7f18b05" /> + + + + + + + + + + + + + + @@ -267,6 +328,37 @@ locale="en" localized_value="article2" /> + + + + + + + @@ -283,6 +375,32 @@ locale="en" localized_value="Article 2" /> + + + + + + @@ -313,10 +431,35 @@ locale="en" localized_value="Duis quis tincidunt elit. In pharetra justo sit amet ipsum dictum, at." /> + + + + + - + --> + + + @@ -156,6 +161,31 @@ display_name="new-article" uuid="cfa0efb6-7ce2-41e8-be03-4ee8c7f18b05" /> + + + + + + + + + + + + + + @@ -280,6 +341,37 @@ locale="en" localized_value="article2" /> + + + + + + + @@ -296,6 +388,32 @@ locale="en" localized_value="Article 2" /> + + + + + + @@ -326,11 +444,35 @@ locale="en" localized_value="Duis quis tincidunt elit. In pharetra justo sit amet ipsum dictum, at." /> - + + + + + - + - + + + + + + + + + + + + + + + @@ -232,6 +283,32 @@ locale="en" localized_value="article2" /> + + + + + + @@ -248,6 +325,32 @@ locale="en" localized_value="Article 2" /> + + + + + + @@ -277,6 +380,31 @@ locale="en" localized_value="Duis quis tincidunt elit. In pharetra justo sit amet ipsum dictum, at." /> + + + + + @@ -315,12 +443,12 @@ category_index="false" type="folder" /> + category_id="-2100" + object_id="-99200" + category_order="1" + object_order="2" + category_index="false" + type="folder" /> diff --git a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/after-publish.xml b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/after-publish.xml index bae914499..04f791474 100644 --- a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/after-publish.xml +++ b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/after-publish.xml @@ -80,6 +80,11 @@ localized_value="The only phase" locale="en" /> + + + @@ -120,6 +125,31 @@ display_name="article1" uuid="f6502ce1-f2e6-4f0d-b306-dfb3a1894f3c" /> + + + + + + + + + + + + + + @@ -242,6 +303,37 @@ locale="en" localized_value="article1" /> + + + + + + + @@ -261,6 +353,37 @@ locale="en" localized_value="Article 1" /> + + + + + + + @@ -294,7 +417,37 @@ object_id="-99100" locale="en" localized_value="Quisque varius turpis et nibh rhoncus consequat. In sapien metus, fermentum quis." /> - + + + + + + + + + @@ -117,6 +122,37 @@ display_name="org.librecms.contenttypes.News" uuid="47740f22-f89f-4ec3-90cf-d62859e53c7e" /> + + + + + + + + + + + + + + + + + localized_value="article2-edited" /> @@ -230,14 +302,62 @@ localized_value="news1" /> + localized_value="article2-edited" /> + + + + + + + + + + + localized_value="Article has been edited" /> @@ -246,7 +366,53 @@ localized_value="News 1" /> + localized_value="Article has been edited" /> + + + + + + + + + + + + + + + diff --git a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/data.xml b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/data.xml index b6076b912..d0b3533ae 100644 --- a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/data.xml +++ b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemManagerTest/data.xml @@ -80,6 +80,9 @@ localized_value="The only phase" locale="en" /> + + @@ -117,6 +120,27 @@ display_name="org.librecms.contenttypes.News" uuid="47740f22-f89f-4ec3-90cf-d62859e53c7e" /> + + + + + + + + + + + + @@ -232,6 +282,32 @@ locale="en" localized_value="article2" /> + + + + + + @@ -248,6 +324,32 @@ locale="en" localized_value="Article 2" /> + + + + + + @@ -277,6 +379,31 @@ locale="en" localized_value="Duis quis tincidunt elit. In pharetra justo sit amet ipsum dictum, at." /> + + + + + diff --git a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemRepositoryTest/after-save.xml b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemRepositoryTest/after-save.xml index fcebc25cd..4e6071b3a 100644 --- a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemRepositoryTest/after-save.xml +++ b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemRepositoryTest/after-save.xml @@ -52,7 +52,7 @@ display_name="news1" /> + revtype="0" + revend="1" /> + revtype="0" /> + + localized_value="First Article" /> @@ -199,7 +205,8 @@ object_id="-10100" localized_value="Article 1" locale="en" - revtype="0" /> + revtype="0" + revend="1" /> + -