Skip to content

Commit e653c32

Browse files
Migrated to synctools and fixed tests (#2077)
1 parent b873651 commit e653c32

File tree

5 files changed

+28
-50
lines changed

5 files changed

+28
-50
lines changed

app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ dependencies {
220220
ksp(libs.room.compiler)
221221

222222
// bitfire libraries
223-
implementation(libs.bitfire.ical4android)
223+
implementation(libs.synctools)
224224

225225
// third-party libs
226226
implementation(libs.mikepenz.aboutLibraries)

app/src/androidTest/java/at/techbee/jtx/FileCleanupJobTest.kt

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,32 @@ package at.techbee.jtx
1010

1111
import android.content.Context
1212
import android.util.Log
13+
import androidx.test.core.app.ApplicationProvider
1314
import androidx.test.ext.junit.runners.AndroidJUnit4
1415
import androidx.test.filters.SmallTest
15-
import androidx.test.platform.app.InstrumentationRegistry
1616
import androidx.work.Configuration
17-
import androidx.work.Constraints
18-
import androidx.work.OneTimeWorkRequestBuilder
19-
import androidx.work.WorkInfo
20-
import androidx.work.WorkManager
17+
import androidx.work.ListenableWorker
2118
import androidx.work.testing.SynchronousExecutor
19+
import androidx.work.testing.TestListenableWorkerBuilder
2220
import androidx.work.testing.WorkManagerTestInitHelper
21+
import kotlinx.coroutines.runBlocking
2322
import org.junit.After
2423
import org.junit.Assert.assertTrue
2524
import org.junit.Before
2625
import org.junit.Test
2726
import org.junit.runner.RunWith
27+
import java.util.concurrent.Executor
2828

2929
@RunWith(AndroidJUnit4::class)
3030
@SmallTest
3131
class FileCleanupJobTest {
3232

3333
private lateinit var context: Context
34+
private lateinit var executor: Executor
3435

3536
@Before
3637
fun setUp() {
37-
context = InstrumentationRegistry.getInstrumentation().targetContext
38+
context = ApplicationProvider.getApplicationContext()
3839
val config = Configuration.Builder()
3940
.setMinimumLoggingLevel(Log.DEBUG)
4041
.setExecutor(SynchronousExecutor())
@@ -45,24 +46,12 @@ class FileCleanupJobTest {
4546
@Test
4647
fun cleanup_test() {
4748

48-
val constraints = Constraints.Builder()
49-
.setRequiresDeviceIdle(true)
50-
.setRequiresBatteryNotLow(true)
51-
.build()
52-
val request = OneTimeWorkRequestBuilder<FileCleanupJob>()
53-
.setConstraints(constraints)
54-
.build()
55-
56-
val workManager = WorkManager.getInstance(context)
57-
val testDriver = WorkManagerTestInitHelper.getTestDriver(context)
58-
// enqueue
59-
workManager.enqueue(request).result.get()
60-
// tell the testing framework that all constraints are met.
61-
testDriver?.setAllConstraintsMet(request.id)
62-
val workInfo = workManager.getWorkInfoById(request.id).get()
63-
64-
assertTrue(workInfo?.state in listOf(WorkInfo.State.RUNNING, WorkInfo.State.SUCCEEDED))
49+
val worker = TestListenableWorkerBuilder<FileCleanupJob>(context).build()
6550

51+
runBlocking {
52+
val result = worker.doWork()
53+
assertTrue(result is ListenableWorker.Result.Success)
54+
}
6655
}
6756

6857
@After

app/src/androidTest/java/at/techbee/jtx/database/properties/AttachmentAndroidTest.kt

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@ package at.techbee.jtx.database.properties
1010

1111
import android.content.ContentValues
1212
import androidx.test.platform.app.InstrumentationRegistry
13-
import androidx.work.WorkInfo
14-
import androidx.work.WorkManager
15-
import org.junit.Assert.*
16-
13+
import org.junit.Assert.assertEquals
1714
import org.junit.Test
1815

1916
class AttachmentAndroidTest {
@@ -58,17 +55,4 @@ class AttachmentAndroidTest {
5855

5956
assertEquals("/data/user/0/${context.packageName}/files/attachments", dir.toString())
6057
}
61-
62-
@Test
63-
fun scheduleCleanupJobTest() {
64-
65-
val context = InstrumentationRegistry.getInstrumentation().targetContext
66-
Attachment.scheduleCleanupJob(context)
67-
68-
val workManager = WorkManager.getInstance(context)
69-
val workInfo = workManager.getWorkInfosForUniqueWork("fileCleanupWorkRequest").get()
70-
71-
//check if the Work was enqueued
72-
assertEquals(workInfo.firstOrNull()?.state, WorkInfo.State.ENQUEUED)
73-
}
7458
}

app/src/main/java/at/techbee/jtx/util/Ical4androidUtil.kt

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,25 @@ import android.content.ContentProviderClient
1313
import android.content.ContentValues
1414
import android.content.Context
1515
import android.util.Log
16-
import at.bitfire.ical4android.*
17-
import at.bitfire.ical4android.util.MiscUtils.toValues
16+
import at.bitfire.ical4android.JtxCollection
17+
import at.bitfire.ical4android.JtxCollectionFactory
18+
import at.bitfire.ical4android.JtxICalObject
19+
import at.bitfire.ical4android.JtxICalObjectFactory
20+
import at.bitfire.synctools.storage.toContentValues
1821
import at.techbee.jtx.contract.JtxContract
1922
import at.techbee.jtx.contract.JtxContract.asSyncAdapter
2023
import net.fortuna.ical4j.data.CalendarOutputter
2124
import net.fortuna.ical4j.model.Calendar
2225
import net.fortuna.ical4j.model.component.VJournal
2326
import net.fortuna.ical4j.model.component.VToDo
27+
import net.fortuna.ical4j.model.property.ProdId
2428
import net.fortuna.ical4j.model.property.Version
2529
import java.io.OutputStream
2630
import java.io.Reader
2731

2832
object Ical4androidUtil {
2933

34+
private val prodId = ProdId("+//IDN techbee.at//jtx Board")
3035

3136
/**
3237
* @param [account] to look up
@@ -36,7 +41,7 @@ object Ical4androidUtil {
3641
*/
3742
fun getICSFormatForCollectionFromProvider(account: Account, context: Context?, collectionId: Long): String? {
3843
val collection = getCollection(account, context, collectionId) ?: return null
39-
return collection.getICSForCollection()
44+
return collection.getICSForCollection(prodId)
4045
}
4146

4247

@@ -61,7 +66,7 @@ object Ical4androidUtil {
6166

6267
val ical = Calendar()
6368
ical.properties += Version.VERSION_2_0
64-
ical.properties += ICalendar.prodId
69+
ical.properties += prodId
6570

6671
iCalObjectIds.forEach { iCalObjectId ->
6772
val uri = JtxContract.JtxICalObject.CONTENT_URI
@@ -75,8 +80,8 @@ object Ical4androidUtil {
7580

7681
while (cursor.moveToNext()) {
7782
val jtxIcalObject = JtxICalObject(collection)
78-
jtxIcalObject.populateFromContentValues(cursor.toValues())
79-
val singleICS = jtxIcalObject.getICalendarFormat()
83+
jtxIcalObject.populateFromContentValues(cursor.toContentValues())
84+
val singleICS = jtxIcalObject.getICalendarFormat(prodId)
8085
singleICS?.components?.forEach { component ->
8186
if(component is VToDo || component is VJournal)
8287
ical.components += component
@@ -85,7 +90,7 @@ object Ical4androidUtil {
8590
}
8691
}
8792

88-
Ical4Android.checkThreadContextClassLoader()
93+
//Ical4Android.checkThreadContextClassLoader()
8994
try {
9095
CalendarOutputter(false).output(ical, os)
9196
} catch (e: Exception) {

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ androidx-test-junit = "1.3.0"
1717
androidx-work = "2.11.0"
1818
annotation = "1.9.1"
1919
biometricKtx = "1.4.0-alpha02"
20-
bitfire-ical4android = "883954c7ca"
2120
calendarCompose = "2.9.0"
2221
coilCompose = "2.7.0"
2322
colorpickerCompose = "1.1.2"
@@ -42,6 +41,7 @@ playServicesLocation = "21.3.0"
4241
playServicesMaps = "19.2.0"
4342
profileinstaller = "1.4.1"
4443
reorderable = "3.0.0"
44+
synctools = "9c48db4d61"
4545
uiTextGoogleFonts = "1.9.4"
4646
room = "2.8.3"
4747
volley = "1.2.1"
@@ -75,7 +75,6 @@ androidx-test-junit = { module = "androidx.test.ext:junit", version.ref = "andro
7575
androidx-ui-text-google-fonts = { group = "androidx.compose.ui", name = "ui-text-google-fonts", version.ref = "uiTextGoogleFonts" }
7676
androidx-work-base = { module = "androidx.work:work-runtime-ktx", version.ref = "androidx-work" }
7777
androidx-work-testing = { module = "androidx.work:work-testing", version.ref = "androidx-work" }
78-
bitfire-ical4android = { module = "com.github.bitfireAT:ical4android", version.ref = "bitfire-ical4android" }
7978
calendar-compose = { module = "com.kizitonwose.calendar:compose", version.ref = "calendarCompose"}
8079
coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coilCompose" }
8180
colorpicker-compose = { module = "com.github.skydoves:colorpicker-compose", version.ref = "colorpickerCompose" }
@@ -107,6 +106,7 @@ room-base = { module = "androidx.room:room-ktx", version.ref = "room" }
107106
room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }
108107
room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" }
109108
room-testing = { module = "androidx.room:room-testing", version.ref = "room" }
109+
synctools = { module = "com.github.bitfireat:synctools", version.ref = "synctools" }
110110
volley = { module = "com.android.volley:volley", version.ref = "volley" }
111111

112112
# gplay and managed build variants

0 commit comments

Comments
 (0)