From 902d2c6e6dc4c4d019494e67f86bc62b1108b563 Mon Sep 17 00:00:00 2001 From: uhensler <none@none> Date: Mon, 17 Jul 2017 08:25:09 +0200 Subject: [PATCH] OO-2898: Testing and hardening --- .../modules/webFeed/manager/FeedManager.java | 12 ++++++- .../webFeed/manager/FeedManagerImpl.java | 11 ++++++ .../olat/repository/handlers/BlogHandler.java | 5 +-- .../repository/handlers/PodcastHandler.java | 5 +-- .../webFeed/manager/FeedManagerImplTest.java | 35 +++++++++++++++++-- 5 files changed, 56 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/olat/modules/webFeed/manager/FeedManager.java b/src/main/java/org/olat/modules/webFeed/manager/FeedManager.java index dc4423ea3e7..1b5a05151ac 100644 --- a/src/main/java/org/olat/modules/webFeed/manager/FeedManager.java +++ b/src/main/java/org/olat/modules/webFeed/manager/FeedManager.java @@ -107,12 +107,22 @@ public abstract class FeedManager { public abstract boolean copy(OLATResource source, OLATResource target); /** - * Update the feed with the properties in the repository entry. + * Enrich the feed with the properties in the RepositoryEntry. * * @param feed * @param entry + * @return the same Feed object with actualized attributes */ public abstract Feed enrichFeedByRepositoryEntry(Feed feed, RepositoryEntry entry); + + /** + * Update the feed with the properties in the RepositoryEntry and save it + * in the database. + * + * @param entry + * @return a new updated Feed object + */ + public abstract Feed updateFeedWithRepositoryEntry(RepositoryEntry entry); /** * Create the given Item and saves the appropriate file (podcast, video etc.) diff --git a/src/main/java/org/olat/modules/webFeed/manager/FeedManagerImpl.java b/src/main/java/org/olat/modules/webFeed/manager/FeedManagerImpl.java index 68c79d25041..2f40d1f12be 100644 --- a/src/main/java/org/olat/modules/webFeed/manager/FeedManagerImpl.java +++ b/src/main/java/org/olat/modules/webFeed/manager/FeedManagerImpl.java @@ -515,8 +515,19 @@ public class FeedManagerImpl extends FeedManager { } } + @Override + public Feed updateFeedWithRepositoryEntry(RepositoryEntry entry) { + Feed feed = loadFeed(entry.getOlatResource()); + feed = enrichFeedByRepositoryEntry(feed, entry); + feed = updateFeed(feed); + return feed; + } + @Override public Feed enrichFeedByRepositoryEntry(Feed feed, RepositoryEntry entry) { + if (feed == null) return null; + if (entry == null) return feed; + // copy the metadata feed.setTitle(entry.getDisplayname()); feed.setDescription(entry.getDescription()); diff --git a/src/main/java/org/olat/repository/handlers/BlogHandler.java b/src/main/java/org/olat/repository/handlers/BlogHandler.java index 69a2ddf7307..da468173d2e 100644 --- a/src/main/java/org/olat/repository/handlers/BlogHandler.java +++ b/src/main/java/org/olat/repository/handlers/BlogHandler.java @@ -242,10 +242,7 @@ public class BlogHandler implements RepositoryHandler { @Override public void onDescriptionChanged(RepositoryEntry entry) { - FeedManager feedManager = FeedManager.getInstance(); - Feed feed = feedManager.loadFeed(entry.getOlatResource()); - feed = feedManager.enrichFeedByRepositoryEntry(feed, entry); - feedManager.updateFeed(feed); + Feed feed = FeedManager.getInstance().updateFeedWithRepositoryEntry(entry); DBFactory.getInstance().commitAndCloseSession(); CoordinatorManager.getInstance().getCoordinator().getEventBus() diff --git a/src/main/java/org/olat/repository/handlers/PodcastHandler.java b/src/main/java/org/olat/repository/handlers/PodcastHandler.java index 508bfa493b3..682d0f7e917 100644 --- a/src/main/java/org/olat/repository/handlers/PodcastHandler.java +++ b/src/main/java/org/olat/repository/handlers/PodcastHandler.java @@ -236,10 +236,7 @@ public class PodcastHandler implements RepositoryHandler { @Override public void onDescriptionChanged(RepositoryEntry entry) { - FeedManager feedManager = FeedManager.getInstance(); - Feed feed = feedManager.loadFeed(entry.getOlatResource()); - feed = feedManager.enrichFeedByRepositoryEntry(feed, entry); - feedManager.updateFeed(feed); + Feed feed = FeedManager.getInstance().updateFeedWithRepositoryEntry(entry); DBFactory.getInstance().commitAndCloseSession(); CoordinatorManager.getInstance().getCoordinator().getEventBus() diff --git a/src/test/java/org/olat/modules/webFeed/manager/FeedManagerImplTest.java b/src/test/java/org/olat/modules/webFeed/manager/FeedManagerImplTest.java index 561daa8f042..500f0b80bcf 100644 --- a/src/test/java/org/olat/modules/webFeed/manager/FeedManagerImplTest.java +++ b/src/test/java/org/olat/modules/webFeed/manager/FeedManagerImplTest.java @@ -79,7 +79,7 @@ public class FeedManagerImplTest { @Mock private Coordinator coordinaterMock; @Mock - private RepositoryManager repostoryManager; + private RepositoryManager repositoryManager; @Mock OLATResource resourceDummy; @Mock @@ -102,7 +102,7 @@ public class FeedManagerImplTest { ReflectionTestUtils.setField(sut, "itemDAO", itemDAOMock); ReflectionTestUtils.setField(sut, "feedFileStorage", feedFileStorageMock); ReflectionTestUtils.setField(sut, "externalFeedFetcher", feedFetcherMock); - ReflectionTestUtils.setField(sut, "repositoryManager", repostoryManager); + ReflectionTestUtils.setField(sut, "repositoryManager", repositoryManager); } @Test @@ -260,8 +260,9 @@ public class FeedManagerImplTest { verify(feedFileStorageMock, times(3)).deleteItemXML(itemDummy); } + @Test - public void enrichFeedFromrepositoryEntryShouldTransferAtributes() { + public void enrichFeedFromRepositoryEntryShouldTransferAtributes() { Feed feed = new FeedImpl(resourceDummy); RepositoryEntry entry = new RepositoryEntry(); String title = "Title"; @@ -277,4 +278,32 @@ public class FeedManagerImplTest { assertThat(enrichedFeed.getDescription()).isEqualTo(description); assertThat(enrichedFeed.getAuthor()).isEqualTo(authors); } + + + @Test + public void enrichFeedFromRepositoryEntryShouldReturnUnchangedFeedIfRepositoryIsNull() { + Feed feed = new FeedImpl(resourceDummy); + String title = "Title"; + feed.setTitle(title); + String description = "Description"; + feed.setDescription(description); + String authors = "Author"; + feed.setAuthor(authors); + + Feed enrichedFeed = sut.enrichFeedByRepositoryEntry(feed, null); + + assertThat(enrichedFeed).isEqualTo(feed); + assertThat(enrichedFeed.getTitle()).isEqualTo(title); + assertThat(enrichedFeed.getDescription()).isEqualTo(description); + assertThat(enrichedFeed.getAuthor()).isEqualTo(authors); + } + + @Test + public void enrichFeedFromRepositoryEntryShouldReturnNullIfFeedIsNull() { + RepositoryEntry entry = new RepositoryEntry(); + + Feed enrichedFeed = sut.enrichFeedByRepositoryEntry(null, entry); + + assertThat(enrichedFeed).isNull(); + } } -- GitLab