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); } 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 {