diff --git a/core/src/main/res/values-ar/strings.xml b/core/src/main/res/values-ar/strings.xml --- a/core/src/main/res/values-ar/strings.xml +++ b/core/src/main/res/values-ar/strings.xml @@ -235,6 +235,7 @@ ممكن لغة استخدام تنسيق 24 ساعة + استخدم تنسيق تاريخ الشهر / اليوم استخدم صيغة الدقيقة النسبية إظهار الثواني أبق الشاشة قيد التشغيل diff --git a/core/src/main/res/values-ca/strings.xml b/core/src/main/res/values-ca/strings.xml --- a/core/src/main/res/values-ca/strings.xml +++ b/core/src/main/res/values-ca/strings.xml @@ -235,6 +235,7 @@ Habilitat Llenguatge Utilitza el format 24-hores + Utilitzeu el format de data de mes/dia Utilitza formar de minut proporcional Mostra segons Mantingues la pantalla encesa diff --git a/core/src/main/res/values-de/strings.xml b/core/src/main/res/values-de/strings.xml --- a/core/src/main/res/values-de/strings.xml +++ b/core/src/main/res/values-de/strings.xml @@ -235,6 +235,7 @@ Ermöglicht Sprache 24-Stunden-Format benutzen + Verwenden Sie das Datumsformat Monat/Tag Proportionales Minutenformat verwenden Sekunden anzeigen Bildschirm anlassen diff --git a/core/src/main/res/values-es/strings.xml b/core/src/main/res/values-es/strings.xml --- a/core/src/main/res/values-es/strings.xml +++ b/core/src/main/res/values-es/strings.xml @@ -235,6 +235,7 @@ Activado Idioma Usar el formato 24-horas + Usar formato de fecha Mes/Día Usar el formato de minuto proporcional Mostrar segundos Mantener la pantalla encendida diff --git a/core/src/main/res/values-fa/strings.xml b/core/src/main/res/values-fa/strings.xml --- a/core/src/main/res/values-fa/strings.xml +++ b/core/src/main/res/values-fa/strings.xml @@ -235,6 +235,7 @@ فعال شد زبان استفاده از فرمت 24 ساعته + از قالب تاریخ ماه/روز استفاده کنید از زمان دقایق نسبی استفاده کن نمایش ثانیه ها صفحه را روشن نگه دار diff --git a/core/src/main/res/values-fr/strings.xml b/core/src/main/res/values-fr/strings.xml --- a/core/src/main/res/values-fr/strings.xml +++ b/core/src/main/res/values-fr/strings.xml @@ -235,6 +235,7 @@ Activé Langue Utiliser le format 24 heures + Utiliser le format de date Mois/Jour Utiliser le format décimal Afficher les secondes Garder l\'écran allumé diff --git a/core/src/main/res/values-hi/strings.xml b/core/src/main/res/values-hi/strings.xml --- a/core/src/main/res/values-hi/strings.xml +++ b/core/src/main/res/values-hi/strings.xml @@ -235,6 +235,7 @@ सक्रिय भाषा 24-घंटे के प्रारूप का उपयोग करें + माह/दिन दिनांक प्रारूप का उपयोग करें आनुपातिक मिनट प्रारूप का उपयोग करें सेकंड दिखाएँ स्क्रीन को चालू रखें diff --git a/core/src/main/res/values-in/strings.xml b/core/src/main/res/values-in/strings.xml --- a/core/src/main/res/values-in/strings.xml +++ b/core/src/main/res/values-in/strings.xml @@ -235,6 +235,7 @@ Diaktifkan Bahasa Pakai format 24-jam + Gunakan format tanggal Bulan/Hari Gunakan format minit berkadar Tampilkan detik Biarkan layarnya menyala diff --git a/core/src/main/res/values-it/strings.xml b/core/src/main/res/values-it/strings.xml --- a/core/src/main/res/values-it/strings.xml +++ b/core/src/main/res/values-it/strings.xml @@ -235,6 +235,7 @@ Abilitato Lingua Use il formato a 24 ore + Usa il formato data Mese/Giorno Usa il formato a minuti proporzionali Mostra secondi Tieni lo schermo acceso diff --git a/core/src/main/res/values-ja/strings.xml b/core/src/main/res/values-ja/strings.xml --- a/core/src/main/res/values-ja/strings.xml +++ b/core/src/main/res/values-ja/strings.xml @@ -235,6 +235,7 @@ 有効 言語 24時間制で表示 + 月/日の日付形式を使用する 時間表示の変更 秒を表示 画面表示の維持 diff --git a/core/src/main/res/values-nl/strings.xml b/core/src/main/res/values-nl/strings.xml --- a/core/src/main/res/values-nl/strings.xml +++ b/core/src/main/res/values-nl/strings.xml @@ -235,6 +235,7 @@ Ingeschakeld Taal Gebruik 24-uurs formaat + Gebruik de datumnotatie Maand/Dag Gebruik proportioneel minutenformaat Toon seconden Scherm aan houden diff --git a/core/src/main/res/values-pt/strings.xml b/core/src/main/res/values-pt/strings.xml --- a/core/src/main/res/values-pt/strings.xml +++ b/core/src/main/res/values-pt/strings.xml @@ -235,6 +235,7 @@ Habilitado Linguagem Usar formato de 24 horas + Use o formato de data Mês/Dia Usar o formato de minuto proporcional Mostrar segundos Mantenha a tela ligada diff --git a/core/src/main/res/values-ru/strings.xml b/core/src/main/res/values-ru/strings.xml --- a/core/src/main/res/values-ru/strings.xml +++ b/core/src/main/res/values-ru/strings.xml @@ -235,6 +235,7 @@ Вкл. Язык 24-часовой формат + Использовать формат даты месяц/день Использовать пропорциональный минутный формат Показать секунды Держать экран включенным diff --git a/core/src/main/res/values-sv/strings.xml b/core/src/main/res/values-sv/strings.xml --- a/core/src/main/res/values-sv/strings.xml +++ b/core/src/main/res/values-sv/strings.xml @@ -235,6 +235,7 @@ Aktiverad Språk Använd 24-timmarsklocka + Använd datumformatet månad/dag Använd decimaltal för tid Visa sekunder Håll skärmen på diff --git a/core/src/main/res/values-tr/strings.xml b/core/src/main/res/values-tr/strings.xml --- a/core/src/main/res/values-tr/strings.xml +++ b/core/src/main/res/values-tr/strings.xml @@ -235,6 +235,7 @@ Etkinleştirilmiş Dil 24-saat formatını kullan + Ay/Gün tarih biçimini kullan Oransal dakika formatını kullan Saniye göster Ekranı açık tut diff --git a/core/src/main/res/values-uk/strings.xml b/core/src/main/res/values-uk/strings.xml --- a/core/src/main/res/values-uk/strings.xml +++ b/core/src/main/res/values-uk/strings.xml @@ -235,6 +235,7 @@ Увімкнено Мова Використовувати 24-годинний формат + Використовуйте формат дати місяць/день Використовуйте пропорційний хвилинний формат Показати секунди Тримайте екран увімкненим diff --git a/core/src/main/res/values-zh-rTW/strings.xml b/core/src/main/res/values-zh-rTW/strings.xml --- a/core/src/main/res/values-zh-rTW/strings.xml +++ b/core/src/main/res/values-zh-rTW/strings.xml @@ -235,6 +235,7 @@ 啟用 語言 使用 24 小時格式 + 使用月/日日期格式 使用比例分鐘格式 顯示秒數 保持螢幕長開 diff --git a/core/src/main/res/values-zh/strings.xml b/core/src/main/res/values-zh/strings.xml --- a/core/src/main/res/values-zh/strings.xml +++ b/core/src/main/res/values-zh/strings.xml @@ -235,6 +235,7 @@ 启用 语言 使用24小时格式 + 使用月/日日期格式 使用比例分钟格式 显示秒数 保持屏幕开启 diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/AddDefaultRecordTypeTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/AddDefaultRecordTypeTest.kt --- a/app/src/androidTest/java/com/example/util/simpletimetracker/AddDefaultRecordTypeTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/AddDefaultRecordTypeTest.kt @@ -31,7 +31,17 @@ val name2 = "Work" val color2 = ColorMapper.getAvailableColors()[10] - tryAction { checkViewIsDisplayed(withText(coreR.string.running_records_types_empty)) } + tryAction { + checkViewIsDisplayed( + withText( + getString( + coreR.string.running_records_types_empty, + getString(coreR.string.running_records_add_type), + getString(coreR.string.running_records_add_default), + ), + ), + ) + } checkViewIsDisplayed(withText(coreR.string.running_records_add_type)) checkViewIsDisplayed(withText(coreR.string.running_records_add_default)) @@ -92,8 +102,8 @@ allOf( withId(baseR.id.viewRecordTypeItem), withCardColor(color), - hasDescendant(withText(name)) - ) + hasDescendant(withText(name)), + ), ) } } diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTest.kt --- a/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTest.kt @@ -206,7 +206,7 @@ // Open tag chooser clickOnViewWithId(changeRecordR.id.fieldChangeRecordCategory) - checkViewIsDisplayed(withText(coreR.string.change_record_categories_empty)) + checkViewIsDisplayed(withText(coreR.string.categories_record_hint)) } @Test diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTypeTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTypeTest.kt --- a/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTypeTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTypeTest.kt @@ -4,9 +4,10 @@ import androidx.test.espresso.Espresso.closeSoftKeyboard import androidx.test.espresso.Espresso.onView import androidx.test.espresso.Espresso.pressBack -import androidx.test.espresso.assertion.PositionAssertions.isCompletelyAbove import androidx.test.espresso.assertion.PositionAssertions.isCompletelyBelow +import androidx.test.espresso.assertion.PositionAssertions.isTopAlignedWith import androidx.test.espresso.matcher.ViewMatchers.hasDescendant +import androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.espresso.matcher.ViewMatchers.withParent import androidx.test.espresso.matcher.ViewMatchers.withText @@ -17,6 +18,7 @@ import com.example.util.simpletimetracker.utils.checkViewIsDisplayed import com.example.util.simpletimetracker.utils.checkViewIsNotDisplayed import com.example.util.simpletimetracker.utils.clickOnRecyclerItem +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.collapseToolbar @@ -78,7 +80,7 @@ clickOnRecyclerItem(changeRecordTypeR.id.rvChangeRecordTypeColor, withCardColor(firstColor)) checkPreviewUpdated(withCardColor(firstColor)) checkViewIsDisplayed( - allOf(withId(changeRecordTypeR.id.viewColorItemSelected), withParent(withCardColor(firstColor))) + allOf(withId(changeRecordTypeR.id.viewColorItemSelected), withParent(withCardColor(firstColor))), ) // Selecting color @@ -86,7 +88,7 @@ clickOnRecyclerItem(changeRecordTypeR.id.rvChangeRecordTypeColor, withCardColor(lastColor)) checkPreviewUpdated(withCardColor(lastColor)) checkViewIsDisplayed( - allOf(withId(changeRecordTypeR.id.viewColorItemSelected), withParent(withCardColor(lastColor))) + allOf(withId(changeRecordTypeR.id.viewColorItemSelected), withParent(withCardColor(lastColor))), ) // Open icon chooser @@ -113,36 +115,38 @@ checkViewIsDisplayed(withText(categoryName1)) checkViewIsDisplayed(withText(categoryName2)) checkViewIsDisplayed(withText(coreR.string.nothing_selected)) - checkViewIsDisplayed(withId(changeRecordTypeR.id.viewDividerItem)) - onView(withText(categoryName1)).check(isCompletelyBelow(withId(changeRecordTypeR.id.viewDividerItem))) - onView(withText(categoryName2)).check(isCompletelyBelow(withId(changeRecordTypeR.id.viewDividerItem))) + onView(withText(categoryName1)).check(isCompletelyBelow(withText(coreR.string.nothing_selected))) + onView(withText(categoryName2)).check(isCompletelyBelow(withText(coreR.string.nothing_selected))) + onView(withText(categoryName2)).check(isTopAlignedWith(withText(categoryName1))) // Selecting category clickOnRecyclerItem(changeRecordTypeR.id.rvChangeRecordTypeCategories, withText(categoryName1)) checkViewIsDisplayed(withText(coreR.string.something_selected)) - checkViewIsDisplayed(withId(changeRecordTypeR.id.viewDividerItem)) - onView(withText(categoryName1)).check(isCompletelyAbove(withId(changeRecordTypeR.id.viewDividerItem))) - onView(withText(categoryName2)).check(isCompletelyBelow(withId(changeRecordTypeR.id.viewDividerItem))) + onView(withText(categoryName1)).check(isCompletelyBelow(withText(coreR.string.something_selected))) + onView(withText(categoryName2)).check(isCompletelyBelow(withText(categoryName1))) clickOnRecyclerItem(changeRecordTypeR.id.rvChangeRecordTypeCategories, withText(categoryName2)) checkViewIsDisplayed(withText(coreR.string.something_selected)) - checkViewIsDisplayed(withId(changeRecordTypeR.id.viewDividerItem)) - checkViewIsDisplayed(withText(categoryName1)) - checkViewIsDisplayed(withText(categoryName2)) + onView(withText(categoryName2)).check(isTopAlignedWith(withText(categoryName1))) clickOnRecyclerItem(changeRecordTypeR.id.rvChangeRecordTypeCategories, withText(categoryName1)) clickOnRecyclerItem(changeRecordTypeR.id.rvChangeRecordTypeCategories, withText(categoryName2)) checkViewIsDisplayed(withText(coreR.string.nothing_selected)) - checkViewIsDisplayed(withId(changeRecordTypeR.id.viewDividerItem)) - onView(withText(categoryName1)).check(isCompletelyBelow(withId(changeRecordTypeR.id.viewDividerItem))) - onView(withText(categoryName2)).check(isCompletelyBelow(withId(changeRecordTypeR.id.viewDividerItem))) + onView(withText(categoryName1)).check(isCompletelyBelow(withText(coreR.string.nothing_selected))) + onView(withText(categoryName2)).check(isCompletelyBelow(withText(coreR.string.nothing_selected))) + onView(withText(categoryName2)).check(isTopAlignedWith(withText(categoryName1))) clickOnRecyclerItem(changeRecordTypeR.id.rvChangeRecordTypeCategories, withText(categoryName1)) clickOnViewWithText(coreR.string.category_hint) // Selecting goal time clickOnViewWithText(coreR.string.change_record_type_goal_time_hint) - clickOnViewWithId(changeRecordTypeR.id.groupChangeRecordTypeSessionGoalTime) + clickOnView( + allOf( + isDescendantOfA(withId(changeRecordTypeR.id.layoutChangeRecordTypeGoalSession)), + withId(changeRecordTypeR.id.fieldChangeRecordTypeGoalDuration), + ), + ) clickOnViewWithId(dialogsR.id.tvNumberKeyboard1) clickOnViewWithId(dialogsR.id.tvNumberKeyboard0) clickOnViewWithId(dialogsR.id.tvNumberKeyboard0) @@ -163,9 +167,8 @@ longClickOnView(withText(name)) clickOnViewWithText(coreR.string.category_hint) checkViewIsDisplayed(withText(coreR.string.something_selected)) - checkViewIsDisplayed(withId(changeRecordTypeR.id.viewDividerItem)) - onView(withText(categoryName1)).check(isCompletelyAbove(withId(changeRecordTypeR.id.viewDividerItem))) - onView(withText(categoryName2)).check(isCompletelyBelow(withId(changeRecordTypeR.id.viewDividerItem))) + onView(withText(categoryName1)).check(isCompletelyBelow(withText(coreR.string.something_selected))) + onView(withText(categoryName2)).check(isCompletelyBelow(withText(categoryName1))) } @Test @@ -176,15 +179,16 @@ clickOnViewWithText(coreR.string.change_record_type_goal_time_hint) checkViewIsDisplayed( allOf( - withId(changeRecordTypeR.id.tvChangeRecordTypeSessionGoalTime), - withText(coreR.string.change_record_type_goal_time_disabled) - ) + isDescendantOfA(withId(changeRecordTypeR.id.layoutChangeRecordTypeGoalSession)), + withId(changeRecordTypeR.id.tvChangeRecordTypeGoalDurationValue), + withText(coreR.string.change_record_type_goal_time_disabled), + ), ) clickOnViewWithText(coreR.string.change_record_type_goal_time_hint) // Open category chooser clickOnViewWithText(coreR.string.category_hint) - checkViewIsDisplayed(withText(coreR.string.change_record_type_categories_empty)) + checkViewIsDisplayed(withText(coreR.string.categories_record_type_hint)) } private fun checkPreviewUpdated(matcher: Matcher) = diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRecordTypeTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRecordTypeTest.kt --- a/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRecordTypeTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRecordTypeTest.kt @@ -65,13 +65,13 @@ clickOnViewWithText(coreR.string.change_record_type_color_hint) checkViewIsDisplayed( - allOf(withId(changeRecordTypeR.id.viewColorItemSelected), withParent(withCardColor(firstColor))) + allOf(withId(changeRecordTypeR.id.viewColorItemSelected), withParent(withCardColor(firstColor))), ) scrollRecyclerToView(changeRecordTypeR.id.rvChangeRecordTypeColor, withCardColor(lastColor)) clickOnRecyclerItem(changeRecordTypeR.id.rvChangeRecordTypeColor, withCardColor(lastColor)) checkPreviewUpdated(withCardColor(lastColor)) checkViewIsDisplayed( - allOf(withId(changeRecordTypeR.id.viewColorItemSelected), withParent(withCardColor(lastColor))) + allOf(withId(changeRecordTypeR.id.viewColorItemSelected), withParent(withCardColor(lastColor))), ) clickOnViewWithText(coreR.string.change_record_type_color_hint) @@ -94,8 +94,8 @@ clickOnView( allOf( isDescendantOfA(withId(changeRecordTypeR.id.btnChangeRecordTypeIconSwitch)), - withText(coreR.string.change_record_type_icon_emoji_hint) - ) + withText(coreR.string.change_record_type_icon_emoji_hint), + ), ) clickOnViewWithText(firstEmoji) @@ -123,14 +123,14 @@ withId(changeRecordTypeR.id.viewRunningRecordItem), withCardColor(firstColor), hasDescendant(withText(name)), - hasDescendant(withTag(firstIcon)) - ) + hasDescendant(withTag(firstIcon)), + ), ) checkViewDoesNotExist(withSubstring(getString(coreR.string.change_record_type_session_goal_time).lowercase())) // Change activity longClickOnView( - allOf(isDescendantOfA(withId(changeRecordTypeR.id.viewRecordTypeItem)), withText(name)) + allOf(isDescendantOfA(withId(changeRecordTypeR.id.viewRecordTypeItem)), withText(name)), ) typeTextIntoView(changeRecordTypeR.id.etChangeRecordTypeName, newName) @@ -147,7 +147,12 @@ clickOnViewWithId(changeRecordTypeR.id.fieldChangeRecordTypeIcon) clickOnViewWithText(coreR.string.change_record_type_goal_time_hint) - clickOnViewWithId(changeRecordTypeR.id.groupChangeRecordTypeSessionGoalTime) + clickOnView( + allOf( + isDescendantOfA(withId(changeRecordTypeR.id.layoutChangeRecordTypeGoalSession)), + withId(changeRecordTypeR.id.fieldChangeRecordTypeGoalDuration), + ), + ) clickOnViewWithId(dialogsR.id.tvNumberKeyboard1) clickOnViewWithId(dialogsR.id.tvNumberKeyboard0) clickOnViewWithId(dialogsR.id.tvNumberKeyboard0) @@ -161,14 +166,14 @@ // Record running record updated tryAction { checkViewIsDisplayed( - allOf(isDescendantOfA(withId(changeRecordTypeR.id.viewRunningRecordItem)), withText(newName)) + allOf(isDescendantOfA(withId(changeRecordTypeR.id.viewRunningRecordItem)), withText(newName)), ) } checkViewIsDisplayed( - allOf(withId(changeRecordTypeR.id.viewRunningRecordItem), withCardColor(lastColor)) + allOf(withId(changeRecordTypeR.id.viewRunningRecordItem), withCardColor(lastColor)), ) checkViewIsDisplayed( - allOf(isDescendantOfA(withId(changeRecordTypeR.id.viewRunningRecordItem)), withTag(lastIcon)) + allOf(isDescendantOfA(withId(changeRecordTypeR.id.viewRunningRecordItem)), withTag(lastIcon)), ) checkViewIsDisplayed(withSubstring(getString(coreR.string.change_record_type_session_goal_time).lowercase())) } diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRunningRecordTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRunningRecordTest.kt --- a/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRunningRecordTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRunningRecordTest.kt @@ -16,6 +16,7 @@ import androidx.test.espresso.matcher.ViewMatchers.withText import androidx.test.ext.junit.runners.AndroidJUnit4 import com.example.util.simpletimetracker.core.extension.setToStartOfDay +import com.example.util.simpletimetracker.domain.model.RecordTypeGoal import com.example.util.simpletimetracker.feature_dialogs.dateTime.CustomTimePicker import com.example.util.simpletimetracker.utils.BaseUiTest import com.example.util.simpletimetracker.utils.checkViewDoesNotExist @@ -59,7 +60,18 @@ val fullName2 = "$name2 - $tag2" // Add activities - testUtils.addActivity(name = name1, color = firstColor, icon = firstIcon, goalTime = firstGoalTime) + testUtils.addActivity( + name = name1, + color = firstColor, + icon = firstIcon, + goals = listOf( + RecordTypeGoal( + typeId = 0, + range = RecordTypeGoal.Range.Session, + type = RecordTypeGoal.Type.Duration(firstGoalTime), + ), + ), + ) testUtils.addActivity(name = name2, color = lastColor, text = lastEmoji) testUtils.addRecordTag(tag2, name2) @@ -68,7 +80,7 @@ val currentTime = System.currentTimeMillis() var timeStartedTimestamp = currentTime var timeStarted = timeMapper.formatDateTime( - time = timeStartedTimestamp, useMilitaryTime = true, showSeconds = false + time = timeStartedTimestamp, useMilitaryTime = true, showSeconds = false, ) var timeStartedPreview = timeStartedTimestamp .let { timeMapper.formatTime(time = it, useMilitaryTime = true, showSeconds = false) } @@ -80,7 +92,7 @@ icon = firstIcon, timeStarted = timeStartedPreview, goalTime = goalString, - comment = "" + comment = "", ) // Open edit view @@ -151,8 +163,8 @@ checkViewIsNotDisplayed( allOf( isDescendantOfA(withId(changeRunningRecordR.id.previewChangeRunningRecord)), - withId(changeRecordR.id.tvRunningRecordItemGoalTime) - ) + withId(changeRecordR.id.tvRunningRecordItemGoalTime), + ), ) // Save @@ -161,7 +173,7 @@ // Record updated tryAction { checkViewDoesNotExist( - allOf(isDescendantOfA(withId(changeRecordR.id.viewRunningRecordItem)), withText(name1)) + allOf(isDescendantOfA(withId(changeRecordR.id.viewRunningRecordItem)), withText(name1)), ) } checkRunningRecordDisplayed( @@ -169,7 +181,7 @@ color = lastColor, text = lastEmoji, timeStarted = timeStartedPreview, - comment = comment + comment = comment, ) } @@ -279,11 +291,11 @@ checkAfterTimeAdjustment(timeStarted = "23:30") clickOnViewWithText(coreR.string.time_now) checkPreviewUpdated( - hasDescendant(allOf(withId(changeRecordR.id.tvRunningRecordItemTimer), withText("0$secondString"))) + hasDescendant(allOf(withId(changeRecordR.id.tvRunningRecordItemTimer), withText("0$secondString"))), ) clickOnViewWithText("+30") checkPreviewUpdated( - hasDescendant(allOf(withId(changeRecordR.id.tvRunningRecordItemTimer), withText("0$secondString"))) + hasDescendant(allOf(withId(changeRecordR.id.tvRunningRecordItemTimer), withText("0$secondString"))), ) } @@ -309,7 +321,7 @@ // No last comments tryAction { clickOnViewWithText(nameNoComments) } longClickOnView( - allOf(isDescendantOfA(withId(changeRecordR.id.viewRunningRecordItem)), withText(nameNoComments)) + allOf(isDescendantOfA(withId(changeRecordR.id.viewRunningRecordItem)), withText(nameNoComments)), ) clickOnViewWithText(coreR.string.change_record_comment_field) @@ -405,14 +417,13 @@ tryAction { scrollRecyclerToView( runningRecordsR.id.rvRunningRecordsList, - allOf(withId(changeRecordR.id.viewRunningRecordItem), hasDescendant(withText(typeName))) + allOf(withId(changeRecordR.id.viewRunningRecordItem), hasDescendant(withText(typeName))), ) } } val sessionGoal = getString(coreR.string.change_record_type_session_goal_time).lowercase() val dailyGoal = getString(coreR.string.change_record_type_daily_goal_time).lowercase() - val weeklyGoal = getString(coreR.string.change_record_type_weekly_goal_time).lowercase() val currentTime = Calendar.getInstance().timeInMillis val noGoals = "noGoals" @@ -420,29 +431,52 @@ val sessionGoalFinished = "sessionGoalFinished" val dailyGoalNotFinished = "dailyGoalNotFinished" val dailyGoalFinished = "dailyGoalFinished" - val weeklyGoalNotFinished = "weeklyGoalNotFinished" - val weeklyGoalFinished = "weeklyGoalFinished" - val allGoalsNotFinished = "allGoalsNotFinished" - val allGoalsFinished = "allGoalsFinished" - val allGoalsSessionFinished = "allGoalsSessionFinished" - val allGoalsDailyFinished = "allGoalsDailyFinished" - val allGoalsWeeklyFinished = "allGoalsWeeklyFinished" + val weeklyGoalPresent = "weeklyGoalPresent" + val monthlyGoalPresent = "monthlyGoalPresent" + val allGoalsPresent = "allGoalsPresent" // Add data testUtils.addActivity(noGoals) testUtils.addRunningRecord(noGoals) - testUtils.addActivity(sessionGoalNotFinished, goalTime = TimeUnit.MINUTES.toSeconds(10)) + testUtils.addActivity( + sessionGoalNotFinished, + goals = listOf( + RecordTypeGoal( + typeId = 0, + range = RecordTypeGoal.Range.Session, + type = RecordTypeGoal.Type.Duration(TimeUnit.MINUTES.toSeconds(10)), + ), + ), + ) testUtils.addRecord(sessionGoalNotFinished) testUtils.addRunningRecord(sessionGoalNotFinished) - testUtils.addActivity(sessionGoalFinished, goalTime = TimeUnit.MINUTES.toSeconds(10)) + testUtils.addActivity( + sessionGoalFinished, + goals = listOf( + RecordTypeGoal( + typeId = 0, + range = RecordTypeGoal.Range.Session, + type = RecordTypeGoal.Type.Duration(TimeUnit.MINUTES.toSeconds(10)), + ), + ), + ) testUtils.addRunningRecord( typeName = sessionGoalFinished, timeStarted = currentTime - TimeUnit.MINUTES.toMillis(10), ) - testUtils.addActivity(dailyGoalNotFinished, dailyGoalTime = TimeUnit.MINUTES.toSeconds(10)) + testUtils.addActivity( + dailyGoalNotFinished, + goals = listOf( + RecordTypeGoal( + typeId = 0, + range = RecordTypeGoal.Range.Daily, + type = RecordTypeGoal.Type.Duration(TimeUnit.MINUTES.toSeconds(10)), + ), + ), + ) testUtils.addRecord( typeName = dailyGoalNotFinished, timeStarted = currentTime - TimeUnit.MINUTES.toMillis(5), @@ -450,7 +484,16 @@ ) testUtils.addRunningRecord(dailyGoalNotFinished) - testUtils.addActivity(dailyGoalFinished, dailyGoalTime = TimeUnit.MINUTES.toSeconds(10)) + testUtils.addActivity( + dailyGoalFinished, + goals = listOf( + RecordTypeGoal( + typeId = 0, + range = RecordTypeGoal.Range.Daily, + type = RecordTypeGoal.Type.Duration(TimeUnit.MINUTES.toSeconds(10)), + ), + ), + ) testUtils.addRecord( typeName = dailyGoalFinished, timeStarted = currentTime - TimeUnit.MINUTES.toMillis(10), @@ -458,224 +501,108 @@ ) testUtils.addRunningRecord(dailyGoalFinished) - testUtils.addActivity(weeklyGoalNotFinished, weeklyGoalTime = TimeUnit.MINUTES.toSeconds(10)) + testUtils.addActivity( + weeklyGoalPresent, + goals = listOf( + RecordTypeGoal( + typeId = 0, + range = RecordTypeGoal.Range.Weekly, + type = RecordTypeGoal.Type.Duration(TimeUnit.MINUTES.toSeconds(10)), + ), + ), + ) + testUtils.addRunningRecord(weeklyGoalPresent) + + testUtils.addActivity( + monthlyGoalPresent, + goals = listOf( + RecordTypeGoal( + typeId = 0, + range = RecordTypeGoal.Range.Monthly, + type = RecordTypeGoal.Type.Duration(TimeUnit.MINUTES.toSeconds(10)), + ), + ), + ) + testUtils.addRunningRecord(monthlyGoalPresent) + + testUtils.addActivity( + name = allGoalsPresent, + goals = listOf( + RecordTypeGoal( + typeId = 0, + range = RecordTypeGoal.Range.Session, + type = RecordTypeGoal.Type.Duration(TimeUnit.MINUTES.toSeconds(10)), + ), + RecordTypeGoal( + typeId = 0, + range = RecordTypeGoal.Range.Daily, + type = RecordTypeGoal.Type.Duration(TimeUnit.MINUTES.toSeconds(20)), + ), + RecordTypeGoal( + typeId = 0, + range = RecordTypeGoal.Range.Weekly, + type = RecordTypeGoal.Type.Duration(TimeUnit.MINUTES.toSeconds(30)), + ), + RecordTypeGoal( + typeId = 0, + range = RecordTypeGoal.Range.Monthly, + type = RecordTypeGoal.Type.Duration(TimeUnit.MINUTES.toSeconds(40)), + ), + ), + ) testUtils.addRecord( - typeName = weeklyGoalNotFinished, + typeName = allGoalsPresent, timeStarted = currentTime - TimeUnit.MINUTES.toMillis(5), timeEnded = currentTime, ) - testUtils.addRunningRecord(weeklyGoalNotFinished) - - testUtils.addActivity(weeklyGoalFinished, weeklyGoalTime = TimeUnit.MINUTES.toSeconds(10)) - testUtils.addRecord( - typeName = weeklyGoalFinished, - timeStarted = currentTime - TimeUnit.MINUTES.toMillis(10), - timeEnded = currentTime, - ) - testUtils.addRunningRecord(weeklyGoalFinished) - - testUtils.addActivity( - name = allGoalsNotFinished, - goalTime = TimeUnit.MINUTES.toSeconds(10), - dailyGoalTime = TimeUnit.MINUTES.toSeconds(20), - weeklyGoalTime = TimeUnit.MINUTES.toSeconds(30), - ) - testUtils.addRecord( - typeName = allGoalsNotFinished, - timeStarted = currentTime - TimeUnit.MINUTES.toMillis(5), - timeEnded = currentTime, - ) - testUtils.addRunningRecord(allGoalsNotFinished) - - testUtils.addActivity( - name = allGoalsFinished, - goalTime = TimeUnit.MINUTES.toSeconds(10), - dailyGoalTime = TimeUnit.MINUTES.toSeconds(10), - weeklyGoalTime = TimeUnit.MINUTES.toSeconds(10), - ) - testUtils.addRecord( - typeName = allGoalsFinished, - timeStarted = currentTime - TimeUnit.MINUTES.toMillis(10), - timeEnded = currentTime, - ) - testUtils.addRunningRecord( - typeName = allGoalsFinished, - timeStarted = currentTime - TimeUnit.MINUTES.toMillis(10), - ) - - testUtils.addActivity( - name = allGoalsSessionFinished, - goalTime = TimeUnit.MINUTES.toSeconds(10), - dailyGoalTime = TimeUnit.MINUTES.toSeconds(20), - weeklyGoalTime = TimeUnit.MINUTES.toSeconds(30), - ) - testUtils.addRunningRecord( - typeName = allGoalsSessionFinished, - timeStarted = currentTime - TimeUnit.MINUTES.toMillis(10), - ) - - testUtils.addActivity( - name = allGoalsDailyFinished, - goalTime = TimeUnit.MINUTES.toSeconds(20), - dailyGoalTime = TimeUnit.MINUTES.toSeconds(10), - weeklyGoalTime = TimeUnit.MINUTES.toSeconds(30), - ) - testUtils.addRunningRecord( - typeName = allGoalsDailyFinished, - timeStarted = currentTime - TimeUnit.MINUTES.toMillis(10), - ) - - testUtils.addActivity( - name = allGoalsWeeklyFinished, - goalTime = TimeUnit.MINUTES.toSeconds(20), - dailyGoalTime = TimeUnit.MINUTES.toSeconds(30), - weeklyGoalTime = TimeUnit.MINUTES.toSeconds(10), - ) - testUtils.addRunningRecord( - typeName = allGoalsWeeklyFinished, - timeStarted = currentTime - TimeUnit.MINUTES.toMillis(10), - ) + testUtils.addRunningRecord(allGoalsPresent) // No goals Thread.sleep(1000) scrollTo(noGoals) checkNoGoal(noGoals, changeRecordR.id.tvRunningRecordItemGoalTime) checkGoalMark(noGoals, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = false) - checkNoGoal(noGoals, changeRecordR.id.tvRunningRecordItemGoalTime2) - checkGoalMark(noGoals, changeRecordR.id.ivRunningRecordItemGoalTimeCheck2, isVisible = false) - checkNoGoal(noGoals, changeRecordR.id.tvRunningRecordItemGoalTime3) - checkGoalMark(noGoals, changeRecordR.id.ivRunningRecordItemGoalTimeCheck3, isVisible = false) // Session goal not finished scrollTo(sessionGoalNotFinished) checkGoal( - sessionGoalNotFinished, changeRecordR.id.tvRunningRecordItemGoalTime, "$sessionGoal 9$minuteString" + sessionGoalNotFinished, changeRecordR.id.tvRunningRecordItemGoalTime, "$sessionGoal 9$minuteString", ) checkGoalMark(sessionGoalNotFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = false) - checkNoGoal(sessionGoalNotFinished, changeRecordR.id.tvRunningRecordItemGoalTime2) - checkGoalMark(sessionGoalNotFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck2, isVisible = false) - checkNoGoal(sessionGoalNotFinished, changeRecordR.id.tvRunningRecordItemGoalTime3) - checkGoalMark(sessionGoalNotFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck3, isVisible = false) // Session goal finished scrollTo(sessionGoalFinished) checkGoal(sessionGoalFinished, changeRecordR.id.tvRunningRecordItemGoalTime, sessionGoal) checkGoalMark(sessionGoalFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = true) - checkNoGoal(sessionGoalFinished, changeRecordR.id.tvRunningRecordItemGoalTime2) - checkGoalMark(sessionGoalFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck2, isVisible = false) - checkNoGoal(sessionGoalFinished, changeRecordR.id.tvRunningRecordItemGoalTime3) - checkGoalMark(sessionGoalFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck3, isVisible = false) // Daily goal not finished scrollTo(dailyGoalNotFinished) - checkNoGoal(dailyGoalNotFinished, changeRecordR.id.tvRunningRecordItemGoalTime) - checkGoalMark(dailyGoalNotFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = false) checkGoal( - dailyGoalNotFinished, changeRecordR.id.tvRunningRecordItemGoalTime2, "$dailyGoal 4$minuteString" + dailyGoalNotFinished, changeRecordR.id.tvRunningRecordItemGoalTime, "$dailyGoal 4$minuteString", ) - checkGoalMark(dailyGoalNotFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck2, isVisible = false) - checkNoGoal(dailyGoalNotFinished, changeRecordR.id.tvRunningRecordItemGoalTime3) - checkGoalMark(dailyGoalNotFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck3, isVisible = false) + checkGoalMark(dailyGoalNotFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = false) // Daily goal finished scrollTo(dailyGoalFinished) - checkNoGoal(dailyGoalFinished, changeRecordR.id.tvRunningRecordItemGoalTime) - checkGoalMark(dailyGoalFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = false) - checkGoal(dailyGoalFinished, changeRecordR.id.tvRunningRecordItemGoalTime2, dailyGoal) - checkGoalMark(dailyGoalFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck2, isVisible = true) - checkNoGoal(dailyGoalFinished, changeRecordR.id.tvRunningRecordItemGoalTime3) - checkGoalMark(dailyGoalFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck3, isVisible = false) + checkGoal(dailyGoalFinished, changeRecordR.id.tvRunningRecordItemGoalTime, dailyGoal) + checkGoalMark(dailyGoalFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = true) - // Weekly goal not finished - scrollTo(weeklyGoalNotFinished) - checkNoGoal(weeklyGoalNotFinished, changeRecordR.id.tvRunningRecordItemGoalTime) - checkGoalMark(weeklyGoalNotFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = false) - checkNoGoal(weeklyGoalNotFinished, changeRecordR.id.tvRunningRecordItemGoalTime2) - checkGoalMark(weeklyGoalNotFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck2, isVisible = false) - checkGoal( - weeklyGoalNotFinished, changeRecordR.id.tvRunningRecordItemGoalTime3, "$weeklyGoal 4$minuteString" - ) - checkGoalMark(weeklyGoalNotFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck3, isVisible = false) + // Weekly goal present + scrollTo(weeklyGoalPresent) + checkNoGoal(weeklyGoalPresent, changeRecordR.id.tvRunningRecordItemGoalTime) + checkGoalMark(weeklyGoalPresent, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = false) - // Weekly goal finished - scrollTo(weeklyGoalFinished) - checkNoGoal(weeklyGoalFinished, changeRecordR.id.tvRunningRecordItemGoalTime) - checkGoalMark(weeklyGoalFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = false) - checkNoGoal(weeklyGoalFinished, changeRecordR.id.tvRunningRecordItemGoalTime2) - checkGoalMark(weeklyGoalFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck2, isVisible = false) - checkGoal(weeklyGoalFinished, changeRecordR.id.tvRunningRecordItemGoalTime3, weeklyGoal) - checkGoalMark(weeklyGoalFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck3, isVisible = true) + // Monthly goal present + scrollTo(monthlyGoalPresent) + checkNoGoal(monthlyGoalPresent, changeRecordR.id.tvRunningRecordItemGoalTime) + checkGoalMark(monthlyGoalPresent, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = false) // All goals, all not finished - scrollTo(allGoalsNotFinished) + scrollTo(allGoalsPresent) checkGoal( - allGoalsNotFinished, changeRecordR.id.tvRunningRecordItemGoalTime, "$sessionGoal 9$minuteString" + allGoalsPresent, changeRecordR.id.tvRunningRecordItemGoalTime, "$dailyGoal 14$minuteString", ) - checkGoalMark(allGoalsNotFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = false) - checkGoal( - allGoalsNotFinished, changeRecordR.id.tvRunningRecordItemGoalTime2, "$dailyGoal 14$minuteString" - ) - checkGoalMark(allGoalsNotFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck2, isVisible = false) - checkGoal( - allGoalsNotFinished, changeRecordR.id.tvRunningRecordItemGoalTime3, "$weeklyGoal 24$minuteString" - ) - checkGoalMark(allGoalsNotFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck3, isVisible = false) - - // All goals, all finished - scrollTo(allGoalsFinished) - checkGoal(allGoalsFinished, changeRecordR.id.tvRunningRecordItemGoalTime, sessionGoal) - checkGoalMark(allGoalsFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = true) - checkGoal(allGoalsFinished, changeRecordR.id.tvRunningRecordItemGoalTime2, dailyGoal) - checkGoalMark(allGoalsFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck2, isVisible = true) - checkGoal(allGoalsFinished, changeRecordR.id.tvRunningRecordItemGoalTime3, weeklyGoal) - checkGoalMark(allGoalsFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck3, isVisible = true) - - // All goals, session finished - scrollTo(allGoalsSessionFinished) - checkGoal(allGoalsSessionFinished, changeRecordR.id.tvRunningRecordItemGoalTime, sessionGoal) - checkGoalMark(allGoalsSessionFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = true) - checkGoal( - allGoalsSessionFinished, changeRecordR.id.tvRunningRecordItemGoalTime2, "$dailyGoal 9$minuteString" - ) - checkGoalMark( - allGoalsSessionFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck2, isVisible = false - ) - checkGoal( - allGoalsSessionFinished, changeRecordR.id.tvRunningRecordItemGoalTime3, "$weeklyGoal 19$minuteString" - ) - checkGoalMark( - allGoalsSessionFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck3, isVisible = false - ) - - // All goals, daily finished - scrollTo(allGoalsDailyFinished) - checkGoal( - allGoalsDailyFinished, changeRecordR.id.tvRunningRecordItemGoalTime, "$sessionGoal 9$minuteString" - ) - checkGoalMark(allGoalsDailyFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = false) - checkGoal( - allGoalsDailyFinished, changeRecordR.id.tvRunningRecordItemGoalTime2, dailyGoal - ) - checkGoalMark(allGoalsDailyFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck2, isVisible = true) - checkGoal( - allGoalsDailyFinished, changeRecordR.id.tvRunningRecordItemGoalTime3, "$weeklyGoal 19$minuteString" - ) - checkGoalMark(allGoalsDailyFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck3, isVisible = false) - - // All goals, weekly finished - scrollTo(allGoalsWeeklyFinished) - checkGoal( - allGoalsWeeklyFinished, changeRecordR.id.tvRunningRecordItemGoalTime, "$sessionGoal 9$minuteString" - ) - checkGoalMark(allGoalsWeeklyFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = false) - checkGoal( - allGoalsWeeklyFinished, changeRecordR.id.tvRunningRecordItemGoalTime2, "$dailyGoal 19$minuteString" - ) - checkGoalMark(allGoalsWeeklyFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck2, isVisible = false) - checkGoal( - allGoalsWeeklyFinished, changeRecordR.id.tvRunningRecordItemGoalTime3, weeklyGoal - ) - checkGoalMark(allGoalsWeeklyFinished, changeRecordR.id.ivRunningRecordItemGoalTimeCheck3, isVisible = true) + checkGoalMark(allGoalsPresent, changeRecordR.id.ivRunningRecordItemGoalTimeCheck, isVisible = false) } @Test @@ -709,7 +636,7 @@ withId(changeRecordR.id.viewRunningRecordItem), hasDescendant(withText(name1)), hasDescendant(withText(dayTotal)), - ) + ), ) } @@ -719,7 +646,7 @@ allOf( withId(changeRecordR.id.viewRunningRecordItem), hasDescendant(withText(name2)), - ) + ), ) } tryAction { @@ -728,14 +655,14 @@ withId(changeRecordR.id.viewRunningRecordItem), hasDescendant(withText(name2)), hasDescendant(withSubstring(day)), - ) + ), ) } } private fun checkAfterTimeAdjustment(timeStarted: String) { checkPreviewUpdated( - hasDescendant(allOf(withId(changeRecordR.id.tvRunningRecordItemTimeStarted), withText(timeStarted))) + hasDescendant(allOf(withId(changeRecordR.id.tvRunningRecordItemTimeStarted), withText(timeStarted))), ) checkViewIsDisplayed(allOf(withId(changeRecordR.id.tvChangeRecordTimeStarted), withSubstring(timeStarted))) } @@ -759,17 +686,17 @@ } if (icon != null) { checkViewIsDisplayed( - allOf(isDescendantOfA(withId(changeRecordR.id.viewRunningRecordItem)), withTag(icon)) + allOf(isDescendantOfA(withId(changeRecordR.id.viewRunningRecordItem)), withTag(icon)), ) } if (text != null) { checkViewIsDisplayed( - allOf(isDescendantOfA(withId(changeRecordR.id.viewRunningRecordItem)), withText(text)) + allOf(isDescendantOfA(withId(changeRecordR.id.viewRunningRecordItem)), withText(text)), ) } if (timeStarted != null) { checkViewIsDisplayed( - allOf(isDescendantOfA(withId(changeRecordR.id.viewRunningRecordItem)), withText(timeStarted)) + allOf(isDescendantOfA(withId(changeRecordR.id.viewRunningRecordItem)), withText(timeStarted)), ) } if (!goalTime.isNullOrEmpty()) { @@ -777,22 +704,22 @@ allOf( isDescendantOfA(withId(changeRecordR.id.viewRunningRecordItem)), withSubstring(goalTime), - ) + ), ) } else { checkViewIsNotDisplayed( allOf( isDescendantOfA(withId(changeRecordR.id.viewRunningRecordItem)), - withId(changeRecordR.id.tvRunningRecordItemGoalTime) - ) + withId(changeRecordR.id.tvRunningRecordItemGoalTime), + ), ) } if (!comment.isNullOrEmpty()) { checkViewIsDisplayed( allOf( isDescendantOfA(withId(changeRecordR.id.viewRunningRecordItem)), - withText(comment) - ) + withText(comment), + ), ) } } diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/MainScreenEmptyTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/MainScreenEmptyTest.kt --- a/app/src/androidTest/java/com/example/util/simpletimetracker/MainScreenEmptyTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/MainScreenEmptyTest.kt @@ -40,7 +40,17 @@ fun mainScreenEmpty() { val name = "Test" - tryAction { checkViewIsDisplayed(withText(coreR.string.running_records_types_empty)) } + tryAction { + checkViewIsDisplayed( + withText( + getString( + coreR.string.running_records_types_empty, + getString(coreR.string.running_records_add_type), + getString(coreR.string.running_records_add_default), + ), + ), + ) + } checkViewDoesNotExist(withText(coreR.string.running_records_empty)) // Add activity @@ -73,8 +83,8 @@ allOf( withId(baseR.id.viewRecordItem), hasDescendant(withText(coreR.string.untracked_time_name)), - isCompletelyDisplayed() - ) + isCompletelyDisplayed(), + ), ) checkViewIsDisplayed(allOf(withText(coreR.string.records_hint), isCompletelyDisplayed())) clickOnViewWithId(recordsR.id.btnRecordsContainerPrevious) @@ -83,13 +93,13 @@ withId(baseR.id.viewRecordItem), hasDescendant(withText(coreR.string.untracked_time_name)), hasDescendant(withSubstring("24$hourString 0$minuteString")), - isCompletelyDisplayed() - ) + isCompletelyDisplayed(), + ), ) checkViewIsDisplayed(allOf(withText(coreR.string.records_hint), isCompletelyDisplayed())) clickOnViewWithId(recordsR.id.btnRecordsContainerNext) clickOnViewWithId(recordsR.id.btnRecordsContainerNext) - checkViewIsDisplayed(allOf(withText(coreR.string.records_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) checkViewDoesNotExist(allOf(withText(coreR.string.records_hint), isCompletelyDisplayed())) checkViewDoesNotExist(allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed())) } @@ -127,8 +137,8 @@ withId(baseR.id.viewStatisticsItem), hasDescendant(withText(coreR.string.untracked_time_name)), hasDescendant(withSubstring("100%")), - isCompletelyDisplayed() - ) + isCompletelyDisplayed(), + ), ) // Back to day range @@ -170,8 +180,8 @@ withId(baseR.id.viewStatisticsItem), hasDescendant(withText(coreR.string.untracked_time_name)), hasDescendant(withSubstring("100%")), - isCompletelyDisplayed() - ) + isCompletelyDisplayed(), + ), ) // Back to day range @@ -213,8 +223,8 @@ withId(baseR.id.viewStatisticsItem), hasDescendant(withText(coreR.string.untracked_time_name)), hasDescendant(withSubstring("100%")), - isCompletelyDisplayed() - ) + isCompletelyDisplayed(), + ), ) // Back to day range @@ -229,10 +239,10 @@ withId(baseR.id.viewStatisticsItem), hasDescendant(withText(coreR.string.untracked_time_name)), hasDescendant(withSubstring("100%")), - isCompletelyDisplayed() - ) + isCompletelyDisplayed(), + ), ) clickOnViewWithId(statisticsR.id.btnStatisticsContainerNext) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) } } diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/RecordTypeCategoryTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/RecordTypeCategoryTest.kt --- a/app/src/androidTest/java/com/example/util/simpletimetracker/RecordTypeCategoryTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/RecordTypeCategoryTest.kt @@ -2,9 +2,7 @@ import androidx.test.espresso.Espresso.onView import androidx.test.espresso.Espresso.pressBack -import androidx.test.espresso.assertion.PositionAssertions.isCompletelyAbove import androidx.test.espresso.assertion.PositionAssertions.isCompletelyBelow -import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.espresso.matcher.ViewMatchers.withText import androidx.test.ext.junit.runners.AndroidJUnit4 import com.example.util.simpletimetracker.utils.BaseUiTest @@ -16,7 +14,6 @@ import org.junit.Test import org.junit.runner.RunWith import com.example.util.simpletimetracker.core.R as coreR -import com.example.util.simpletimetracker.feature_base_adapter.R as baseR import com.example.util.simpletimetracker.feature_change_category.R as changeCategoryR import com.example.util.simpletimetracker.feature_change_record_type.R as changeRecordTypeR @@ -49,25 +46,25 @@ longClickOnView(withText(categoryName1)) clickOnViewWithText(coreR.string.change_category_types_hint) - onView(withText(typeName1)).check(isCompletelyAbove(withId(baseR.id.viewDividerItem))) - onView(withText(typeName2)).check(isCompletelyBelow(withId(baseR.id.viewDividerItem))) + onView(withText(typeName1)).check(isCompletelyBelow(withText(coreR.string.something_selected))) + onView(withText(typeName2)).check(isCompletelyBelow(withText(typeName1))) clickOnRecyclerItem(changeCategoryR.id.rvChangeCategoryType, withText(typeName1)) clickOnRecyclerItem(changeCategoryR.id.rvChangeCategoryType, withText(typeName2)) - onView(withText(typeName1)).check(isCompletelyBelow(withId(baseR.id.viewDividerItem))) - onView(withText(typeName2)).check(isCompletelyAbove(withId(baseR.id.viewDividerItem))) + onView(withText(typeName2)).check(isCompletelyBelow(withText(coreR.string.something_selected))) + onView(withText(typeName1)).check(isCompletelyBelow(withText(typeName2))) clickOnViewWithText(coreR.string.change_category_save) // Check second category longClickOnView(withText(categoryName2)) clickOnViewWithText(coreR.string.change_category_types_hint) - onView(withText(typeName1)).check(isCompletelyBelow(withId(baseR.id.viewDividerItem))) - onView(withText(typeName2)).check(isCompletelyAbove(withId(baseR.id.viewDividerItem))) + onView(withText(typeName2)).check(isCompletelyBelow(withText(coreR.string.something_selected))) + onView(withText(typeName1)).check(isCompletelyBelow(withText(typeName2))) clickOnRecyclerItem(changeCategoryR.id.rvChangeCategoryType, withText(typeName1)) clickOnRecyclerItem(changeCategoryR.id.rvChangeCategoryType, withText(typeName2)) - onView(withText(typeName1)).check(isCompletelyAbove(withId(baseR.id.viewDividerItem))) - onView(withText(typeName2)).check(isCompletelyBelow(withId(baseR.id.viewDividerItem))) + onView(withText(typeName1)).check(isCompletelyBelow(withText(coreR.string.something_selected))) + onView(withText(typeName2)).check(isCompletelyBelow(withText(typeName1))) clickOnViewWithText(coreR.string.change_category_save) pressBack() @@ -76,26 +73,26 @@ NavUtils.openRunningRecordsScreen() longClickOnView(withText(typeName1)) clickOnViewWithText(coreR.string.category_hint) - onView(withText(categoryName1)).check(isCompletelyBelow(withId(baseR.id.viewDividerItem))) - onView(withText(categoryName2)).check(isCompletelyAbove(withId(baseR.id.viewDividerItem))) + onView(withText(categoryName2)).check(isCompletelyBelow(withText(coreR.string.something_selected))) + onView(withText(categoryName1)).check(isCompletelyBelow(withText(categoryName2))) clickOnRecyclerItem(changeRecordTypeR.id.rvChangeRecordTypeCategories, withText(categoryName1)) clickOnRecyclerItem(changeRecordTypeR.id.rvChangeRecordTypeCategories, withText(categoryName2)) - onView(withText(categoryName1)).check(isCompletelyAbove(withId(baseR.id.viewDividerItem))) - onView(withText(categoryName2)).check(isCompletelyBelow(withId(baseR.id.viewDividerItem))) + onView(withText(categoryName1)).check(isCompletelyBelow(withText(coreR.string.something_selected))) + onView(withText(categoryName2)).check(isCompletelyBelow(withText(categoryName1))) clickOnViewWithText(coreR.string.change_record_type_save) // Check second activity longClickOnView(withText(typeName2)) clickOnViewWithText(coreR.string.category_hint) - onView(withText(categoryName1)).check(isCompletelyAbove(withId(baseR.id.viewDividerItem))) - onView(withText(categoryName2)).check(isCompletelyBelow(withId(baseR.id.viewDividerItem))) + onView(withText(categoryName1)).check(isCompletelyBelow(withText(coreR.string.something_selected))) + onView(withText(categoryName2)).check(isCompletelyBelow(withText(categoryName1))) clickOnRecyclerItem(changeRecordTypeR.id.rvChangeRecordTypeCategories, withText(categoryName1)) clickOnRecyclerItem(changeRecordTypeR.id.rvChangeRecordTypeCategories, withText(categoryName2)) - onView(withText(categoryName1)).check(isCompletelyBelow(withId(baseR.id.viewDividerItem))) - onView(withText(categoryName2)).check(isCompletelyAbove(withId(baseR.id.viewDividerItem))) + onView(withText(categoryName2)).check(isCompletelyBelow(withText(coreR.string.something_selected))) + onView(withText(categoryName1)).check(isCompletelyBelow(withText(categoryName2))) clickOnViewWithText(coreR.string.change_record_type_save) @@ -105,15 +102,15 @@ longClickOnView(withText(categoryName1)) clickOnViewWithText(coreR.string.change_category_types_hint) - onView(withText(typeName1)).check(isCompletelyAbove(withId(baseR.id.viewDividerItem))) - onView(withText(typeName2)).check(isCompletelyBelow(withId(baseR.id.viewDividerItem))) + onView(withText(typeName1)).check(isCompletelyBelow(withText(coreR.string.something_selected))) + onView(withText(typeName2)).check(isCompletelyBelow(withText(typeName1))) pressBack() // Check second category longClickOnView(withText(categoryName2)) clickOnViewWithText(coreR.string.change_category_types_hint) - onView(withText(typeName1)).check(isCompletelyBelow(withId(baseR.id.viewDividerItem))) - onView(withText(typeName2)).check(isCompletelyAbove(withId(baseR.id.viewDividerItem))) + onView(withText(typeName2)).check(isCompletelyBelow(withText(coreR.string.something_selected))) + onView(withText(typeName1)).check(isCompletelyBelow(withText(typeName2))) } } diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/RecordsAllTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/RecordsAllTest.kt --- a/app/src/androidTest/java/com/example/util/simpletimetracker/RecordsAllTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/RecordsAllTest.kt @@ -358,6 +358,6 @@ checkViewDoesNotExist(record1) checkViewDoesNotExist(record2) checkViewDoesNotExist(record3) - checkViewIsDisplayed(withText(coreR.string.records_empty)) + checkViewIsDisplayed(withText(coreR.string.no_data)) } } diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/RecordsRangesTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/RecordsRangesTest.kt --- a/app/src/androidTest/java/com/example/util/simpletimetracker/RecordsRangesTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/RecordsRangesTest.kt @@ -76,9 +76,9 @@ checkViewIsDisplayed(allOf(withText(name), isCompletelyDisplayed())) clickOnViewWithId(recordsR.id.btnRecordsContainerNext) - checkViewIsDisplayed(allOf(withText(coreR.string.records_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) clickOnViewWithId(recordsR.id.btnRecordsContainerNext) - checkViewIsDisplayed(allOf(withText(coreR.string.records_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) } @Test diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/SettingsTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/SettingsTest.kt --- a/app/src/androidTest/java/com/example/util/simpletimetracker/SettingsTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/SettingsTest.kt @@ -62,7 +62,7 @@ class SettingsTest : BaseUiTest() { @Test - fun showUntrackedSetting() { + fun showUntrackedInRecords() { val name = "Test" val color = firstColor val icon = firstIcon @@ -72,41 +72,92 @@ val before = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1) testUtils.addRecord(name, timeStarted = before, timeEnded = before) - // Untracked is not shown - NavUtils.openRecordsScreen() - checkViewDoesNotExist( - allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed()), - ) - - // Change setting - NavUtils.openSettingsScreen() - NavUtils.openSettingsDisplay() - onView(withId(settingsR.id.checkboxSettingsShowUntracked)).perform(nestedScrollTo()) - onView(withId(settingsR.id.checkboxSettingsShowUntracked)).check(matches(isNotChecked())) - unconstrainedClickOnView(withId(settingsR.id.checkboxSettingsShowUntracked)) - onView(withId(settingsR.id.checkboxSettingsShowUntracked)).check(matches(isChecked())) - // Untracked is shown NavUtils.openRecordsScreen() checkViewIsDisplayed(allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed())) - // Add record - NavUtils.addRecord(name) - checkViewIsDisplayed(allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed())) - checkViewIsDisplayed(allOf(withText(name), isCompletelyDisplayed())) - // Change setting NavUtils.openSettingsScreen() - onView(withId(settingsR.id.checkboxSettingsShowUntracked)).perform(nestedScrollTo()) - onView(withId(settingsR.id.checkboxSettingsShowUntracked)).check(matches(isChecked())) - unconstrainedClickOnView(withId(settingsR.id.checkboxSettingsShowUntracked)) - onView(withId(settingsR.id.checkboxSettingsShowUntracked)).check(matches(isNotChecked())) + NavUtils.openSettingsDisplay() + onView(withId(settingsR.id.checkboxSettingsShowUntrackedInRecords)).perform(nestedScrollTo()) + onView(withId(settingsR.id.checkboxSettingsShowUntrackedInRecords)).check(matches(isChecked())) + unconstrainedClickOnView(withId(settingsR.id.checkboxSettingsShowUntrackedInRecords)) + onView(withId(settingsR.id.checkboxSettingsShowUntrackedInRecords)).check(matches(isNotChecked())) // Untracked is not shown NavUtils.openRecordsScreen() checkViewDoesNotExist( allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed()), ) + + // Add record + NavUtils.addRecord(name) + checkViewDoesNotExist( + allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed()), + ) + checkViewIsDisplayed(allOf(withText(name), isCompletelyDisplayed())) + + // Change setting + NavUtils.openSettingsScreen() + onView(withId(settingsR.id.checkboxSettingsShowUntrackedInRecords)).perform(nestedScrollTo()) + onView(withId(settingsR.id.checkboxSettingsShowUntrackedInRecords)).check(matches(isNotChecked())) + unconstrainedClickOnView(withId(settingsR.id.checkboxSettingsShowUntrackedInRecords)) + onView(withId(settingsR.id.checkboxSettingsShowUntrackedInRecords)).check(matches(isChecked())) + + // Untracked is shown + NavUtils.openRecordsScreen() + checkViewIsDisplayed(allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(name), isCompletelyDisplayed())) + } + + @Test + fun showUntrackedInStatistics() { + val name = "Test" + val color = firstColor + val icon = firstIcon + + // Add activity + testUtils.addActivity(name = name, color = color, icon = icon) + val before = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1) + testUtils.addRecord(name, timeStarted = before, timeEnded = before) + + // Untracked is shown + NavUtils.openStatisticsScreen() + checkViewIsDisplayed(allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed())) + + // Change setting + NavUtils.openSettingsScreen() + NavUtils.openSettingsDisplay() + onView(withId(settingsR.id.checkboxSettingsShowUntrackedInStatistics)).perform(nestedScrollTo()) + onView(withId(settingsR.id.checkboxSettingsShowUntrackedInStatistics)).check(matches(isChecked())) + unconstrainedClickOnView(withId(settingsR.id.checkboxSettingsShowUntrackedInStatistics)) + onView(withId(settingsR.id.checkboxSettingsShowUntrackedInStatistics)).check(matches(isNotChecked())) + + // Untracked is not shown + NavUtils.openStatisticsScreen() + checkViewDoesNotExist( + allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed()), + ) + + // Add record + NavUtils.openRecordsScreen() + NavUtils.addRecord(name) + NavUtils.openStatisticsScreen() + checkViewDoesNotExist( + allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed()), + ) + checkViewIsDisplayed(allOf(withText(name), isCompletelyDisplayed())) + + // Change setting + NavUtils.openSettingsScreen() + onView(withId(settingsR.id.checkboxSettingsShowUntrackedInStatistics)).perform(nestedScrollTo()) + onView(withId(settingsR.id.checkboxSettingsShowUntrackedInStatistics)).check(matches(isNotChecked())) + unconstrainedClickOnView(withId(settingsR.id.checkboxSettingsShowUntrackedInStatistics)) + onView(withId(settingsR.id.checkboxSettingsShowUntrackedInStatistics)).check(matches(isChecked())) + + // Untracked is shown + NavUtils.openStatisticsScreen() + checkViewIsDisplayed(allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed())) checkViewIsDisplayed(allOf(withText(name), isCompletelyDisplayed())) } diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/StartRecordTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/StartRecordTest.kt --- a/app/src/androidTest/java/com/example/util/simpletimetracker/StartRecordTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/StartRecordTest.kt @@ -7,6 +7,7 @@ import androidx.test.espresso.matcher.ViewMatchers.withSubstring import androidx.test.espresso.matcher.ViewMatchers.withText import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.example.util.simpletimetracker.domain.model.RecordTypeGoal import com.example.util.simpletimetracker.utils.BaseUiTest import com.example.util.simpletimetracker.utils.NavUtils import com.example.util.simpletimetracker.utils.checkViewDoesNotExist @@ -39,7 +40,18 @@ val firstGoalTime = TimeUnit.MINUTES.toSeconds(10) // Add activities - testUtils.addActivity(name = name, color = firstColor, icon = firstIcon, goalTime = firstGoalTime) + testUtils.addActivity( + name = name, + color = firstColor, + icon = firstIcon, + goals = listOf( + RecordTypeGoal( + typeId = 0, + range = RecordTypeGoal.Range.Session, + type = RecordTypeGoal.Type.Duration(firstGoalTime), + ), + ), + ) testUtils.addActivity(name = newName, color = lastColor, icon = lastIcon) Thread.sleep(1000) @@ -56,8 +68,8 @@ hasDescendant(withText(name)), hasDescendant(withTag(firstIcon)), hasDescendant(withText(timeStarted)), - hasDescendant(withSubstring(goalString)) - ) + hasDescendant(withSubstring(goalString)), + ), ) // Start timer @@ -70,57 +82,57 @@ withCardColor(lastColor), hasDescendant(withText(newName)), hasDescendant(withTag(lastIcon)), - hasDescendant(withText(timeStarted)) - ) + hasDescendant(withText(timeStarted)), + ), ) checkViewDoesNotExist( allOf( withId(baseR.id.viewRunningRecordItem), hasDescendant(withText(newName)), - hasDescendant(withSubstring(getString(coreR.string.change_record_type_session_goal_time))) - ) + hasDescendant(withSubstring(getString(coreR.string.change_record_type_session_goal_time))), + ), ) // Stop timer by clicking on running record NavUtils.openRunningRecordsScreen() clickOnView( allOf( - isDescendantOfA(withId(baseR.id.viewRunningRecordItem)), withText(name), isCompletelyDisplayed() - ) + isDescendantOfA(withId(baseR.id.viewRunningRecordItem)), withText(name), isCompletelyDisplayed(), + ), ) checkViewDoesNotExist( allOf( - isDescendantOfA(withId(baseR.id.viewRunningRecordItem)), withText(name), isCompletelyDisplayed() - ) + isDescendantOfA(withId(baseR.id.viewRunningRecordItem)), withText(name), isCompletelyDisplayed(), + ), ) // Record is added NavUtils.openRecordsScreen() checkViewIsDisplayed( allOf( - withText(name), isDescendantOfA(withId(baseR.id.viewRecordItem)), isCompletelyDisplayed() - ) + withText(name), isDescendantOfA(withId(baseR.id.viewRecordItem)), isCompletelyDisplayed(), + ), ) // Stop timer by clicking on record type NavUtils.openRunningRecordsScreen() clickOnView( allOf( - isDescendantOfA(withId(baseR.id.viewRecordTypeItem)), withText(newName), isCompletelyDisplayed() - ) + isDescendantOfA(withId(baseR.id.viewRecordTypeItem)), withText(newName), isCompletelyDisplayed(), + ), ) checkViewDoesNotExist( allOf( - isDescendantOfA(withId(baseR.id.viewRunningRecordItem)), withText(newName), isCompletelyDisplayed() - ) + isDescendantOfA(withId(baseR.id.viewRunningRecordItem)), withText(newName), isCompletelyDisplayed(), + ), ) // Record is added NavUtils.openRecordsScreen() checkViewIsDisplayed( allOf( - withText(newName), isDescendantOfA(withId(baseR.id.viewRecordItem)), isCompletelyDisplayed() - ) + withText(newName), isDescendantOfA(withId(baseR.id.viewRecordItem)), isCompletelyDisplayed(), + ), ) } @@ -152,8 +164,8 @@ withId(baseR.id.viewRecordItem), hasDescendant(withText(name)), hasDescendant(withText(comment)), - isCompletelyDisplayed() - ) + isCompletelyDisplayed(), + ), ) clickOnView(allOf(withText(name), isCompletelyDisplayed())) clickOnViewWithText(coreR.string.change_record_comment_field) @@ -192,8 +204,8 @@ allOf( withId(baseR.id.viewRecordItem), hasDescendant(withText(fullName)), - isCompletelyDisplayed() - ) + isCompletelyDisplayed(), + ), ) clickOnView(allOf(withText(fullName), isCompletelyDisplayed())) checkViewIsDisplayed(allOf(withId(changeRecordR.id.previewChangeRecord), hasDescendant(withText(fullName)))) diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsFilterTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsFilterTest.kt --- a/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsFilterTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsFilterTest.kt @@ -85,7 +85,7 @@ checkViewDoesNotExist(allOf(withText(name1), isCompletelyDisplayed())) checkViewDoesNotExist(allOf(withText(name2), isCompletelyDisplayed())) checkViewDoesNotExist(allOf(withId(statisticsR.id.tvStatisticsInfoText), isCompletelyDisplayed())) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) // Show all clickOnViewWithIdOnPager(statisticsR.id.btnStatisticsEmptyFilter) @@ -106,7 +106,7 @@ checkViewDoesNotExist(allOf(withText(name1), isCompletelyDisplayed())) checkViewDoesNotExist(allOf(withText(name2), isCompletelyDisplayed())) checkViewDoesNotExist(allOf(withId(statisticsR.id.tvStatisticsInfoText), isCompletelyDisplayed())) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) } @Test @@ -202,7 +202,7 @@ tryAction { checkViewDoesNotExist(allOf(withText(tag1), isCompletelyDisplayed())) } checkViewDoesNotExist(allOf(withText(tag2), isCompletelyDisplayed())) checkViewDoesNotExist(allOf(withId(statisticsR.id.tvStatisticsInfoText), isCompletelyDisplayed())) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) // Show all clickOnViewWithIdOnPager(statisticsR.id.btnStatisticsEmptyFilter) @@ -225,7 +225,7 @@ checkViewDoesNotExist(allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed())) checkViewDoesNotExist(allOf(withText(coreR.string.uncategorized_time_name), isCompletelyDisplayed())) checkViewDoesNotExist(allOf(withId(statisticsR.id.tvStatisticsInfoText), isCompletelyDisplayed())) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) } @Test @@ -321,7 +321,7 @@ tryAction { checkViewDoesNotExist(allOf(withText(tag1), isCompletelyDisplayed())) } checkViewDoesNotExist(allOf(withText(tag2), isCompletelyDisplayed())) checkViewDoesNotExist(allOf(withId(statisticsR.id.tvStatisticsInfoText), isCompletelyDisplayed())) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) // Show all clickOnViewWithIdOnPager(statisticsR.id.btnStatisticsEmptyFilter) @@ -344,6 +344,6 @@ checkViewDoesNotExist(allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed())) checkViewDoesNotExist(allOf(withText(coreR.string.change_record_untagged), isCompletelyDisplayed())) checkViewDoesNotExist(allOf(withId(statisticsR.id.tvStatisticsInfoText), isCompletelyDisplayed())) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) } } diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsRangesTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsRangesTest.kt --- a/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsRangesTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsRangesTest.kt @@ -62,9 +62,9 @@ clickOnViewWithId(statisticsR.id.btnStatisticsContainerPrevious) longClickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) clickOnViewWithId(statisticsR.id.btnStatisticsContainerNext) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) clickOnViewWithId(statisticsR.id.btnStatisticsContainerNext) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) // Switch to week range clickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) @@ -75,9 +75,9 @@ clickOnViewWithId(statisticsR.id.btnStatisticsContainerPrevious) longClickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) clickOnViewWithId(statisticsR.id.btnStatisticsContainerNext) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) clickOnViewWithId(statisticsR.id.btnStatisticsContainerNext) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) // Switch to month range clickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) @@ -88,9 +88,9 @@ clickOnViewWithId(statisticsR.id.btnStatisticsContainerPrevious) longClickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) clickOnViewWithId(statisticsR.id.btnStatisticsContainerNext) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) clickOnViewWithId(statisticsR.id.btnStatisticsContainerNext) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) // Switch to year range clickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) @@ -101,9 +101,9 @@ clickOnViewWithId(statisticsR.id.btnStatisticsContainerPrevious) longClickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) clickOnViewWithId(statisticsR.id.btnStatisticsContainerNext) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) clickOnViewWithId(statisticsR.id.btnStatisticsContainerNext) - checkViewIsDisplayed(allOf(withText(coreR.string.statistics_empty), isCompletelyDisplayed())) + checkViewIsDisplayed(allOf(withText(coreR.string.no_data), isCompletelyDisplayed())) // Switch to overall range clickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) 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 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/utils/NavUtils.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/utils/NavUtils.kt @@ -84,7 +84,6 @@ icon: Int? = null, text: String? = null, categories: List = emptyList(), - goalTime: String? = null, ) { tryAction { clickOnViewWithText(coreR.string.running_records_add_type) } @@ -123,17 +122,6 @@ clickOnRecyclerItem(changeRecordTypeR.id.rvChangeRecordTypeCategories, withText(categoryName)) } clickOnViewWithText(coreR.string.category_hint) - } - - // Goal time - if (!goalTime.isNullOrEmpty()) { - clickOnViewWithText(coreR.string.change_record_type_goal_time_hint) - clickOnViewWithId(changeRecordTypeR.id.groupChangeRecordTypeSessionGoalTime) - goalTime.forEach { char -> - clickOnViewWithText(char.toString()) - } - clickOnViewWithText(coreR.string.duration_dialog_save) - clickOnViewWithText(coreR.string.change_record_type_goal_time_hint) } closeSoftKeyboard() 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 --- 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 @@ -58,8 +58,7 @@ colorInt: Int? = null, icon: Int? = null, text: String? = null, - goalTime: Long? = null, - goalRange: RecordTypeGoal.Range? = null, + goals: List = emptyList(), archived: Boolean = false, categories: List = emptyList(), ) = runBlocking { @@ -95,14 +94,8 @@ recordTypeCategoryInteractor.addCategories(typeId, categoryIds) } - if (goalTime != null && goalRange != null) { - RecordTypeGoal( - typeId = typeId, - range = goalRange, - type = RecordTypeGoal.Type.Duration(goalTime), - ).let { - recordTypeGoalInteractor.add(it) - } + goals.forEach { + recordTypeGoalInteractor.add(it.copy(typeId = typeId)) } } diff --git a/core/src/test/java/com/example/util/simpletimetracker/core/mapper/TimeMapperGetRangeStartAndEndTest.kt b/core/src/test/java/com/example/util/simpletimetracker/core/mapper/TimeMapperGetRangeStartAndEndTest.kt --- a/core/src/test/java/com/example/util/simpletimetracker/core/mapper/TimeMapperGetRangeStartAndEndTest.kt +++ b/core/src/test/java/com/example/util/simpletimetracker/core/mapper/TimeMapperGetRangeStartAndEndTest.kt @@ -44,7 +44,7 @@ `when`(currentTimestampProvider.get()).thenReturn(input[4] as Long) `when`(localeProvider.get()).thenReturn(Locale.getDefault()) - val subject = TimeMapper(resourceRepo, localeProvider, currentTimestampProvider) + val subject = TimeMapper(localeProvider, resourceRepo, currentTimestampProvider) assertEquals( "Test failed for params $input", @@ -132,7 +132,7 @@ `when`(currentTimestampProvider.get()).thenReturn(input[4] as Long) `when`(localeProvider.get()).thenReturn(Locale.getDefault()) - val subject = TimeMapper(resourceRepo, localeProvider, currentTimestampProvider) + val subject = TimeMapper(localeProvider, resourceRepo, currentTimestampProvider) assertEquals( "Test failed for params $input", @@ -304,7 +304,7 @@ `when`(currentTimestampProvider.get()).thenReturn(input[4] as Long) `when`(localeProvider.get()).thenReturn(Locale.getDefault()) - val subject = TimeMapper(resourceRepo, localeProvider, currentTimestampProvider) + val subject = TimeMapper(localeProvider, resourceRepo, currentTimestampProvider) assertEquals( "Test failed for params $input", @@ -446,7 +446,7 @@ `when`(currentTimestampProvider.get()).thenReturn(input[4] as Long) `when`(localeProvider.get()).thenReturn(Locale.getDefault()) - val subject = TimeMapper(resourceRepo, localeProvider, currentTimestampProvider) + val subject = TimeMapper(localeProvider, resourceRepo, currentTimestampProvider) assertEquals( "Test failed for params $input", @@ -588,7 +588,7 @@ `when`(currentTimestampProvider.get()).thenReturn(input[4] as Long) `when`(localeProvider.get()).thenReturn(Locale.getDefault()) - val subject = TimeMapper(resourceRepo, localeProvider, currentTimestampProvider) + val subject = TimeMapper(localeProvider, resourceRepo, currentTimestampProvider) assertEquals( "Test failed for params $input", diff --git a/core/src/test/java/com/example/util/simpletimetracker/core/mapper/TimeMapperTitleTest.kt b/core/src/test/java/com/example/util/simpletimetracker/core/mapper/TimeMapperTitleTest.kt --- a/core/src/test/java/com/example/util/simpletimetracker/core/mapper/TimeMapperTitleTest.kt +++ b/core/src/test/java/com/example/util/simpletimetracker/core/mapper/TimeMapperTitleTest.kt @@ -51,7 +51,7 @@ `when`(currentTimestampProvider.get()).thenReturn(input[2] as Long) `when`(localeProvider.get()).thenReturn(Locale.getDefault()) - val subject = TimeMapper(resourceRepo, localeProvider, currentTimestampProvider) + val subject = TimeMapper(localeProvider, resourceRepo, currentTimestampProvider) assertEquals( "Test failed for params $input", @@ -127,7 +127,7 @@ `when`(currentTimestampProvider.get()).thenReturn(input[3] as Long) `when`(localeProvider.get()).thenReturn(Locale.getDefault()) - val subject = TimeMapper(resourceRepo, localeProvider, currentTimestampProvider) + val subject = TimeMapper(localeProvider, resourceRepo, currentTimestampProvider) assertEquals( "Test failed for params $input", @@ -260,7 +260,7 @@ `when`(currentTimestampProvider.get()).thenReturn(input[2] as Long) `when`(localeProvider.get()).thenReturn(Locale.getDefault()) - val subject = TimeMapper(resourceRepo, localeProvider, currentTimestampProvider) + val subject = TimeMapper(localeProvider, resourceRepo, currentTimestampProvider) assertEquals( "Test failed for params $input", @@ -354,7 +354,7 @@ `when`(currentTimestampProvider.get()).thenReturn(input[2] as Long) `when`(localeProvider.get()).thenReturn(Locale.getDefault()) - val subject = TimeMapper(resourceRepo, localeProvider, currentTimestampProvider) + val subject = TimeMapper(localeProvider, resourceRepo, currentTimestampProvider) assertEquals( "Test failed for params $input", diff --git a/features/feature_goals/src/main/java/com/example/util/simpletimetracker/feature_goals/interactor/GoalsViewDataInteractor.kt b/features/feature_goals/src/main/java/com/example/util/simpletimetracker/feature_goals/interactor/GoalsViewDataInteractor.kt --- a/features/feature_goals/src/main/java/com/example/util/simpletimetracker/feature_goals/interactor/GoalsViewDataInteractor.kt +++ b/features/feature_goals/src/main/java/com/example/util/simpletimetracker/feature_goals/interactor/GoalsViewDataInteractor.kt @@ -76,7 +76,6 @@ } .toList() - return@withContext items .takeUnless { it.isEmpty() } ?.flatten() diff --git a/features/feature_goals/src/main/java/com/example/util/simpletimetracker/feature_goals/view/GoalsFragment.kt b/features/feature_goals/src/main/java/com/example/util/simpletimetracker/feature_goals/view/GoalsFragment.kt --- a/features/feature_goals/src/main/java/com/example/util/simpletimetracker/feature_goals/view/GoalsFragment.kt +++ b/features/feature_goals/src/main/java/com/example/util/simpletimetracker/feature_goals/view/GoalsFragment.kt @@ -77,7 +77,6 @@ viewModel.onHidden() } - companion object { fun newInstance(): GoalsFragment = GoalsFragment() } diff --git a/features/feature_records/src/main/java/com/example/util/simpletimetracker/feature_records/mapper/RecordsViewDataMapper.kt b/features/feature_records/src/main/java/com/example/util/simpletimetracker/feature_records/mapper/RecordsViewDataMapper.kt --- a/features/feature_records/src/main/java/com/example/util/simpletimetracker/feature_records/mapper/RecordsViewDataMapper.kt +++ b/features/feature_records/src/main/java/com/example/util/simpletimetracker/feature_records/mapper/RecordsViewDataMapper.kt @@ -8,7 +8,6 @@ import com.example.util.simpletimetracker.domain.model.RecordTag import com.example.util.simpletimetracker.domain.model.RecordType import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType -import com.example.util.simpletimetracker.feature_base_adapter.empty.EmptyViewData import com.example.util.simpletimetracker.feature_base_adapter.hint.HintViewData import com.example.util.simpletimetracker.feature_base_adapter.record.RecordViewData import com.example.util.simpletimetracker.feature_records.R diff --git a/features/feature_settings/src/main/java/com/example/util/simpletimetracker/feature_settings/viewModel/SettingsViewModel.kt b/features/feature_settings/src/main/java/com/example/util/simpletimetracker/feature_settings/viewModel/SettingsViewModel.kt --- a/features/feature_settings/src/main/java/com/example/util/simpletimetracker/feature_settings/viewModel/SettingsViewModel.kt +++ b/features/feature_settings/src/main/java/com/example/util/simpletimetracker/feature_settings/viewModel/SettingsViewModel.kt @@ -18,9 +18,6 @@ import com.example.util.simpletimetracker.feature_settings.viewModel.delegate.SettingsRatingViewModelDelegate import com.example.util.simpletimetracker.feature_settings.viewModel.delegate.SettingsTranslatorsViewModelDelegate import com.example.util.simpletimetracker.navigation.Router -import com.example.util.simpletimetracker.navigation.params.screen.ArchiveParams -import com.example.util.simpletimetracker.navigation.params.screen.CategoriesParams -import com.example.util.simpletimetracker.navigation.params.screen.DataEditParams import com.example.util.simpletimetracker.navigation.params.screen.DateTimeDialogParams import com.example.util.simpletimetracker.navigation.params.screen.DateTimeDialogType import dagger.hilt.android.lifecycle.HiltViewModel diff --git a/features/feature_settings/src/main/java/com/example/util/simpletimetracker/feature_settings/viewModel/delegate/SettingsAdditionalViewModelDelegate.kt b/features/feature_settings/src/main/java/com/example/util/simpletimetracker/feature_settings/viewModel/delegate/SettingsAdditionalViewModelDelegate.kt --- a/features/feature_settings/src/main/java/com/example/util/simpletimetracker/feature_settings/viewModel/delegate/SettingsAdditionalViewModelDelegate.kt +++ b/features/feature_settings/src/main/java/com/example/util/simpletimetracker/feature_settings/viewModel/delegate/SettingsAdditionalViewModelDelegate.kt @@ -119,7 +119,6 @@ } } - fun onShowRecordTagSelectionClicked() { delegateScope.launch { val newValue = !prefsInteractor.getShowRecordTagSelection()