Skip to content

Commit 2a9f5ed

Browse files
authored
ImageLoader Test Updated (#4517)
1 parent 351fd28 commit 2a9f5ed

File tree

4 files changed

+96
-123
lines changed

4 files changed

+96
-123
lines changed

app/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ dependencies {
9393
testImplementation "org.junit.jupiter:junit-jupiter-api:5.3.1"
9494
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.3.1"
9595
testImplementation 'com.facebook.soloader:soloader:0.9.0'
96+
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.4.2"
9697

9798
// Android testing
9899
androidTestImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$KOTLIN_VERSION"
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package fr.free.nrw.commons.customselector.database
22

33
import androidx.room.*
4-
import kotlinx.coroutines.runBlocking
54
import java.util.*
6-
import kotlinx.coroutines.*
75

86
/**
97
* UploadedStatusDao for Custom Selector.
@@ -29,58 +27,30 @@ abstract class UploadedStatusDao {
2927
@Delete
3028
abstract suspend fun delete(uploadedStatus: UploadedStatus)
3129

32-
/**
33-
* Get All entries from the uploaded status table.
34-
*/
35-
@Query("SELECT * FROM uploaded_table")
36-
abstract suspend fun getAll() : List<UploadedStatus>
37-
3830
/**
3931
* Query uploaded status with image sha1.
4032
*/
4133
@Query("SELECT * FROM uploaded_table WHERE imageSHA1 = (:imageSHA1) ")
42-
abstract suspend fun getFromImageSHA1(imageSHA1 : String) : UploadedStatus
34+
abstract suspend fun getFromImageSHA1(imageSHA1 : String) : UploadedStatus?
4335

4436
/**
4537
* Query uploaded status with modified image sha1.
4638
*/
4739
@Query("SELECT * FROM uploaded_table WHERE modifiedImageSHA1 = (:modifiedImageSHA1) ")
48-
abstract suspend fun getFromModifiedImageSHA1(modifiedImageSHA1 : String) : UploadedStatus
40+
abstract suspend fun getFromModifiedImageSHA1(modifiedImageSHA1 : String) : UploadedStatus?
4941

5042
/**
5143
* Asynchronous insert into uploaded status table.
5244
*/
5345
suspend fun insertUploaded(uploadedStatus: UploadedStatus) {
54-
uploadedStatus.lastUpdated = Calendar.getInstance().time as Date?
46+
uploadedStatus.lastUpdated = Calendar.getInstance().time
5547
insert(uploadedStatus)
5648
}
5749

58-
/**
59-
* Asynchronous delete from uploaded status table.
60-
*/
61-
suspend fun deleteUploaded(uploadedStatus: UploadedStatus) {
62-
delete(uploadedStatus)
63-
}
64-
65-
/**
66-
* Asynchronous update entry in uploaded status table.
67-
*/
68-
suspend fun updateUploaded(uploadedStatus: UploadedStatus) {
69-
update(uploadedStatus)
70-
}
71-
7250
/**
7351
* Asynchronous image sha1 query.
7452
*/
75-
suspend fun getUploadedFromImageSHA1(imageSHA1: String):UploadedStatus {
53+
suspend fun getUploadedFromImageSHA1(imageSHA1: String):UploadedStatus? {
7654
return getFromImageSHA1(imageSHA1)
7755
}
78-
79-
/**
80-
* Asynchronous modified image sha1 query.
81-
*/
82-
suspend fun getUploadedFromModifiedImageSHA1(modifiedImageSHA1: String):UploadedStatus {
83-
return getFromModifiedImageSHA1(modifiedImageSHA1)
84-
}
85-
8656
}

app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/ImageLoader.kt

+9-9
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ class ImageLoader @Inject constructor(
6262
/**
6363
* Coroutine Dispatchers and Scope.
6464
*/
65-
private var defaultDispatcher = Dispatchers.Default
66-
private var ioDispatcher = Dispatchers.IO
67-
private val scope = MainScope()
65+
private var defaultDispatcher : CoroutineDispatcher = Dispatchers.Default
66+
private var ioDispatcher : CoroutineDispatcher = Dispatchers.IO
67+
private val scope : CoroutineScope = MainScope()
6868

6969
/**
7070
* Query image and setUp the view.
@@ -129,7 +129,7 @@ class ImageLoader @Inject constructor(
129129
* @return Query result.
130130
*/
131131

132-
private suspend fun querySHA1(SHA1: String): Result {
132+
suspend fun querySHA1(SHA1: String): Result {
133133
return withContext(ioDispatcher) {
134134
mapResult[SHA1]?.let {
135135
return@withContext it
@@ -157,7 +157,7 @@ class ImageLoader @Inject constructor(
157157
*
158158
* @return sha1 of the image
159159
*/
160-
private suspend fun getSHA1(image: Image): String {
160+
suspend fun getSHA1(image: Image): String {
161161
mapModifiedImageSHA1[image]?.let{
162162
return it
163163
}
@@ -169,14 +169,14 @@ class ImageLoader @Inject constructor(
169169
/**
170170
* Get the uploaded status entry from the database.
171171
*/
172-
private suspend fun getFromUploaded(imageSha1:String): UploadedStatus?{
172+
suspend fun getFromUploaded(imageSha1:String): UploadedStatus? {
173173
return uploadedStatusDao.getUploadedFromImageSHA1(imageSha1)
174174
}
175175

176176
/**
177177
* Insert into uploaded status table.
178178
*/
179-
private suspend fun insertIntoUploaded(imageSha1:String, modifiedImageSha1:String, imageResult:Boolean, modifiedImageResult: Boolean){
179+
suspend fun insertIntoUploaded(imageSha1:String, modifiedImageSha1:String, imageResult:Boolean, modifiedImageResult: Boolean){
180180
uploadedStatusDao.insertUploaded(
181181
UploadedStatus(
182182
imageSha1,
@@ -190,7 +190,7 @@ class ImageLoader @Inject constructor(
190190
/**
191191
* Get image sha1 from uri, used to retrieve the original image sha1.
192192
*/
193-
private suspend fun getImageSHA1(uri: Uri): String {
193+
suspend fun getImageSHA1(uri: Uri): String {
194194
return withContext(ioDispatcher) {
195195
mapImageSHA1[uri]?.let{
196196
return@withContext it
@@ -204,7 +204,7 @@ class ImageLoader @Inject constructor(
204204
/**
205205
* Get result data from database.
206206
*/
207-
private fun getResultFromUploadedStatus(uploadedStatus: UploadedStatus): Result {
207+
fun getResultFromUploadedStatus(uploadedStatus: UploadedStatus): Result {
208208
if (uploadedStatus.imageResult || uploadedStatus.modifiedImageResult) {
209209
return Result.TRUE
210210
} else {

0 commit comments

Comments
 (0)