From b142e95ea91585c10db01cfc23e6d7069259efea Mon Sep 17 00:00:00 2001
From: Haziq <haziqabiyyu@gmail.com>
Date: Tue, 19 Mar 2024 22:00:43 +0700
Subject: [PATCH] test: insert transaction into db

---
 .idea/deploymentTargetDropDown.xml            |  6 ++
 .../room/RoomTransactionRepositoryTest.kt     | 67 +++++++++++++++++++
 .../repositories/ITransactionRepository.kt    |  1 +
 .../repositories/room/ITransactionDao.kt      |  3 +
 .../room/RoomTransactionRepository.kt         |  3 +
 5 files changed, 80 insertions(+)
 create mode 100644 app/src/androidTest/java/com/example/bondoman/repositories/room/RoomTransactionRepositoryTest.kt

diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 82f13d6..5a52fb3 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 0000000..4cbcbb5
--- /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 93bb521..560f2f9 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 36b1611..2efc81d 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 85b6e08..6cbe036 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
-- 
GitLab