19e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar/* 29e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar * Copyright (C) 2018 The Android Open Source Project 39e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar * 49e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar * Licensed under the Apache License, Version 2.0 (the "License"); 59e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar * you may not use this file except in compliance with the License. 69e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar * You may obtain a copy of the License at 79e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar * 89e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar * http://www.apache.org/licenses/LICENSE-2.0 99e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar * 109e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar * Unless required by applicable law or agreed to in writing, software 119e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar * distributed under the License is distributed on an "AS IS" BASIS, 129e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar * See the License for the specific language governing permissions and 149e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar * limitations under the License. 159e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar */ 16bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viverettepackage androidx.room.integration.kotlintestapp.test 179e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar 1883d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyarimport android.os.Build 1983d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyarimport android.support.test.filters.SdkSuppress 209e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyarimport android.support.test.runner.AndroidJUnit4 21bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.room.integration.kotlintestapp.dao.DependencyDao 22bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.room.integration.kotlintestapp.vo.DataClassFromDependency 23bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.room.integration.kotlintestapp.vo.EmbeddedFromDependency 24bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.room.integration.kotlintestapp.vo.PojoFromDependency 259e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyarimport org.hamcrest.CoreMatchers.`is` 2683d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyarimport org.hamcrest.CoreMatchers.notNullValue 2783d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyarimport org.hamcrest.CoreMatchers.nullValue 289e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyarimport org.hamcrest.MatcherAssert.assertThat 2983d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyarimport org.junit.Before 309e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyarimport org.junit.Test 319e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyarimport org.junit.runner.RunWith 329e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar 339e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar@RunWith(AndroidJUnit4::class) 349e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyarclass DependencyDaoTest : TestDatabaseTest() { 3583d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar lateinit var dao: DependencyDao 3683d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar @Before 3783d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar fun init() { 3883d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar dao = database.dependencyDao() 3983d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar } 4083d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar 419e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar @Test 429e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar fun insertAndGet() { 4383d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar val data = insertSample(3) 4483d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(dao.selectAll(), `is`(listOf(data))) 4583d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar } 4683d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar 4783d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar @Test 4883d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar fun insertAndGetByQuery() { 4983d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar val data = insertSample(3) 5083d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(dao.findById(3), `is`(data)) 5183d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(dao.findById(5), `is`(nullValue())) 5283d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar } 5383d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar 5483d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar @Test 5583d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar fun insertAndGetByQuery_embedded() { 5683d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar val data = insertSample(3) 5783d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(dao.findEmbedded(3), `is`(EmbeddedFromDependency(data))) 5883d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(dao.findEmbedded(5), `is`(nullValue())) 5983d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar } 6083d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar 6183d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar @Test 6283d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar fun insertAndGetByQuery_pojo() { 6383d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar val data = insertSample(3) 6483d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(dao.findPojo(3), `is`(PojoFromDependency( 6583d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar id = data.id, 6683d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar name = data.name))) 6783d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(dao.findPojo(5), `is`(nullValue())) 6883d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar } 6983d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar 7083d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar @SdkSuppress(minSdkVersion = Build.VERSION_CODES.LOLLIPOP) 7183d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar @Test 7283d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar fun getRelation() { 7383d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar val foo1 = DataClassFromDependency( 749e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar id = 3, 759e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar name = "foo" 769e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar ) 7783d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar val foo2 = DataClassFromDependency( 7883d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar id = 4, 7983d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar name = "foo" 8083d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar ) 8183d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar val bar = DataClassFromDependency( 8283d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar id = 5, 8383d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar name = "bar" 8483d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar ) 8583d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar dao.insert(foo1, foo2, bar) 8683d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar val fooList = dao.relation("foo") 8783d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(fooList.sharedName, `is`("foo")) 8883d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(fooList, `is`(notNullValue())) 8983d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(fooList.dataItems, `is`(listOf(foo1, foo2))) 9083d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar 9183d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar val barList = dao.relation("bar") 9283d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(barList.sharedName, `is`("bar")) 9383d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(barList, `is`(notNullValue())) 9483d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(barList.dataItems, `is`(listOf(bar))) 9583d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar 9683d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar val bazList = dao.relation("baz") 9783d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(bazList.sharedName, `is`("baz")) 9883d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(bazList, `is`(notNullValue())) 9983d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar assertThat(bazList.dataItems, `is`(emptyList())) 10083d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar } 10183d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar 10283d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar private fun insertSample(id: Int): DataClassFromDependency { 10383d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar val data = DataClassFromDependency( 10483d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar id = id, 10583d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar name = "foo" 10683d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar ) 1079e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar dao.insert(data) 10883d1d1ecd4ec87a0fa90e3e8367c7a48e8bf6e33Yigit Boyar return data 1099e828633846e3c3ff9738dbc567fe16c05e5d1b4Yigit Boyar } 110bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viverette} 111