Guest User

ui test simplyWallet OOP final version

a guest
Jul 27th, 2025
22
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 4.44 KB | Source Code | 0 0
  1. package ru.easycode.simplywallet
  2.  
  3. import android.content.Context
  4. import androidx.compose.ui.test.junit4.createAndroidComposeRule
  5. import androidx.room.Room
  6. import androidx.test.core.app.ApplicationProvider
  7. import dagger.hilt.android.testing.HiltAndroidRule
  8. import dagger.hilt.android.testing.HiltAndroidTest
  9. import dagger.hilt.android.testing.UninstallModules
  10. import org.junit.Before
  11. import org.junit.Rule
  12. import org.junit.Test
  13. import ru.easycode.simplywallet.di.FakeTime
  14. import ru.easycode.simplywallet.di.TimeModule
  15. import ru.easycode.simplywallet.main.data.FinancialRecordsDatabase
  16. import ru.easycode.simplywallet.page.AddRecordPage
  17. import ru.easycode.simplywallet.page.BarsPage
  18. import ru.easycode.simplywallet.page.ChartPage
  19. import ru.easycode.simplywallet.page.ChooseCurrencyPage
  20. import ru.easycode.simplywallet.page.HomePage
  21. import ru.easycode.simplywallet.page.MainPage
  22. import ru.easycode.simplywallet.page.SettingsPage
  23. import javax.inject.Inject
  24.  
  25. @UninstallModules(TimeModule::class)
  26. @HiltAndroidTest
  27. class ScenarioTest {
  28.  
  29.     @get:Rule(order = 0)
  30.     val hiltRule = HiltAndroidRule(this)
  31.  
  32.     @get:Rule(order = 1)
  33.     val composeTestRule = createAndroidComposeRule<MainActivity>()
  34.  
  35.     @Inject
  36.     lateinit var fakeTime: FakeTime
  37.  
  38.     @Before
  39.     fun setUp() {
  40.         hiltRule.inject()
  41.         val context = ApplicationProvider.getApplicationContext<Context>()
  42.         Room.databaseBuilder(
  43.             context,
  44.             FinancialRecordsDatabase::class.java,
  45.             context.getString(R.string.app_name)
  46.         ).build().clearAllTables()
  47.     }
  48.  
  49.     @Test
  50.     fun addRecord() {
  51.         val mainPage = MainPage(composeTestRule)
  52.         mainPage.clickSettings()
  53.  
  54.         val settingsPage = SettingsPage(composeTestRule)
  55.         settingsPage.clickChooseCurrency()
  56.  
  57.         val chooseCurrencyPage = ChooseCurrencyPage(composeTestRule)
  58.         chooseCurrencyPage.checkSaveButtonDisabled()
  59.  
  60.         chooseCurrencyPage.input(text = "ru")
  61.         chooseCurrencyPage.checkSaveButtonEnabled()
  62.  
  63.         chooseCurrencyPage.clickOn(currency = "RUB Russian Ruble")
  64.         chooseCurrencyPage.checkInput(text = "RUB")
  65.  
  66.         chooseCurrencyPage.clickSaveButton()
  67.         settingsPage.checkVisible()
  68.  
  69.         mainPage.clickHome()
  70.         val homePage = HomePage(composeTestRule)
  71.         homePage.checkMonthTotal(text = "RUB 0")
  72.         homePage.checkMonth(text = "June")
  73.  
  74.         homePage.clickAdd()
  75.         val addRecordPage = AddRecordPage(composeTestRule)
  76.         addRecordPage.checkCurrency(value = "RUB")
  77.         addRecordPage.checkTime("Jun 27, 2025 09:30")
  78.         addRecordPage.checkSaveButtonDisabled()
  79.  
  80.         addRecordPage.inputMoney(value = "1000")
  81.         addRecordPage.checkMoneyInput(value = "1,000")
  82.         addRecordPage.checkSaveButtonDisabled()
  83.  
  84.         addRecordPage.inputTitle(title = "bread")
  85.         addRecordPage.checkSaveButtonDisabled()
  86.         addRecordPage.checkCategoryInput(value = "")
  87.         addRecordPage.requestFocusOnCategoryInput()
  88.         addRecordPage.clickOnSuggestion(index = 0)
  89.         addRecordPage.checkCategoryInput("Groceries")
  90.         addRecordPage.checkSaveButtonEnabled()
  91.         addRecordPage.clickOnSaveButton()
  92.         homePage.checkMonthTotal(text = "RUB 1,000")
  93.         homePage.checkDaySum(position = 0, sum = "RUB 1,000", date = "June 27")
  94.         homePage.checkRecord(
  95.             position = 1,
  96.             title = "bread",
  97.             category = "Groceries",
  98.             money = "RUB 1,000",
  99.             drawableResId = R.drawable.ic_category_groceries
  100.         )
  101.         mainPage.clickChart()
  102.         val chartPage = ChartPage(composeTestRule)
  103.         chartPage.checkMonthTotal(sum = "RUB 1,000")
  104.         chartPage.checkMonth(text = "June")
  105.         chartPage.checkCategoryHeader(
  106.             position = 0,
  107.             drawableResId = R.drawable.ic_category_groceries,
  108.             details = "Groceries 100.00%\nRUB 1,000"
  109.         )
  110.         chartPage.clickOnCollapsableHeader(0)
  111.         chartPage.checkRecordDetail(
  112.             position = 1,
  113.             drawableResId = R.drawable.ic_category_groceries,
  114.             title = "bread",
  115.             category = "Groceries",
  116.             money = "RUB 1,000",
  117.             time = "Jun 27, 2025 09:30"
  118.         )
  119.  
  120.         mainPage.clickBars()
  121.         val barsPage = BarsPage(composeTestRule)
  122.         barsPage.checkYearTotal(year = "2025", money = "RUB 1,000")
  123.         barsPage.checkBarText(position = 0, "June\nRUB 1,000")
  124.     }
  125. }
Advertisement
Add Comment
Please, Sign In to add comment