Skip to content

Commit f209121

Browse files
committed
add new tests
1 parent f0baba3 commit f209121

File tree

3 files changed

+119
-8
lines changed

3 files changed

+119
-8
lines changed

app/src/androidTest/java/com/example/util/simpletimetracker/ComplexRulesTest.kt

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.example.util.simpletimetracker
22

3+
import androidx.test.espresso.Espresso.closeSoftKeyboard
34
import androidx.test.espresso.Espresso.pressBack
45
import androidx.test.espresso.matcher.ViewMatchers.hasDescendant
56
import androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed
@@ -18,6 +19,7 @@ import com.example.util.simpletimetracker.utils.clickOnViewWithId
1819
import com.example.util.simpletimetracker.utils.clickOnViewWithText
1920
import com.example.util.simpletimetracker.utils.longClickOnView
2021
import com.example.util.simpletimetracker.utils.tryAction
22+
import com.example.util.simpletimetracker.utils.typeTextIntoView
2123
import dagger.hilt.android.testing.HiltAndroidTest
2224
import kotlinx.coroutines.runBlocking
2325
import org.hamcrest.CoreMatchers.allOf
@@ -27,6 +29,7 @@ import java.util.Calendar
2729
import com.example.util.simpletimetracker.feature_change_record_tag.R as changeRecordTagR
2830
import com.example.util.simpletimetracker.feature_change_record_type.R as changeRecordTypeR
2931
import com.example.util.simpletimetracker.feature_complex_rules.R as complexRulesR
32+
import com.example.util.simpletimetracker.feature_dialogs.R as dialogsR
3033

3134
@HiltAndroidTest
3235
@RunWith(AndroidJUnit4::class)
@@ -574,6 +577,47 @@ class ComplexRulesTest : BaseUiTest() {
574577
checkRunningRecordWithTag(typeName, tagName)
575578
}
576579

580+
@Test
581+
fun assignTagValueFromRule() {
582+
val typeName = "typeName"
583+
val tagName = "tagName"
584+
val tagValueText = "12.3"
585+
586+
// Add data
587+
runBlocking { prefsInteractor.setAllowMultitasking(false) }
588+
testUtils.addActivity(typeName)
589+
testUtils.addRecordTag(
590+
tagName = tagName,
591+
typeName = typeName,
592+
hasTagValue = true,
593+
)
594+
595+
// Create rule
596+
NavUtils.openSettingsScreen()
597+
NavUtils.openSettingsAdditional()
598+
NavUtils.openComplexRules()
599+
clickOnViewWithText(R.string.running_records_add_type)
600+
clickOnViewWithText(R.string.change_complex_rule_choose_action)
601+
clickOnViewWithText(R.string.change_complex_action_assign_tag)
602+
clickOnViewWithText(tagName)
603+
typeTextIntoView(R.id.etCommentItemField, tagValueText)
604+
closeSoftKeyboard()
605+
clickOnViewWithId(dialogsR.id.btnRecordTagSelectionSave)
606+
clickOnViewWithId(dialogsR.id.btnTypesSelectionSave)
607+
clickOnViewWithText(R.string.change_complex_starting_activity)
608+
clickOnViewWithText(typeName)
609+
clickOnViewWithText(R.string.change_activity_filter_save)
610+
611+
// Check rule
612+
checkViewIsDisplayed(withSubstring(tagValueText))
613+
pressBack()
614+
615+
// Check record started
616+
NavUtils.openRunningRecordsScreen()
617+
clickOnViewWithText(typeName)
618+
checkRunningRecordWithTag(typeName, tagName, tagValueText)
619+
}
620+
577621
@Test
578622
fun archiveAndRemoveData() {
579623
val typeName1 = "typeName1"
@@ -689,11 +733,19 @@ class ComplexRulesTest : BaseUiTest() {
689733
checkViewDoesNotExist(allOf(withId(R.id.viewRunningRecordItem), hasDescendant(withText(name))))
690734
}
691735

692-
private fun checkRunningRecordWithTag(name: String, tagName: String) {
736+
private fun checkRunningRecordWithTag(
737+
name: String,
738+
tagName: String,
739+
tagValue: String? = null,
740+
) {
741+
val tagName = buildString {
742+
append("$name - $tagName")
743+
tagValue?.let { value -> append(" ($value)") }
744+
}
693745
checkViewIsDisplayed(
694746
allOf(
695747
withId(R.id.viewRunningRecordItem),
696-
hasDescendant(withText("$name - $tagName")),
748+
hasDescendant(withText(tagName)),
697749
),
698750
)
699751
}

app/src/androidTest/java/com/example/util/simpletimetracker/SettingsTest.kt

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import androidx.test.espresso.Espresso.onData
66
import androidx.test.espresso.Espresso.onView
77
import androidx.test.espresso.Espresso.pressBack
88
import androidx.test.espresso.action.ViewActions.scrollTo
9+
import androidx.test.espresso.assertion.PositionAssertions.isCompletelyAbove
910
import androidx.test.espresso.contrib.PickerActions.setDate
1011
import androidx.test.espresso.contrib.PickerActions.setTime
1112
import androidx.test.espresso.matcher.ViewMatchers.hasDescendant
@@ -23,6 +24,7 @@ import com.example.util.simpletimetracker.core.extension.setWeekToFirstDay
2324
import com.example.util.simpletimetracker.core.interactor.LanguageInteractor
2425
import com.example.util.simpletimetracker.domain.activityFilter.model.ActivityFilter
2526
import com.example.util.simpletimetracker.domain.base.DurationFormat
27+
import com.example.util.simpletimetracker.domain.complexRule.model.ComplexRule
2628
import com.example.util.simpletimetracker.domain.daysOfWeek.model.DayOfWeek
2729
import com.example.util.simpletimetracker.domain.extension.padDuration
2830
import com.example.util.simpletimetracker.domain.language.AppLanguage
@@ -1741,6 +1743,61 @@ class SettingsTest : BaseUiTest() {
17411743
tryAction { clickOnView(allOf(isDescendantOfA(withId(baseR.id.viewRunningRecordItem)), withText(name))) }
17421744
}
17431745

1746+
@Test
1747+
fun showRecordTagSelectionPreselectedTags() {
1748+
val typeName = "PreselectType"
1749+
val defaultTag = "DefaultTag"
1750+
val ruleTag = "RuleTag"
1751+
val ruleTagValue = 1.2
1752+
val generalTag = "GeneralTag"
1753+
val fullTagName = "$ruleTag (1.2)"
1754+
val fullName = "$typeName - $defaultTag, $fullTagName"
1755+
1756+
runBlocking { prefsInteractor.setShowRecordTagSelection(true) }
1757+
testUtils.addActivity(typeName)
1758+
testUtils.addRecordTag(
1759+
tagName = defaultTag,
1760+
typeName = typeName,
1761+
defaultTypes = listOf(typeName),
1762+
)
1763+
testUtils.addRecordTag(
1764+
tagName = generalTag,
1765+
)
1766+
testUtils.addRecordTag(
1767+
tagName = ruleTag,
1768+
typeName = typeName,
1769+
hasTagValue = true,
1770+
)
1771+
testUtils.addComplexRule(
1772+
action = ComplexRule.Action.AssignTag,
1773+
startingTypeNames = listOf(typeName),
1774+
assignTagNames = listOf(ruleTag),
1775+
assignTagValues = mapOf(ruleTag to ruleTagValue),
1776+
)
1777+
1778+
Thread.sleep(1000)
1779+
1780+
// Check preselected
1781+
tryAction { clickOnViewWithText(typeName) }
1782+
checkViewIsDisplayed(withText(coreR.string.something_selected))
1783+
checkViewIsDisplayed(withText(fullTagName))
1784+
onView(withText(defaultTag))
1785+
.check(isCompletelyAbove(withText(generalTag)))
1786+
onView(withText(fullTagName))
1787+
.check(isCompletelyAbove(withText(generalTag)))
1788+
1789+
// Save
1790+
clickOnViewWithText(coreR.string.duration_dialog_save)
1791+
tryAction {
1792+
checkViewIsDisplayed(
1793+
allOf(
1794+
withId(baseR.id.viewRunningRecordItem),
1795+
hasDescendant(withText(fullName)),
1796+
),
1797+
)
1798+
}
1799+
}
1800+
17441801
@Test
17451802
fun recordTagSelectionClose() {
17461803
val name = "TypeName"

core/src/main/java/com/example/util/simpletimetracker/core/utils/TestUtils.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -325,22 +325,24 @@ class TestUtils @Inject constructor(
325325
action: ComplexRule.Action,
326326
actionDisallowOnlyPrevious: Boolean = false,
327327
assignTagNames: List<String> = emptyList(),
328+
assignTagValues: Map<String, Double?> = emptyMap(),
328329
startingTypeNames: List<String> = emptyList(),
329330
currentTypeNames: List<String> = emptyList(),
330331
daysOfWeek: List<DayOfWeek> = emptyList(),
331332
) = runBlocking {
332333
val availableTypes = recordTypeInteractor.getAll()
333-
val assignTagIds = recordTagInteractor.getAll()
334-
.filter { it.name in assignTagNames }
335-
.map { it.id }
336-
.toSet()
334+
val tagsByName = recordTagInteractor.getAll().associateBy { it.name }
337335

338336
val data = ComplexRule(
339337
disabled = false,
340338
action = action,
341339
actionDisallowOnlyPrevious = actionDisallowOnlyPrevious,
342-
actionAssignTagValues = assignTagIds
343-
.map { RecordBase.Tag(tagId = it, numericValue = null) },
340+
actionAssignTagValues = assignTagNames.mapNotNull { name ->
341+
RecordBase.Tag(
342+
tagId = tagsByName[name]?.id ?: return@mapNotNull null,
343+
numericValue = assignTagValues[name],
344+
)
345+
},
344346
conditionStartingTypeIds = getTypeIds(availableTypes, startingTypeNames),
345347
conditionCurrentTypeIds = getTypeIds(availableTypes, currentTypeNames),
346348
conditionDaysOfWeek = daysOfWeek.toSet(),

0 commit comments

Comments
 (0)