Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.content.ContentResolver
import android.content.ContentValues
import android.os.Build
import android.provider.MediaStore
import com.lasthopesoftware.bluewater.shared.lazyLogger
import com.lasthopesoftware.promises.extensions.preparePromise
import com.lasthopesoftware.resources.executors.ThreadPools
import com.lasthopesoftware.resources.uri.toURI
Expand All @@ -18,6 +19,10 @@ class ExternalContentRepository(
private val publicDirectoryLookup: GetPublicDirectories,
) : HaveExternalContent {

companion object {
private val logger by lazyLogger<ExternalContentRepository>()
}

override fun promiseNewContentUri(externalContent: ExternalContent): Promise<URI?> =
externalContent
.toContentValues()
Expand Down Expand Up @@ -61,12 +66,15 @@ class ExternalContentRepository(
null,
null
)

Unit
}

override fun removeContent(uri: URI): Promise<Boolean> = ThreadPools.io.preparePromise {
val deletedRecords = contentResolver.delete(uri.toUri(), null, null)
deletedRecords > 0
try {
val deletedRecords = contentResolver.delete(uri.toUri(), null, null)
deletedRecords > 0
} catch (e: Throwable) {
logger.error("Unable to delete file at uri $uri.", e)
false
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.lasthopesoftware.bluewater.client.stored.library.items.files.external.GivenContent.AndContentResolverThrowsException

import android.app.RecoverableSecurityException
import com.lasthopesoftware.AndroidContext
import com.lasthopesoftware.bluewater.client.stored.library.items.files.external.ExternalContentRepository
import com.lasthopesoftware.bluewater.shared.promises.extensions.toExpiringFuture
import io.mockk.every
import io.mockk.mockk
import org.assertj.core.api.Assertions.assertThat
import org.junit.Test
import java.net.URI

class WhenRemovingTheContent : AndroidContext() {
companion object {

private val sut by lazy {
ExternalContentRepository(
mockk {
every { delete(any(), null, null) } throws RecoverableSecurityException(Exception(), "whoops", mockk())
},
mockk(),
)
}

private var isRemoved = false
}

override fun before() {
isRemoved = sut.removeContent(URI("content://stuff-here")).toExpiringFuture().get() == true
}

@Test
fun `then isRemoved is false`() {
assertThat(isRemoved).isFalse
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.lasthopesoftware.bluewater.client.stored.library.items.files.external.GivenContent

import com.lasthopesoftware.AndroidContext
import com.lasthopesoftware.bluewater.client.stored.library.items.files.external.ExternalContentRepository
import com.lasthopesoftware.bluewater.shared.promises.extensions.toExpiringFuture
import io.mockk.every
import io.mockk.mockk
import org.assertj.core.api.Assertions.assertThat
import org.junit.Test
import java.net.URI

class WhenRemovingTheContent : AndroidContext() {
companion object {

private val sut by lazy {
ExternalContentRepository(
mockk {
every { delete(any(), null, null) } returns 464
},
mockk(),
)
}

private var isRemoved = false
}

override fun before() {
isRemoved = sut.removeContent(URI("content://ZqUbxDqDR")).toExpiringFuture().get() == true
}

@Test
fun `then isRemoved is true`() {
assertThat(isRemoved).isTrue
}
}