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

Unverified Commit 7fbec18c authored by Sunik Kupfer's avatar Sunik Kupfer Committed by GitHub
Browse files

8 support IS_READ_ONLY for Data and Group rows (closes bitfireAT/vcard4android#8) (#9)

* IS_READ_ONLY support for Data rows

* GROUP_IS_READ_ONLY support for AndroidGroup

* introduce default parameter to leave tests unchanged

* add test to check whether the read-only flag is set for groups

* add test for DataRowBuilder setting IS_READ_ONLY

* remove default param and edit all the constructor calls in tests

* add KDoc params to DataRowBuilder class
parent 581eac41
Loading
Loading
Loading
Loading
+44 −0
Original line number Diff line number Diff line
@@ -71,4 +71,48 @@ class AndroidGroupTest {
        assertEquals(0, addressBook.queryGroups("${ContactsContract.Groups.TITLE}=?", arrayOf(contact.displayName!!)).size)
    }

    @Test
    fun testAdd_readOnly() {
        addressBook.readOnly = true

        val contact = Contact()
        contact.displayName = "at.bitfire.vcard4android-AndroidGroupTest"
        contact.note = "(test group)"

        // ensure we start without this group
        assertEquals(0, addressBook.queryGroups("${ContactsContract.Groups.TITLE}=?", arrayOf(contact.displayName!!)).size)

        // create group
        val group = AndroidGroup(addressBook, contact, null, null)
        group.add()
        val groups = addressBook.queryGroups("${ContactsContract.Groups.GROUP_IS_READ_ONLY}=?", arrayOf("1"))
        assertEquals(1, groups.size)

        // delete group
        group.delete()
        assertEquals(0, addressBook.queryGroups("${ContactsContract.Groups.TITLE}=?", arrayOf(contact.displayName!!)).size)
    }

    @Test
    fun testAdd_notReadOnly() {
        addressBook.readOnly = false

        val contact = Contact()
        contact.displayName = "at.bitfire.vcard4android-AndroidGroupTest"
        contact.note = "(test group)"

        // ensure we start without this group
        assertEquals(0, addressBook.queryGroups("${ContactsContract.Groups.TITLE}=?", arrayOf(contact.displayName!!)).size)

        // create group
        val group = AndroidGroup(addressBook, contact, null, null)
        group.add()
        val groups = addressBook.queryGroups("${ContactsContract.Groups.GROUP_IS_READ_ONLY}=?", arrayOf("0"))
        assertEquals(1, groups.size)

        // delete group
        group.delete()
        assertEquals(0, addressBook.queryGroups("${ContactsContract.Groups.TITLE}=?", arrayOf(contact.displayName!!)).size)
    }

}
+37 −0
Original line number Diff line number Diff line
/***************************************************************************************************
 * Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
 **************************************************************************************************/

package at.bitfire.vcard4android.contactrow

import android.net.Uri
import at.bitfire.vcard4android.BatchOperation
import at.bitfire.vcard4android.Contact
import org.junit.Assert.*
import org.junit.Test
import java.util.*

class DataRowBuilderTest {

    @Test
    fun newDataRow_readOnly() {
        val list = TestDataRowBuilder(Uri.EMPTY, 0, Contact(), true).build()
        assertEquals(1, list[0].values["is_read_only"])
    }

    @Test
    fun newDataRow_notReadOnly() {
        val list = TestDataRowBuilder(Uri.EMPTY, 0, Contact(), false).build()
        assertEquals(null, list[0].values["is_read_only"]) // ensure value was not set
    }

    class TestDataRowBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean)
        : DataRowBuilder("", dataRowUri, rawContactId, contact, readOnly) {
        override fun build(): List<BatchOperation.CpoBuilder> {
            return LinkedList<BatchOperation.CpoBuilder>().apply {
                add(newDataRow())
            }
        }
    }

}
 No newline at end of file
+10 −10
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ class EmailBuilderTest {

    @Test
    fun testEmpty() {
        EmailBuilder(Uri.EMPTY, null, Contact()).build().also { result ->
        EmailBuilder(Uri.EMPTY, null, Contact(), false).build().also { result ->
            assertEquals(0, result.size)
        }
    }
@@ -28,7 +28,7 @@ class EmailBuilderTest {
    fun testAddress_Address() {
        EmailBuilder(Uri.EMPTY, null, Contact().apply {
            emails += LabeledProperty(Email("test@example.com"))
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(1, result.size)
            assertEquals("test@example.com", result[0].values[CommonDataKinds.Email.ADDRESS])
        }
@@ -38,7 +38,7 @@ class EmailBuilderTest {
    fun testAddress_Blank() {
        EmailBuilder(Uri.EMPTY, null, Contact().apply {
            emails += LabeledProperty(Email(""))
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(0, result.size)
        }
    }
@@ -48,7 +48,7 @@ class EmailBuilderTest {
    fun testLabel() {
        EmailBuilder(Uri.EMPTY, null, Contact().apply {
            emails += LabeledProperty(Email("test@example.com"), "Label")
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals("Label", result[0].values[CommonDataKinds.Email.LABEL])
        }
    }
@@ -58,7 +58,7 @@ class EmailBuilderTest {
    fun testMimeType() {
        EmailBuilder(Uri.EMPTY, null, Contact().apply {
            emails += LabeledProperty(Email("test@example.com"))
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(CommonDataKinds.Email.CONTENT_ITEM_TYPE, result[0].values[CommonDataKinds.Email.MIMETYPE])
        }
    }
@@ -68,7 +68,7 @@ class EmailBuilderTest {
    fun testPref_None() {
        EmailBuilder(Uri.EMPTY, null, Contact().apply {
            emails += LabeledProperty(Email("test@example.com"))
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(0, result[0].values[CommonDataKinds.Email.IS_PRIMARY])
        }
    }
@@ -79,7 +79,7 @@ class EmailBuilderTest {
            emails += LabeledProperty(Email("test@example.com").apply {
                pref = 1
            })
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(1, result[0].values[CommonDataKinds.Email.IS_PRIMARY])
        }
    }
@@ -91,7 +91,7 @@ class EmailBuilderTest {
            emails += LabeledProperty(Email("test@example.com").apply {
                types.add(EmailType.HOME)
            })
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(CommonDataKinds.Email.TYPE_HOME, result[0].values[CommonDataKinds.Email.TYPE])
        }
    }
@@ -102,7 +102,7 @@ class EmailBuilderTest {
            emails += LabeledProperty(Email("test@example.com").apply {
                types.add(CustomType.Email.MOBILE)
            })
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(CommonDataKinds.Email.TYPE_MOBILE, result[0].values[CommonDataKinds.Email.TYPE])
        }
    }
@@ -113,7 +113,7 @@ class EmailBuilderTest {
            emails += LabeledProperty(Email("test@example.com").apply {
                types.add(EmailType.WORK)
            })
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(CommonDataKinds.Email.TYPE_WORK, result[0].values[CommonDataKinds.Email.TYPE])
        }
    }
+8 −8
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ class EventBuilderTest {

    @Test
    fun testEmpty() {
        EventBuilder(Uri.EMPTY, null, Contact()).build().also { result ->
        EventBuilder(Uri.EMPTY, null, Contact(), false).build().also { result ->
            assertEquals(0, result.size)
        }
    }
@@ -32,7 +32,7 @@ class EventBuilderTest {
            anniversary = Anniversary(Calendar.getInstance().apply {
                set(1984, /* zero-based */ 7, 20)
            })
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(1, result.size)
            assertEquals("1984-08-20", result[0].values[CommonDataKinds.Event.START_DATE])
            assertEquals(CommonDataKinds.Event.TYPE_ANNIVERSARY, result[0].values[CommonDataKinds.Event.TYPE])
@@ -60,7 +60,7 @@ class EventBuilderTest {
            anniversary = Anniversary(Calendar.getInstance().apply {
                set(1984, /* zero-based */ 7, 20)
            })
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(1, result.size)
            assertEquals("1984-08-20", result[0].values[CommonDataKinds.Event.START_DATE])
        }
@@ -74,7 +74,7 @@ class EventBuilderTest {
                .date(20)
                .month(8)
                .build()), "Custom Event")
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(CommonDataKinds.Event.TYPE_CUSTOM, result[0].values[CommonDataKinds.Event.TYPE])
            assertEquals("Custom Event", result[0].values[CommonDataKinds.Event.LABEL])
        }
@@ -88,7 +88,7 @@ class EventBuilderTest {
                set(1984, /* zero-based */ 7, 20)
            })
        }
        EventBuilder(Uri.EMPTY, null, c).build().also { result ->
        EventBuilder(Uri.EMPTY, null, c, false).build().also { result ->
            assertEquals(CommonDataKinds.Event.CONTENT_ITEM_TYPE, result[0].values[CommonDataKinds.Event.MIMETYPE])
        }
    }
@@ -100,7 +100,7 @@ class EventBuilderTest {
            anniversary = Anniversary(Calendar.getInstance().apply {
                set(1984, /* zero-based */ 7, 20)
            })
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(CommonDataKinds.Event.TYPE_ANNIVERSARY, result[0].values[CommonDataKinds.Event.TYPE])
        }
    }
@@ -111,7 +111,7 @@ class EventBuilderTest {
            birthDay = Birthday(Calendar.getInstance().apply {
                set(1984, /* zero-based */ 7, 20)
            })
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(CommonDataKinds.Event.TYPE_BIRTHDAY, result[0].values[CommonDataKinds.Event.TYPE])
        }
    }
@@ -123,7 +123,7 @@ class EventBuilderTest {
                .date(20)
                .month(8)
                .build()))
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(CommonDataKinds.Event.TYPE_OTHER, result[0].values[CommonDataKinds.Event.TYPE])
        }
    }
+11 −11
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ class ImBuilderTest {

    @Test
    fun testEmpty() {
        ImBuilder(Uri.EMPTY, null, Contact()).build().also { result ->
        ImBuilder(Uri.EMPTY, null, Contact(), false).build().also { result ->
            assertEquals(0, result.size)
        }
    }
@@ -27,7 +27,7 @@ class ImBuilderTest {
    fun testHandle_Empty() {
        ImBuilder(Uri.EMPTY, null, Contact().apply {
            impps += LabeledProperty(Impp(""))
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(0, result.size)
        }
    }
@@ -36,7 +36,7 @@ class ImBuilderTest {
    fun testHandle_WithoutProtocol() {
        ImBuilder(Uri.EMPTY, null, Contact().apply {
            impps += LabeledProperty(Impp("test@example.com"))
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(0, result.size)
        }
    }
@@ -45,7 +45,7 @@ class ImBuilderTest {
    fun testHandle_WithProtocol() {
        ImBuilder(Uri.EMPTY, null, Contact().apply {
            impps += LabeledProperty(Impp.xmpp("jabber@example.com"))
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(1, result.size)
            assertEquals(CommonDataKinds.Im.PROTOCOL_CUSTOM, result[0].values[CommonDataKinds.Im.PROTOCOL])
            assertEquals("xmpp", result[0].values[CommonDataKinds.Im.CUSTOM_PROTOCOL])
@@ -58,7 +58,7 @@ class ImBuilderTest {
    fun testIgnoreSip() {
        ImBuilder(Uri.EMPTY, null, Contact().apply {
            impps += LabeledProperty(Impp("sip:voip@example.com"))
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(0, result.size)
        }
    }
@@ -68,7 +68,7 @@ class ImBuilderTest {
    fun testLabel() {
        ImBuilder(Uri.EMPTY, null, Contact().apply {
            impps += LabeledProperty(Impp.xmpp("jabber@example.com"), "Label")
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(CommonDataKinds.Im.TYPE_CUSTOM, result[0].values[CommonDataKinds.Im.TYPE])
            assertEquals("Label", result[0].values[CommonDataKinds.Im.LABEL])
        }
@@ -79,7 +79,7 @@ class ImBuilderTest {
    fun testMimeType() {
        ImBuilder(Uri.EMPTY, null, Contact().apply {
            impps += LabeledProperty(Impp.xmpp("jabber@example.com"))
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(CommonDataKinds.Im.CONTENT_ITEM_TYPE, result[0].values[CommonDataKinds.Im.MIMETYPE])
        }
    }
@@ -89,7 +89,7 @@ class ImBuilderTest {
    fun testProtocol_Sip() {
        ImBuilder(Uri.EMPTY, null, Contact().apply {
            impps += LabeledProperty(Impp.sip("voip@example.com"))
        }).build().also { result ->
        }, false).build().also { result ->
            // handled by SipAddressHandler
            assertEquals(0, result.size)
        }
@@ -102,7 +102,7 @@ class ImBuilderTest {
            impps += LabeledProperty(Impp.xmpp("jabber@example.com").apply {
                types.add(ImppType.HOME)
            })
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(CommonDataKinds.Im.TYPE_HOME, result[0].values[CommonDataKinds.Im.TYPE])
        }
    }
@@ -114,7 +114,7 @@ class ImBuilderTest {
            impps += LabeledProperty(Impp.xmpp("jabber@example.com").apply {
                types.add(ImppType.MOBILE)
            })
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(CommonDataKinds.Im.TYPE_OTHER, result[0].values[CommonDataKinds.Im.TYPE])
        }
    }
@@ -125,7 +125,7 @@ class ImBuilderTest {
            impps += LabeledProperty(Impp.xmpp("jabber@example.com").apply {
                types.add(ImppType.WORK)
            })
        }).build().also { result ->
        }, false).build().also { result ->
            assertEquals(CommonDataKinds.Im.TYPE_WORK, result[0].values[CommonDataKinds.Im.TYPE])
        }
    }
Loading