diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 82f13d652db784779022d1d750aec18c5bc1516a..5a52fb36babdbdff97ef84b1e2b7901c66ce0027 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -2,6 +2,9 @@ <project version="4"> <component name="deploymentTargetDropDown"> <value> + <entry key="RoomTransactionRepositoryTest"> + <State /> + </entry> <entry key="app"> <State> <targetSelectedWithDropDown> @@ -18,6 +21,9 @@ <timeTargetWasSelectedWithDropDown value="2024-03-12T16:51:54.989040Z" /> </State> </entry> + <entry key="insert()"> + <State /> + </entry> </value> </component> </project> \ No newline at end of file diff --git a/app/src/androidTest/java/com/example/bondoman/repositories/room/RoomTransactionRepositoryTest.kt b/app/src/androidTest/java/com/example/bondoman/repositories/room/RoomTransactionRepositoryTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..4cbcbb5e59b7eb439d7ff606c3053377cdd1f757 --- /dev/null +++ b/app/src/androidTest/java/com/example/bondoman/repositories/room/RoomTransactionRepositoryTest.kt @@ -0,0 +1,67 @@ +package com.example.bondoman.repositories.room + +import androidx.room.Room +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.SmallTest +import com.example.bondoman.database.room.TransactionDatabase +import com.example.bondoman.entities.Transaction +import com.example.bondoman.repositories.ITransactionRepository +import kotlinx.coroutines.runBlocking +import org.junit.After +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith + + +@RunWith(AndroidJUnit4::class) +@SmallTest +class RoomTransactionRepositoryTest { + private lateinit var database: TransactionDatabase + private lateinit var transactionDao: ITransactionDao + private lateinit var transactionRepository: ITransactionRepository + @Before + fun setupDatabase() { + database = Room.inMemoryDatabaseBuilder( + ApplicationProvider.getApplicationContext(), + TransactionDatabase::class.java + ).allowMainThreadQueries().build() + + transactionDao = database.transactionDao() + transactionRepository = RoomTransactionRepository(transactionDao) + } + + @After + fun closeDatabase() { + database.close() + } + + @Test + fun insert() = runBlocking { + transactionRepository.deleteAll() + val transactionToInsert = Transaction( + 1, + "Beli seblak", + "Pengeluaran", + 20000f, + "Warung teteh", + "hahaha@email.com" + ) + transactionRepository.insert(transactionToInsert) + + val transactions = transactionRepository.getAll("hahaha@email.com") + assert(transactions.isNotEmpty()) + + val transactionInDb = transactions[0] + + assert( + transactionToInsert.id == transactionInDb.id && + transactionToInsert.title == transactionInDb.title && + transactionToInsert.category == transactionInDb.category && + transactionToInsert.amount == transactionInDb.amount && + transactionToInsert.location == transactionInDb.location && + transactionToInsert.userEmail == transactionInDb.userEmail + ) + transactionRepository.deleteAll() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/repositories/ITransactionRepository.kt b/app/src/main/java/com/example/bondoman/repositories/ITransactionRepository.kt index 93bb521510bc4e07b63a887208e0b6aa44eeee13..560f2f9cd8ec9737f46100b28d770ddd55d776c3 100644 --- a/app/src/main/java/com/example/bondoman/repositories/ITransactionRepository.kt +++ b/app/src/main/java/com/example/bondoman/repositories/ITransactionRepository.kt @@ -8,4 +8,5 @@ interface ITransactionRepository { suspend fun insert(transaction: Transaction) suspend fun update(transaction: Transaction) suspend fun delete(transaction: Transaction) + suspend fun deleteAll() } \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/repositories/room/ITransactionDao.kt b/app/src/main/java/com/example/bondoman/repositories/room/ITransactionDao.kt index 36b1611bb2b0fefdc4b0dafab83a4c8319103147..2efc81d7077242d3c9e780e0c18683f87a85920a 100644 --- a/app/src/main/java/com/example/bondoman/repositories/room/ITransactionDao.kt +++ b/app/src/main/java/com/example/bondoman/repositories/room/ITransactionDao.kt @@ -17,4 +17,7 @@ interface ITransactionDao { suspend fun update(transaction: Transaction) @Delete suspend fun delete(transaction: Transaction) + + @Query("DELETE FROM transactions") + suspend fun deleteAll() } \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/repositories/room/RoomTransactionRepository.kt b/app/src/main/java/com/example/bondoman/repositories/room/RoomTransactionRepository.kt index 85b6e0867e7623f52fc9ed6db1f866dcf56946d0..6cbe036aee2e2c9003315d7d93af861a4d742e18 100644 --- a/app/src/main/java/com/example/bondoman/repositories/room/RoomTransactionRepository.kt +++ b/app/src/main/java/com/example/bondoman/repositories/room/RoomTransactionRepository.kt @@ -16,4 +16,7 @@ class RoomTransactionRepository(private val transactionDao: ITransactionDao): override suspend fun delete(transaction: Transaction) = transactionDao.delete(transaction) + + override suspend fun deleteAll() + = transactionDao.deleteAll() } \ No newline at end of file