Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.easycode.simplywallet
- import android.content.Context
- import androidx.compose.ui.test.junit4.createAndroidComposeRule
- import androidx.room.Room
- import androidx.test.core.app.ApplicationProvider
- import dagger.hilt.android.testing.HiltAndroidRule
- import dagger.hilt.android.testing.HiltAndroidTest
- import dagger.hilt.android.testing.UninstallModules
- import org.junit.Before
- import org.junit.Rule
- import org.junit.Test
- import ru.easycode.simplywallet.di.FakeTime
- import ru.easycode.simplywallet.di.TimeModule
- import ru.easycode.simplywallet.main.data.FinancialRecordsDatabase
- import ru.easycode.simplywallet.page.AddRecordPage
- import ru.easycode.simplywallet.page.BarsPage
- import ru.easycode.simplywallet.page.ChartPage
- import ru.easycode.simplywallet.page.ChooseCurrencyPage
- import ru.easycode.simplywallet.page.HomePage
- import ru.easycode.simplywallet.page.MainPage
- import ru.easycode.simplywallet.page.SettingsPage
- import javax.inject.Inject
- @UninstallModules(TimeModule::class)
- @HiltAndroidTest
- class ScenarioTest {
- @get:Rule(order = 0)
- val hiltRule = HiltAndroidRule(this)
- @get:Rule(order = 1)
- val composeTestRule = createAndroidComposeRule<MainActivity>()
- @Inject
- lateinit var fakeTime: FakeTime
- @Before
- fun setUp() {
- hiltRule.inject()
- val context = ApplicationProvider.getApplicationContext<Context>()
- Room.databaseBuilder(
- context,
- FinancialRecordsDatabase::class.java,
- context.getString(R.string.app_name)
- ).build().clearAllTables()
- }
- @Test
- fun addRecord() {
- val mainPage = MainPage(composeTestRule)
- mainPage.clickSettings()
- val settingsPage = SettingsPage(composeTestRule)
- settingsPage.clickChooseCurrency()
- val chooseCurrencyPage = ChooseCurrencyPage(composeTestRule)
- chooseCurrencyPage.checkSaveButtonDisabled()
- chooseCurrencyPage.input(text = "ru")
- chooseCurrencyPage.checkSaveButtonEnabled()
- chooseCurrencyPage.clickOn(currency = "RUB Russian Ruble")
- chooseCurrencyPage.checkInput(text = "RUB")
- chooseCurrencyPage.clickSaveButton()
- settingsPage.checkVisible()
- mainPage.clickHome()
- val homePage = HomePage(composeTestRule)
- homePage.checkMonthTotal(text = "RUB 0")
- homePage.checkMonth(text = "June")
- homePage.clickAdd()
- val addRecordPage = AddRecordPage(composeTestRule)
- addRecordPage.checkCurrency(value = "RUB")
- addRecordPage.checkTime("Jun 27, 2025 09:30")
- addRecordPage.checkSaveButtonDisabled()
- addRecordPage.inputMoney(value = "1000")
- addRecordPage.checkMoneyInput(value = "1,000")
- addRecordPage.checkSaveButtonDisabled()
- addRecordPage.inputTitle(title = "bread")
- addRecordPage.checkSaveButtonDisabled()
- addRecordPage.checkCategoryInput(value = "")
- addRecordPage.requestFocusOnCategoryInput()
- addRecordPage.clickOnSuggestion(index = 0)
- addRecordPage.checkCategoryInput("Groceries")
- addRecordPage.checkSaveButtonEnabled()
- addRecordPage.clickOnSaveButton()
- homePage.checkMonthTotal(text = "RUB 1,000")
- homePage.checkDaySum(position = 0, sum = "RUB 1,000", date = "June 27")
- homePage.checkRecord(
- position = 1,
- title = "bread",
- category = "Groceries",
- money = "RUB 1,000",
- drawableResId = R.drawable.ic_category_groceries
- )
- mainPage.clickChart()
- val chartPage = ChartPage(composeTestRule)
- chartPage.checkMonthTotal(sum = "RUB 1,000")
- chartPage.checkMonth(text = "June")
- chartPage.checkCategoryHeader(
- position = 0,
- drawableResId = R.drawable.ic_category_groceries,
- details = "Groceries 100.00%\nRUB 1,000"
- )
- chartPage.clickOnCollapsableHeader(0)
- chartPage.checkRecordDetail(
- position = 1,
- drawableResId = R.drawable.ic_category_groceries,
- title = "bread",
- category = "Groceries",
- money = "RUB 1,000",
- time = "Jun 27, 2025 09:30"
- )
- mainPage.clickBars()
- val barsPage = BarsPage(composeTestRule)
- barsPage.checkYearTotal(year = "2025", money = "RUB 1,000")
- barsPage.checkBarText(position = 0, "June\nRUB 1,000")
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment