Skip to content

Commit ae9738b

Browse files
committed
Refactor test setup and teardown methods
- Move permission rules and content provider client setup to JUnit rules - Use BuildConfig.APPLICATION_ID for test account types - Deprecate ical4jTimeZone function
1 parent a365b91 commit ae9738b

File tree

7 files changed

+34
-63
lines changed

7 files changed

+34
-63
lines changed

lib/src/androidTest/kotlin/at/bitfire/ical4android/AndroidEventTest.kt

Lines changed: 10 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,10 @@ import android.content.ContentProviderClient
1010
import android.content.ContentUris
1111
import android.content.ContentValues
1212
import android.database.DatabaseUtils
13-
import android.net.Uri
1413
import android.os.Build
1514
import android.provider.CalendarContract.ACCOUNT_TYPE_LOCAL
1615
import android.provider.CalendarContract.AUTHORITY
1716
import android.provider.CalendarContract.Attendees
18-
import android.provider.CalendarContract.Calendars
1917
import android.provider.CalendarContract.Events
2018
import android.provider.CalendarContract.ExtendedProperties
2119
import android.provider.CalendarContract.Reminders
@@ -50,16 +48,14 @@ import net.fortuna.ical4j.model.parameter.Value
5048
import net.fortuna.ical4j.model.property.*
5149
import net.fortuna.ical4j.util.TimeZones
5250
import org.junit.After
53-
import org.junit.AfterClass
5451
import org.junit.Assert.assertEquals
5552
import org.junit.Assert.assertFalse
5653
import org.junit.Assert.assertNotEquals
5754
import org.junit.Assert.assertNotNull
5855
import org.junit.Assert.assertNull
5956
import org.junit.Assert.assertTrue
6057
import org.junit.Before
61-
import org.junit.BeforeClass
62-
import org.junit.ClassRule
58+
import org.junit.Rule
6359
import org.junit.Test
6460
import org.junit.rules.TestRule
6561
import java.net.URI
@@ -71,27 +67,8 @@ import kotlin.collections.plusAssign
7167

7268
class AndroidEventTest {
7369

74-
companion object {
75-
76-
@JvmField
77-
@ClassRule
78-
val initCalendarProviderRule: TestRule = InitCalendarProviderRule.initialize()
79-
80-
lateinit var client: ContentProviderClient
81-
82-
@BeforeClass
83-
@JvmStatic
84-
fun connectProvider() {
85-
client = getInstrumentation().targetContext.contentResolver.acquireContentProviderClient(AUTHORITY)!!
86-
}
87-
88-
@AfterClass
89-
@JvmStatic
90-
fun closeProvider() {
91-
client.closeCompat()
92-
}
93-
94-
}
70+
@get:Rule
71+
val initCalendarProviderRule: TestRule = InitCalendarProviderRule.initialize()
9572

9673
private val logger = Logger.getLogger(javaClass.name)
9774

@@ -103,19 +80,21 @@ class AndroidEventTest {
10380
private val tzIdDefault = java.util.TimeZone.getDefault().id
10481
private val tzDefault = DateUtils.ical4jTimeZone(tzIdDefault)
10582

106-
private lateinit var calendarUri: Uri
83+
lateinit var client: ContentProviderClient
10784
private lateinit var calendar: AndroidCalendar
10885

10986
@Before
11087
fun prepare() {
88+
val context = getInstrumentation().targetContext
89+
client = context.contentResolver.acquireContentProviderClient(AUTHORITY)!!
90+
11191
calendar = TestCalendar.findOrCreate(testAccount, client)
112-
assertNotNull(calendar)
113-
calendarUri = ContentUris.withAppendedId(Calendars.CONTENT_URI, calendar.id)
11492
}
11593

11694
@After
11795
fun shutdown() {
11896
calendar.delete()
97+
client.closeCompat()
11998
}
12099

121100

@@ -2710,8 +2689,8 @@ class AndroidEventTest {
27102689
localEvent.add()
27112690

27122691
assertEquals(
2713-
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.Q)
2714-
365 * 2 // Android <10: does not include UNTIL (incorrect!)
2692+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P)
2693+
365 * 2 // Android <9: does not include UNTIL (incorrect!)
27152694
else
27162695
365 * 2 + 1, // Android ≥10: includes UNTIL (correct)
27172696
AndroidEvent.numInstances(client, testAccount, localEvent.id!!)

lib/src/androidTest/kotlin/at/bitfire/synctools/LoggingTestRunner.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class LoggingTestRunner: AndroidJUnitRunner() {
2121
val rootLogger = Logger.getLogger("")
2222
rootLogger.level = Level.ALL
2323
rootLogger.handlers.forEach { rootLogger.removeHandler(it) }
24-
rootLogger.addHandler(LogcatHandler(javaClass.packageName))
24+
rootLogger.addHandler(LogcatHandler(BuildConfig.LIBRARY_PACKAGE_NAME))
2525
}
2626

2727
}

lib/src/androidTest/kotlin/at/bitfire/synctools/storage/ContactsBatchOperationTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import android.provider.ContactsContract
1313
import androidx.test.platform.app.InstrumentationRegistry
1414
import androidx.test.rule.GrantPermissionRule
1515
import at.bitfire.ical4android.util.MiscUtils.closeCompat
16+
import at.bitfire.synctools.test.BuildConfig
1617
import org.junit.After
1718
import org.junit.Before
1819
import org.junit.Rule
@@ -26,7 +27,7 @@ class ContactsBatchOperationTest {
2627
Manifest.permission.WRITE_CONTACTS
2728
)
2829

29-
private val testAccount = Account(javaClass.name, javaClass.packageName)
30+
private val testAccount = Account(javaClass.name, BuildConfig.APPLICATION_ID)
3031

3132
lateinit var provider: ContentProviderClient
3233

lib/src/androidTest/kotlin/at/bitfire/synctools/storage/JtxBatchOperationTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import at.bitfire.ical4android.JtxICalObject
1616
import at.bitfire.ical4android.TaskProvider
1717
import at.bitfire.ical4android.util.MiscUtils.asSyncAdapter
1818
import at.bitfire.ical4android.util.MiscUtils.closeCompat
19+
import at.bitfire.synctools.test.BuildConfig
1920
import at.bitfire.synctools.test.GrantPermissionOrSkipRule
2021
import at.techbee.jtx.JtxContract
2122
import io.mockk.mockk
@@ -29,7 +30,7 @@ class JtxBatchOperationTest {
2930
@get:Rule
3031
val permissionRule = GrantPermissionOrSkipRule(TaskProvider.PERMISSIONS_JTX.toSet())
3132

32-
private val testAccount = Account(javaClass.name, javaClass.packageName)
33+
private val testAccount = Account(javaClass.name, BuildConfig.APPLICATION_ID)
3334

3435
lateinit var provider: ContentProviderClient
3536

lib/src/androidTest/kotlin/at/bitfire/synctools/storage/TasksBatchOperationTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,15 @@ import android.accounts.Account
1010
import at.bitfire.ical4android.DmfsStyleProvidersTaskTest
1111
import at.bitfire.ical4android.TaskProvider
1212
import at.bitfire.ical4android.impl.TestTaskList
13+
import at.bitfire.synctools.test.BuildConfig
1314
import org.dmfs.tasks.contract.TaskContract
1415
import org.junit.Test
1516

1617
class TasksBatchOperationTest(
1718
providerName: TaskProvider.ProviderName
1819
): DmfsStyleProvidersTaskTest(providerName) {
1920

20-
private val testAccount = Account(javaClass.name, javaClass.packageName)
21+
private val testAccount = Account(javaClass.name, BuildConfig.APPLICATION_ID)
2122

2223
@Test(expected = LocalStorageException::class)
2324
fun testTasksProvider_OperationsPerYieldPoint_500_WithoutMax() {

lib/src/androidTest/kotlin/at/bitfire/synctools/storage/calendar/AndroidCalendarTest.kt

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -21,52 +21,40 @@ import at.bitfire.ical4android.util.MiscUtils.closeCompat
2121
import at.bitfire.synctools.icalendar.Css3Color
2222
import net.fortuna.ical4j.model.property.DtEnd
2323
import net.fortuna.ical4j.model.property.DtStart
24-
import org.junit.AfterClass
24+
import org.junit.After
2525
import org.junit.Assert.assertEquals
2626
import org.junit.Before
27-
import org.junit.BeforeClass
28-
import org.junit.ClassRule
27+
import org.junit.Rule
2928
import org.junit.Test
3029

3130
class AndroidCalendarTest {
3231

33-
companion object {
34-
35-
@JvmField
36-
@ClassRule
37-
val permissionRule = GrantPermissionRule.grant(
38-
Manifest.permission.READ_CALENDAR,
39-
Manifest.permission.WRITE_CALENDAR
40-
)
41-
42-
lateinit var client: ContentProviderClient
43-
44-
@BeforeClass
45-
@JvmStatic
46-
fun connectProvider() {
47-
client = InstrumentationRegistry.getInstrumentation().targetContext.contentResolver.acquireContentProviderClient(
48-
CalendarContract.AUTHORITY)!!
49-
}
50-
51-
@AfterClass
52-
@JvmStatic
53-
fun closeProvider() {
54-
client.closeCompat()
55-
}
56-
57-
}
32+
@get:Rule
33+
val permissionRule = GrantPermissionRule.grant(
34+
Manifest.permission.READ_CALENDAR,
35+
Manifest.permission.WRITE_CALENDAR
36+
)
5837

5938
private val testAccount = Account("ical4android.AndroidCalendarTest", CalendarContract.ACCOUNT_TYPE_LOCAL)
39+
40+
lateinit var client: ContentProviderClient
6041
lateinit var provider: AndroidCalendarProvider
6142

6243
@Before
6344
fun prepare() {
45+
client = InstrumentationRegistry.getInstrumentation().targetContext.contentResolver.acquireContentProviderClient(CalendarContract.AUTHORITY)!!
46+
6447
// make sure there are no colors for testAccount
6548
provider = AndroidCalendarProvider(testAccount, client)
6649
provider.removeColorIndices()
6750
assertEquals(0, countColors())
6851
}
6952

53+
@After
54+
fun tearDown() {
55+
client.closeCompat()
56+
}
57+
7058

7159
@Test
7260
fun testCreateAndGetCalendar() {

lib/src/main/kotlin/at/bitfire/ical4android/util/DateUtils.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ object DateUtils {
103103
* @param id time zone ID (like `Europe/Vienna`)
104104
* @return the ical4j time zone (VTIMEZONE), or `null` if no VTIMEZONE is available
105105
*/
106+
@Deprecated("Create and query new TimeZoneRegistry instance if one is needed")
106107
fun ical4jTimeZone(id: String): TimeZone? = tzRegistry.getTimeZone(id)
107108

108109
/**

0 commit comments

Comments
 (0)