diff --git a/lib/src/androidTest/kotlin/at/bitfire/ical4android/AndroidEventTest.kt b/lib/src/androidTest/kotlin/at/bitfire/ical4android/AndroidEventTest.kt index 95f17016..976a08ec 100644 --- a/lib/src/androidTest/kotlin/at/bitfire/ical4android/AndroidEventTest.kt +++ b/lib/src/androidTest/kotlin/at/bitfire/ical4android/AndroidEventTest.kt @@ -10,12 +10,10 @@ import android.content.ContentProviderClient import android.content.ContentUris import android.content.ContentValues import android.database.DatabaseUtils -import android.net.Uri import android.os.Build import android.provider.CalendarContract.ACCOUNT_TYPE_LOCAL import android.provider.CalendarContract.AUTHORITY import android.provider.CalendarContract.Attendees -import android.provider.CalendarContract.Calendars import android.provider.CalendarContract.Events import android.provider.CalendarContract.ExtendedProperties import android.provider.CalendarContract.Reminders @@ -50,7 +48,6 @@ import net.fortuna.ical4j.model.parameter.Value import net.fortuna.ical4j.model.property.* import net.fortuna.ical4j.util.TimeZones import org.junit.After -import org.junit.AfterClass import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertNotEquals @@ -58,8 +55,7 @@ import org.junit.Assert.assertNotNull import org.junit.Assert.assertNull import org.junit.Assert.assertTrue import org.junit.Before -import org.junit.BeforeClass -import org.junit.ClassRule +import org.junit.Rule import org.junit.Test import org.junit.rules.TestRule import java.net.URI @@ -71,27 +67,8 @@ import kotlin.collections.plusAssign class AndroidEventTest { - companion object { - - @JvmField - @ClassRule - val initCalendarProviderRule: TestRule = InitCalendarProviderRule.initialize() - - lateinit var client: ContentProviderClient - - @BeforeClass - @JvmStatic - fun connectProvider() { - client = getInstrumentation().targetContext.contentResolver.acquireContentProviderClient(AUTHORITY)!! - } - - @AfterClass - @JvmStatic - fun closeProvider() { - client.closeCompat() - } - - } + @get:Rule + val initCalendarProviderRule: TestRule = InitCalendarProviderRule.initialize() private val logger = Logger.getLogger(javaClass.name) @@ -103,19 +80,21 @@ class AndroidEventTest { private val tzIdDefault = java.util.TimeZone.getDefault().id private val tzDefault = DateUtils.ical4jTimeZone(tzIdDefault) - private lateinit var calendarUri: Uri + lateinit var client: ContentProviderClient private lateinit var calendar: AndroidCalendar @Before fun prepare() { + val context = getInstrumentation().targetContext + client = context.contentResolver.acquireContentProviderClient(AUTHORITY)!! + calendar = TestCalendar.findOrCreate(testAccount, client) - assertNotNull(calendar) - calendarUri = ContentUris.withAppendedId(Calendars.CONTENT_URI, calendar.id) } @After fun shutdown() { calendar.delete() + client.closeCompat() } @@ -2710,8 +2689,8 @@ class AndroidEventTest { localEvent.add() assertEquals( - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.Q) - 365 * 2 // Android <10: does not include UNTIL (incorrect!) + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) + 365 * 2 // Android <9: does not include UNTIL (incorrect!) else 365 * 2 + 1, // Android ≥10: includes UNTIL (correct) AndroidEvent.numInstances(client, testAccount, localEvent.id!!) diff --git a/lib/src/androidTest/kotlin/at/bitfire/synctools/LoggingTestRunner.kt b/lib/src/androidTest/kotlin/at/bitfire/synctools/LoggingTestRunner.kt index ae8ebe1c..57aff0ef 100644 --- a/lib/src/androidTest/kotlin/at/bitfire/synctools/LoggingTestRunner.kt +++ b/lib/src/androidTest/kotlin/at/bitfire/synctools/LoggingTestRunner.kt @@ -21,7 +21,7 @@ class LoggingTestRunner: AndroidJUnitRunner() { val rootLogger = Logger.getLogger("") rootLogger.level = Level.ALL rootLogger.handlers.forEach { rootLogger.removeHandler(it) } - rootLogger.addHandler(LogcatHandler(javaClass.packageName)) + rootLogger.addHandler(LogcatHandler(BuildConfig.LIBRARY_PACKAGE_NAME)) } } \ No newline at end of file diff --git a/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/ContactsBatchOperationTest.kt b/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/ContactsBatchOperationTest.kt index b297551d..306b0aef 100644 --- a/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/ContactsBatchOperationTest.kt +++ b/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/ContactsBatchOperationTest.kt @@ -13,6 +13,7 @@ import android.provider.ContactsContract import androidx.test.platform.app.InstrumentationRegistry import androidx.test.rule.GrantPermissionRule import at.bitfire.ical4android.util.MiscUtils.closeCompat +import at.bitfire.synctools.test.BuildConfig import org.junit.After import org.junit.Before import org.junit.Rule @@ -26,7 +27,7 @@ class ContactsBatchOperationTest { Manifest.permission.WRITE_CONTACTS ) - private val testAccount = Account(javaClass.name, javaClass.packageName) + private val testAccount = Account(javaClass.name, BuildConfig.APPLICATION_ID) lateinit var provider: ContentProviderClient diff --git a/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/JtxBatchOperationTest.kt b/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/JtxBatchOperationTest.kt index a35c36c8..281bf9d2 100644 --- a/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/JtxBatchOperationTest.kt +++ b/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/JtxBatchOperationTest.kt @@ -16,6 +16,7 @@ import at.bitfire.ical4android.JtxICalObject import at.bitfire.ical4android.TaskProvider import at.bitfire.ical4android.util.MiscUtils.asSyncAdapter import at.bitfire.ical4android.util.MiscUtils.closeCompat +import at.bitfire.synctools.test.BuildConfig import at.bitfire.synctools.test.GrantPermissionOrSkipRule import at.techbee.jtx.JtxContract import io.mockk.mockk @@ -29,7 +30,7 @@ class JtxBatchOperationTest { @get:Rule val permissionRule = GrantPermissionOrSkipRule(TaskProvider.PERMISSIONS_JTX.toSet()) - private val testAccount = Account(javaClass.name, javaClass.packageName) + private val testAccount = Account(javaClass.name, BuildConfig.APPLICATION_ID) lateinit var provider: ContentProviderClient diff --git a/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/TasksBatchOperationTest.kt b/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/TasksBatchOperationTest.kt index 47ebc34c..d482fdf5 100644 --- a/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/TasksBatchOperationTest.kt +++ b/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/TasksBatchOperationTest.kt @@ -10,6 +10,7 @@ import android.accounts.Account import at.bitfire.ical4android.DmfsStyleProvidersTaskTest import at.bitfire.ical4android.TaskProvider import at.bitfire.ical4android.impl.TestTaskList +import at.bitfire.synctools.test.BuildConfig import org.dmfs.tasks.contract.TaskContract import org.junit.Test @@ -17,7 +18,7 @@ class TasksBatchOperationTest( providerName: TaskProvider.ProviderName ): DmfsStyleProvidersTaskTest(providerName) { - private val testAccount = Account(javaClass.name, javaClass.packageName) + private val testAccount = Account(javaClass.name, BuildConfig.APPLICATION_ID) @Test(expected = LocalStorageException::class) fun testTasksProvider_OperationsPerYieldPoint_500_WithoutMax() { diff --git a/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/calendar/AndroidCalendarTest.kt b/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/calendar/AndroidCalendarTest.kt index e2d55b09..edeff276 100644 --- a/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/calendar/AndroidCalendarTest.kt +++ b/lib/src/androidTest/kotlin/at/bitfire/synctools/storage/calendar/AndroidCalendarTest.kt @@ -21,52 +21,40 @@ import at.bitfire.ical4android.util.MiscUtils.closeCompat import at.bitfire.synctools.icalendar.Css3Color import net.fortuna.ical4j.model.property.DtEnd import net.fortuna.ical4j.model.property.DtStart -import org.junit.AfterClass +import org.junit.After import org.junit.Assert.assertEquals import org.junit.Before -import org.junit.BeforeClass -import org.junit.ClassRule +import org.junit.Rule import org.junit.Test class AndroidCalendarTest { - companion object { - - @JvmField - @ClassRule - val permissionRule = GrantPermissionRule.grant( - Manifest.permission.READ_CALENDAR, - Manifest.permission.WRITE_CALENDAR - ) - - lateinit var client: ContentProviderClient - - @BeforeClass - @JvmStatic - fun connectProvider() { - client = InstrumentationRegistry.getInstrumentation().targetContext.contentResolver.acquireContentProviderClient( - CalendarContract.AUTHORITY)!! - } - - @AfterClass - @JvmStatic - fun closeProvider() { - client.closeCompat() - } - - } + @get:Rule + val permissionRule = GrantPermissionRule.grant( + Manifest.permission.READ_CALENDAR, + Manifest.permission.WRITE_CALENDAR + ) private val testAccount = Account("ical4android.AndroidCalendarTest", CalendarContract.ACCOUNT_TYPE_LOCAL) + + lateinit var client: ContentProviderClient lateinit var provider: AndroidCalendarProvider @Before fun prepare() { + client = InstrumentationRegistry.getInstrumentation().targetContext.contentResolver.acquireContentProviderClient(CalendarContract.AUTHORITY)!! + // make sure there are no colors for testAccount provider = AndroidCalendarProvider(testAccount, client) provider.removeColorIndices() assertEquals(0, countColors()) } + @After + fun tearDown() { + client.closeCompat() + } + @Test fun testCreateAndGetCalendar() { diff --git a/lib/src/main/kotlin/at/bitfire/ical4android/util/DateUtils.kt b/lib/src/main/kotlin/at/bitfire/ical4android/util/DateUtils.kt index bd9794da..0429fe01 100644 --- a/lib/src/main/kotlin/at/bitfire/ical4android/util/DateUtils.kt +++ b/lib/src/main/kotlin/at/bitfire/ical4android/util/DateUtils.kt @@ -103,6 +103,7 @@ object DateUtils { * @param id time zone ID (like `Europe/Vienna`) * @return the ical4j time zone (VTIMEZONE), or `null` if no VTIMEZONE is available */ + @Deprecated("Create and query new TimeZoneRegistry instance if one is needed") fun ical4jTimeZone(id: String): TimeZone? = tzRegistry.getTimeZone(id) /**