diff --git a/app/src/main/java/fr/free/nrw/commons/delete/DeleteHelper.java b/app/src/main/java/fr/free/nrw/commons/delete/DeleteHelper.java index ee673cdc18..5253f0dbd3 100644 --- a/app/src/main/java/fr/free/nrw/commons/delete/DeleteHelper.java +++ b/app/src/main/java/fr/free/nrw/commons/delete/DeleteHelper.java @@ -98,6 +98,12 @@ private Observable delete(Media media, String reason) { String userPageString = "\n{{subst:idw|" + media.getFilename() + "}} ~~~~"; + String creator = media.getCreator(); + if (creator == null || creator.isEmpty()) { + throw new RuntimeException("Failed to nominate for deletion"); + } + String creatorName = creator.replace(" (page does not exist)", ""); + return pageEditClient.prependEdit(media.filename, fileDeleteString + "\n", summary) .flatMap(result -> { if (result) { @@ -111,7 +117,7 @@ private Observable delete(Media media, String reason) { throw new RuntimeException("Failed to nominate for deletion"); }).flatMap(result -> { if (result) { - return pageEditClient.appendEdit("User_Talk:" + username, userPageString + "\n", summary); + return pageEditClient.appendEdit("User_Talk:" + creatorName, userPageString + "\n", summary); } throw new RuntimeException("Failed to nominate for deletion"); }); diff --git a/app/src/test/kotlin/fr/free/nrw/commons/delete/DeleteHelperTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/delete/DeleteHelperTest.kt index d0faddc8f6..5fd56601fc 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/delete/DeleteHelperTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/delete/DeleteHelperTest.kt @@ -1,6 +1,8 @@ package fr.free.nrw.commons.delete import android.content.Context +import com.nhaarman.mockitokotlin2.eq +import com.nhaarman.mockitokotlin2.verify import fr.free.nrw.commons.Media import fr.free.nrw.commons.actions.PageEditClient import fr.free.nrw.commons.notification.NotificationHelper @@ -14,7 +16,6 @@ import org.mockito.InjectMocks import org.mockito.Mock import org.mockito.Mockito.`when` import org.mockito.MockitoAnnotations -import org.wikipedia.AppAdapter import javax.inject.Inject import javax.inject.Named @@ -65,9 +66,13 @@ class DeleteHelperTest { `when`(media?.displayTitle).thenReturn("Test file") media?.filename="Test file.jpg" + val creatorName = "Creator" + `when`(media?.getCreator()).thenReturn("$creatorName (page does not exist)") + val makeDeletion = deleteHelper?.makeDeletion(context, media, "Test reason")?.blockingGet() assertNotNull(makeDeletion) assertTrue(makeDeletion!!) + verify(pageEditClient)?.appendEdit(eq("User_Talk:$creatorName"), ArgumentMatchers.anyString(), ArgumentMatchers.anyString()) } /** @@ -83,6 +88,7 @@ class DeleteHelperTest { .thenReturn(Observable.just(true)) `when`(media?.displayTitle).thenReturn("Test file") `when`(media?.filename).thenReturn("Test file.jpg") + `when`(media?.creator).thenReturn("Creator (page does not exist)") deleteHelper?.makeDeletion(context, media, "Test reason")?.blockingGet() } @@ -97,6 +103,7 @@ class DeleteHelperTest { .thenReturn(Observable.just(false)) `when`(media?.displayTitle).thenReturn("Test file") `when`(media?.filename).thenReturn("Test file.jpg") + `when`(media?.creator).thenReturn("Creator (page does not exist)") deleteHelper?.makeDeletion(context, media, "Test reason")?.blockingGet() } @@ -111,6 +118,24 @@ class DeleteHelperTest { .thenReturn(Observable.just(true)) `when`(media?.displayTitle).thenReturn("Test file") `when`(media?.filename).thenReturn("Test file.jpg") + `when`(media?.creator).thenReturn("Creator (page does not exist)") + + deleteHelper?.makeDeletion(context, media, "Test reason")?.blockingGet() + } + + @Test(expected = RuntimeException::class) + fun makeDeletionForEmptyCreatorName() { + `when`(pageEditClient?.prependEdit(ArgumentMatchers.anyString(), ArgumentMatchers.anyString(), ArgumentMatchers.anyString())) + .thenReturn(Observable.just(true)) + `when`(pageEditClient?.appendEdit(ArgumentMatchers.anyString(), ArgumentMatchers.anyString(), ArgumentMatchers.anyString())) + .thenReturn(Observable.just(true)) + `when`(pageEditClient?.edit(ArgumentMatchers.anyString(), ArgumentMatchers.anyString(), ArgumentMatchers.anyString())) + .thenReturn(Observable.just(true)) + + `when`(media?.displayTitle).thenReturn("Test file") + media?.filename="Test file.jpg" + + `when`(media?.getCreator()).thenReturn(null) deleteHelper?.makeDeletion(context, media, "Test reason")?.blockingGet() }