1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
/***************************************************************************************************
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
**************************************************************************************************/
package at.bitfire.ical4android
import android.accounts.Account
import android.content.ContentProviderClient
import android.content.ContentResolver
import android.content.ContentValues
import android.content.Context
import androidx.test.platform.app.InstrumentationRegistry
import at.bitfire.ical4android.MiscUtils.ContentProviderClientHelper.closeCompat
import at.bitfire.ical4android.impl.TestJtxCollection
import at.techbee.jtx.JtxContract
import at.techbee.jtx.JtxContract.asSyncAdapter
import junit.framework.TestCase.assertEquals
import junit.framework.TestCase.assertNotNull
import org.junit.After
import org.junit.Before
import org.junit.Test
class JtxCollectionTest {
private val testAccount = Account("TEST", JtxContract.JtxCollection.TEST_ACCOUNT_TYPE)
private lateinit var contentResolver: ContentResolver
private lateinit var client: ContentProviderClient
var collection: JtxCollection<JtxICalObject>? = null
lateinit var context: Context
private val url = "https://jtx.techbee.at"
private val displayname = "jtx"
private val syncversion = JtxContract.VERSION
private val cv = ContentValues().apply {
put(JtxContract.JtxCollection.ACCOUNT_TYPE, testAccount.type)
put(JtxContract.JtxCollection.ACCOUNT_NAME, testAccount.name)
put(JtxContract.JtxCollection.URL, url)
put(JtxContract.JtxCollection.DISPLAYNAME, displayname)
put(JtxContract.JtxCollection.SYNC_VERSION, syncversion)
}
@Before
fun setUp() {
context = InstrumentationRegistry.getInstrumentation().targetContext
contentResolver = context.contentResolver
TestUtils.requestPermissions(TaskProvider.ProviderName.JtxBoard.permissions)
client = contentResolver.acquireContentProviderClient(JtxContract.AUTHORITY)!!
}
@After
fun tearDown() {
var collections = JtxCollection.find(testAccount, client, context, TestJtxCollection.Factory, null, null)
collections.forEach { collection ->
collection.delete()
}
collections = JtxCollection.find(testAccount, client, context, TestJtxCollection.Factory, null, null)
assertEquals(0, collections.size)
client.closeCompat()
}
@Test
fun create_populate_find() {
val collectionUri = JtxCollection.create(testAccount, client, cv)
assertNotNull(collectionUri)
val collections = JtxCollection.find(testAccount, client, context, TestJtxCollection.Factory, null, null)
assertEquals(1, collections.size)
assertEquals(testAccount.type, collections[0].account.type)
assertEquals(testAccount.name, collections[0].account.name)
assertEquals(url, collections[0].url)
assertEquals(displayname, collections[0].displayname)
assertEquals(syncversion.toString(), collections[0].syncstate)
}
@Test
fun queryICalObjects() {
val collectionUri = JtxCollection.create(testAccount, client, cv)
assertNotNull(collectionUri)
val collections = JtxCollection.find(testAccount, client, context, TestJtxCollection.Factory, null, null)
val items = collections[0].queryICalObjects(null, null)
assertEquals(0, items.size)
val cv = ContentValues().apply {
put(JtxContract.JtxICalObject.SUMMARY, "summary")
put(JtxContract.JtxICalObject.COMPONENT, JtxContract.JtxICalObject.Component.VJOURNAL.name)
put(JtxContract.JtxICalObject.ICALOBJECT_COLLECTIONID, collections[0].id)
}
client.insert(JtxContract.JtxICalObject.CONTENT_URI.asSyncAdapter(testAccount), cv)
val icalobjects = collections[0].queryICalObjects(null, null)
assertEquals(1, icalobjects.size)
}
}
|