1
+ package com.example.tamaskozmer.kotlinrxexample.model.persistence.daos
2
+
3
+ import android.arch.persistence.room.Room
4
+ import android.support.test.InstrumentationRegistry
5
+ import android.support.test.runner.AndroidJUnit4
6
+ import com.example.tamaskozmer.kotlinrxexample.model.entities.User
7
+ import com.example.tamaskozmer.kotlinrxexample.model.persistence.AppDatabase
8
+ import org.junit.After
9
+ import org.junit.Assert
10
+ import org.junit.Before
11
+ import org.junit.Test
12
+ import org.junit.runner.RunWith
13
+
14
+ /* *
15
+ * Created by Tamas_Kozmer on 7/24/2017.
16
+ */
17
+ @RunWith(AndroidJUnit4 ::class )
18
+ class UserDaoTest {
19
+
20
+ lateinit var userDao: UserDao
21
+ lateinit var database: AppDatabase
22
+
23
+ @Before
24
+ fun setup () {
25
+ val context = InstrumentationRegistry .getTargetContext()
26
+ database = Room .inMemoryDatabaseBuilder(context, AppDatabase ::class .java).build()
27
+ userDao = database.userDao()
28
+ }
29
+
30
+ @After
31
+ fun tearDown () {
32
+ database.close()
33
+ }
34
+
35
+ @Test
36
+ fun testInsertedAndRetrievedUsersMatch () {
37
+ val users = listOf (User (1 , " Name" , 100 , " url" ), User ())
38
+ userDao.insertAll(users)
39
+
40
+ val allUsers = userDao.getUsers(1 )
41
+ Assert .assertEquals(users, allUsers)
42
+ }
43
+
44
+ @Test
45
+ fun testUsersOrderedByCorrectly () {
46
+ val users = listOf (
47
+ User (1 , " Name" , 100 , " url" ),
48
+ User (2 , " Name2" , 500 , " url" ),
49
+ User (3 , " Name3" , 300 , " url" ))
50
+ userDao.insertAll(users)
51
+
52
+ val allUsers = userDao.getUsers(1 )
53
+ val expectedUsers = users.sortedByDescending { it.reputation }
54
+ Assert .assertEquals(expectedUsers, allUsers)
55
+ }
56
+
57
+ @Test
58
+ fun testConflictingInsertsReplaceUsers () {
59
+ val users = listOf (
60
+ User (1 , " Name" , 100 , " url" ),
61
+ User (2 , " Name2" , 500 , " url" ),
62
+ User (3 , " Name3" , 300 , " url" ))
63
+
64
+ val users2 = listOf (
65
+ User (1 , " Name" , 1000 , " url" ),
66
+ User (2 , " Name2" , 700 , " url" ),
67
+ User (4 , " Name3" , 5500 , " url" ))
68
+ userDao.insertAll(users)
69
+ userDao.insertAll(users2)
70
+
71
+ val allUsers = userDao.getUsers(1 )
72
+ val expectedUsers = listOf (
73
+ User (4 , " Name3" , 5500 , " url" ),
74
+ User (1 , " Name" , 1000 , " url" ),
75
+ User (2 , " Name2" , 700 , " url" ),
76
+ User (3 , " Name3" , 300 , " url" ))
77
+
78
+ Assert .assertEquals(expectedUsers, allUsers)
79
+ }
80
+
81
+ @Test
82
+ fun testLimitUsersPerPage_FirstPageOnly30Items () {
83
+ val users = (1 .. 40L ).map { User (it, " Name $it " , it * 100 , " url" ) }
84
+
85
+ userDao.insertAll(users)
86
+
87
+ val retrievedUsers = userDao.getUsers(1 )
88
+ Assert .assertEquals(30 , retrievedUsers.size)
89
+ }
90
+
91
+ @Test
92
+ fun testRequestSecondPage_LimitUsersPerPage_showOnlyRemainingItems () {
93
+ val users = (1 .. 40L ).map { User (it, " Name $it " , it * 100 , " url" ) }
94
+
95
+ userDao.insertAll(users)
96
+
97
+ val retrievedUsers = userDao.getUsers(2 )
98
+ Assert .assertEquals(10 , retrievedUsers.size)
99
+ }
100
+ }
0 commit comments