From 030b2affca66c8e6709d52327799563ba62de232 Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Wed, 18 Apr 2018 11:40:34 +0200 Subject: [PATCH 1/2] JENKINS-50603: Verify that the job was a favorite before adding it again --- .../java/hudson/plugins/favorite/user/FavoriteJobListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/hudson/plugins/favorite/user/FavoriteJobListener.java b/src/main/java/hudson/plugins/favorite/user/FavoriteJobListener.java index 6dcb0b6..e67a1f9 100644 --- a/src/main/java/hudson/plugins/favorite/user/FavoriteJobListener.java +++ b/src/main/java/hudson/plugins/favorite/user/FavoriteJobListener.java @@ -21,7 +21,7 @@ public void onRenamed(Item item, String oldName, String newName) { for (User user : User.getAll()) { FavoriteUserProperty fup = user.getProperty(FavoriteUserProperty.class); try { - if (fup != null) { + if (fup != null && fup.isJobFavorite(oldName)) { fup.deleteFavourite(oldName); fup.addFavorite(newName); } From 32df7bb7a4ed4cc0e83a6a7bfdc5d4d402c91a8b Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Tue, 24 Apr 2018 10:24:17 +0200 Subject: [PATCH 2/2] JENKINS-50603: Adds test-cases. --- .../favorite/user/FavoriteListenerTest.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/test/java/hudson/plugins/favorite/user/FavoriteListenerTest.java b/src/test/java/hudson/plugins/favorite/user/FavoriteListenerTest.java index 91cab92..d0fc65f 100644 --- a/src/test/java/hudson/plugins/favorite/user/FavoriteListenerTest.java +++ b/src/test/java/hudson/plugins/favorite/user/FavoriteListenerTest.java @@ -17,8 +17,10 @@ import java.io.IOException; import java.util.Map; +import java.util.Set; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -48,6 +50,50 @@ public void testListener() throws IOException, FavoriteException { assertEquals(item, listener.removeFavorites.get(user)); } + @Test + public void testRenameNoFavorite() throws Exception { + // GIVEN + FreeStyleProject old = rule.createFreeStyleProject("Old project"); + User user = User.get("bob"); + + FavoriteUserProperty property = user.getProperty(FavoriteUserProperty.class); + Set favorites = property.getAllFavorites(); + + FavoriteJobListener listener = new FavoriteJobListener(); + assertFalse("Should not contain 'New project'", favorites.contains("New project")); + assertFalse("Should contain 'Old project'", favorites.contains("Old project")); + + // WHEN + listener.onRenamed(old, "Old project", "New project"); + + // THEN + assertFalse("Should contain 'New project'", favorites.contains("New project")); + assertFalse("Should not contain 'Old project'", favorites.contains("Old project")); + } + + @Test + public void testRenameFavorite() throws Exception { + // GIVEN + FreeStyleProject old = rule.createFreeStyleProject("Old project"); + User user = User.get("bob"); + + FavoriteUserProperty property = user.getProperty(FavoriteUserProperty.class); + Set favorites = property.getAllFavorites(); + + Favorites.addFavorite(user, old); + + FavoriteJobListener listener = new FavoriteJobListener(); + assertFalse("Should not contain 'New project'", favorites.contains("New project")); + assertTrue("Should contain 'Old project'", favorites.contains("Old project")); + + // WHEN + listener.onRenamed(old, "Old project", "New project"); + + // THEN + assertTrue("Should contain 'New project'", favorites.contains("New project")); + assertFalse("Should not contain 'Old project'", favorites.contains("Old project")); + } + @Extension public static class TestFavoriteJobListener extends FavoriteListener {