diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsRangesTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsRangesTest.kt index a63cb3ec..d9d0714a 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsRangesTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsRangesTest.kt @@ -18,7 +18,6 @@ import com.example.util.simpletimetracker.utils.clickOnView import com.example.util.simpletimetracker.utils.clickOnViewWithId import com.example.util.simpletimetracker.utils.clickOnViewWithText import com.example.util.simpletimetracker.utils.longClickOnViewWithId -import com.example.util.simpletimetracker.utils.typeTextIntoView import org.hamcrest.CoreMatchers.allOf import org.hamcrest.CoreMatchers.equalTo import org.junit.Test @@ -35,10 +34,7 @@ class StatisticsRangesTest : BaseUiTest() { val name = "Test" // Add activity - NavUtils.openRunningRecordsScreen() - clickOnView(withText(R.string.running_records_add_type)) - typeTextIntoView(R.id.etChangeRecordTypeName, name) - clickOnView(withText(R.string.change_record_type_save)) + NavUtils.addActivity(name) // Start timer clickOnViewWithText(name) diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/utils/NavUtils.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/utils/NavUtils.kt index 5f927e08..8e004f8e 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/utils/NavUtils.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/utils/NavUtils.kt @@ -3,6 +3,7 @@ package com.example.util.simpletimetracker.utils import android.widget.TimePicker import androidx.test.espresso.Espresso.closeSoftKeyboard import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.action.ViewActions.click import androidx.test.espresso.contrib.PickerActions import androidx.test.espresso.matcher.ViewMatchers import androidx.test.espresso.matcher.ViewMatchers.hasDescendant @@ -35,7 +36,7 @@ object NavUtils { fun openCategoriesScreen() { openSettingsScreen() - clickOnViewWithText(R.string.settings_edit_categories) + onView(withText(R.string.settings_edit_categories)).perform(nestedScrollTo(), click()) } fun addActivity( diff --git a/core/src/main/java/com/example/util/simpletimetracker/core/utils/TestUtils.kt b/core/src/main/java/com/example/util/simpletimetracker/core/utils/TestUtils.kt index f3e93759..0078eedf 100644 --- a/core/src/main/java/com/example/util/simpletimetracker/core/utils/TestUtils.kt +++ b/core/src/main/java/com/example/util/simpletimetracker/core/utils/TestUtils.kt @@ -6,6 +6,7 @@ import com.example.util.simpletimetracker.domain.extension.orZero import com.example.util.simpletimetracker.domain.interactor.CategoryInteractor import com.example.util.simpletimetracker.domain.interactor.PrefsInteractor import com.example.util.simpletimetracker.domain.interactor.RecordInteractor +import com.example.util.simpletimetracker.domain.interactor.RecordTypeCategoryInteractor import com.example.util.simpletimetracker.domain.interactor.RecordTypeInteractor import com.example.util.simpletimetracker.domain.interactor.RunningRecordInteractor import com.example.util.simpletimetracker.domain.model.Record @@ -19,6 +20,7 @@ class TestUtils @Inject constructor( private val recordInteractor: RecordInteractor, private val runningRecordInteractor: RunningRecordInteractor, private val categoryInteractor: CategoryInteractor, + private val recordTypeCategoryInteractor: RecordTypeCategoryInteractor, private val prefsInteractor: PrefsInteractor, private val iconMapper: IconMapper ) { @@ -28,6 +30,7 @@ class TestUtils @Inject constructor( recordInteractor.clear() runningRecordInteractor.clear() categoryInteractor.clear() + recordTypeCategoryInteractor.clear() } fun clearPrefs() = runBlocking { @@ -38,7 +41,8 @@ class TestUtils @Inject constructor( name: String, color: Int? = null, icon: Int? = null, - goalTime: Long? = null + goalTime: Long? = null, + categories: List = emptyList() ) = runBlocking { val icons = iconMapper.availableIconsNames val iconId = icons.filterValues { it == icon }.keys.firstOrNull() @@ -47,6 +51,8 @@ class TestUtils @Inject constructor( val colors = ColorMapper.getAvailableColors(false) val colorId = colors.indexOf(color).takeUnless { it == -1 }.orZero() + val availableCategories = categoryInteractor.getAll() + val data = RecordType( name = name, color = colorId, @@ -54,7 +60,18 @@ class TestUtils @Inject constructor( goalTime = goalTime.orZero() ) - recordTypeInteractor.add(data) + val typeId = recordTypeInteractor.add(data) + + categories + .mapNotNull { categoryName -> + availableCategories.firstOrNull { it.name == categoryName }?.id + } + .takeUnless { + it.isEmpty() + } + ?.let { categoryIds -> + recordTypeCategoryInteractor.addCategories(typeId, categoryIds) + } } fun addRecord( diff --git a/data_local/src/main/java/com/example/util/simpletimetracker/data_local/repo/RecordCacheRepoImpl.kt b/data_local/src/main/java/com/example/util/simpletimetracker/data_local/repo/RecordCacheRepoImpl.kt index ebee0c0c..f9154136 100644 --- a/data_local/src/main/java/com/example/util/simpletimetracker/data_local/repo/RecordCacheRepoImpl.kt +++ b/data_local/src/main/java/com/example/util/simpletimetracker/data_local/repo/RecordCacheRepoImpl.kt @@ -14,6 +14,8 @@ class RecordCacheRepoImpl @Inject constructor() : RecordCacheRepo { override fun getFromRange(start: Long, end: Long): List? { Timber.d("getFromRange") + // TODO cache is disabled to avoid synchronization issues, especially in tests + return null return recordsByRange[start to end] } diff --git a/data_local/src/main/java/com/example/util/simpletimetracker/data_local/repo/RecordTypeCacheRepoImpl.kt b/data_local/src/main/java/com/example/util/simpletimetracker/data_local/repo/RecordTypeCacheRepoImpl.kt index aa78b2f2..ea55361a 100644 --- a/data_local/src/main/java/com/example/util/simpletimetracker/data_local/repo/RecordTypeCacheRepoImpl.kt +++ b/data_local/src/main/java/com/example/util/simpletimetracker/data_local/repo/RecordTypeCacheRepoImpl.kt @@ -13,6 +13,8 @@ class RecordTypeCacheRepoImpl @Inject constructor() : RecordTypeCacheRepo { override fun getAll(): List { Timber.d("getAll") + // TODO cache is disabled to avoid synchronization issues, especially in tests + return emptyList() return recordTypes }