Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit cec77c33 authored by Ricki Hirner's avatar Ricki Hirner Committed by GitHub
Browse files

Fix KotlinNotImplementedError in LocalGroup update method (#1696)

- Remove scheduleTag assignment in LocalGroup update method
- Refactor LocalGroupTest to use @Before and @After annotations
- Add new test case for update method in LocalGroupTest
parent 6c98e6d5
Loading
Loading
Loading
Loading
+24 −32
Original line number Original line Diff line number Diff line
@@ -21,15 +21,13 @@ import at.bitfire.vcard4android.GroupMethod
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.android.testing.HiltAndroidRule
import dagger.hilt.android.testing.HiltAndroidRule
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.HiltAndroidTest
import org.junit.AfterClass
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertFalse
import org.junit.Assert.assertNotNull
import org.junit.Assert.assertNotNull
import org.junit.Assert.assertNull
import org.junit.Assert.assertNull
import org.junit.Assert.assertTrue
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Before
import org.junit.BeforeClass
import org.junit.ClassRule
import org.junit.Rule
import org.junit.Rule
import org.junit.Test
import org.junit.Test
import java.util.Optional
import java.util.Optional
@@ -38,22 +36,34 @@ import javax.inject.Inject
@HiltAndroidTest
@HiltAndroidTest
class LocalGroupTest {
class LocalGroupTest {


    @get:Rule
    val hiltRule = HiltAndroidRule(this)

    @get:Rule
    val permissionRule = GrantPermissionRule.grant(Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS)!!

    @Inject @ApplicationContext
    @Inject @ApplicationContext
    lateinit var context: Context
    lateinit var context: Context


    @Inject
    @Inject
    lateinit var localTestAddressBookProvider: LocalTestAddressBookProvider
    lateinit var localTestAddressBookProvider: LocalTestAddressBookProvider


    @get:Rule
    lateinit var provider: ContentProviderClient
    val hiltRule = HiltAndroidRule(this)


    val account = Account("Test Account", "Test Account Type")
    val account = Account("Test Account", "Test Account Type")


    @Before
    @Before
    fun setup() {
    fun setUp() {
        hiltRule.inject()
        hiltRule.inject()

        val context = InstrumentationRegistry.getInstrumentation().context
        provider = context.contentResolver.acquireContentProviderClient(ContactsContract.AUTHORITY)!!
    }
    }


    @After
    fun tearDown() {
        provider.close()
    }


    @Test
    @Test
    fun testApplyPendingMemberships_addPendingMembership() {
    fun testApplyPendingMemberships_addPendingMembership() {
@@ -146,7 +156,6 @@ class LocalGroupTest {
        }
        }
    }
    }



    @Test
    @Test
    fun testClearDirty_addCachedGroupMembership() {
    fun testClearDirty_addCachedGroupMembership() {
        localTestAddressBookProvider.provide(account, provider, GroupMethod.CATEGORIES) { ab ->
        localTestAddressBookProvider.provide(account, provider, GroupMethod.CATEGORIES) { ab ->
@@ -214,7 +223,6 @@ class LocalGroupTest {
            }
            }
    }
    }



    @Test
    @Test
    fun testMarkMembersDirty() {
    fun testMarkMembersDirty() {
        localTestAddressBookProvider.provide(account, provider, GroupMethod.CATEGORIES) { ab ->
        localTestAddressBookProvider.provide(account, provider, GroupMethod.CATEGORIES) { ab ->
@@ -234,7 +242,6 @@ class LocalGroupTest {
        }
        }
    }
    }



    @Test
    @Test
    fun testPrepareForUpload() {
    fun testPrepareForUpload() {
        localTestAddressBookProvider.provide(account, provider, GroupMethod.CATEGORIES) { ab ->
        localTestAddressBookProvider.provide(account, provider, GroupMethod.CATEGORIES) { ab ->
@@ -248,6 +255,14 @@ class LocalGroupTest {
        }
        }
    }
    }


    @Test
    fun testUpdate() {
        localTestAddressBookProvider.provide(account, provider) { ab ->
            val group = newGroup(ab)
            group.update(Contact(displayName = "New Group Name"), null, null, null, 0)
        }
    }



    // helpers
    // helpers


@@ -260,27 +275,4 @@ class LocalGroupTest {
            add()
            add()
        }
        }



    companion object {

        @JvmField
        @ClassRule
        val permissionRule = GrantPermissionRule.grant(Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS)!!

        private lateinit var provider: ContentProviderClient

        @BeforeClass
        @JvmStatic
        fun connect() {
            val context = InstrumentationRegistry.getInstrumentation().context
            provider = context.contentResolver.acquireContentProviderClient(ContactsContract.AUTHORITY)!!
        }

        @AfterClass
        @JvmStatic
        fun disconnect() {
            provider.close()
        }
    }

}
}
 No newline at end of file
+0 −1
Original line number Original line Diff line number Diff line
@@ -215,7 +215,6 @@ class LocalGroup: AndroidGroup, LocalAddress {
    override fun update(data: Contact, fileName: String?, eTag: String?, scheduleTag: String?, flags: Int) {
    override fun update(data: Contact, fileName: String?, eTag: String?, scheduleTag: String?, flags: Int) {
        this.fileName = fileName
        this.fileName = fileName
        this.eTag = eTag
        this.eTag = eTag
        this.scheduleTag = scheduleTag


        // processes this.{fileName, eTag, flags} and resets DIRTY flag
        // processes this.{fileName, eTag, flags} and resets DIRTY flag
        update(data)
        update(data)