A fork of Simple Time Tracker with WearOS support. (Now integrated upstream)
0

Configure Feed

Select the types of activity you want to include in your feed.

fixing tests

razeeman (May 6, 2023, 7:48 PM +0300) 61cb4e8c c87c3c5d

+108 -41
+1
app/proguard-debug-rules.pro
··· 4 4 -keep class dagger.hilt.** { *; } 5 5 -keepclassmembers class com.example.util.simpletimetracker.feature_records.view.RecordsContainerFragment$Companion { void setViewPagerSmoothScroll(boolean); } 6 6 -keepclassmembers class com.example.util.simpletimetracker.feature_statistics.view.StatisticsContainerFragment$Companion { void setViewPagerSmoothScroll(boolean); } 7 + -keepclassmembers class com.example.util.simpletimetracker.feature_views.pieChart.PieChartView$Companion { void setDisableAnimationsForTest(boolean); } 7 8 -keepclassmembers class com.example.util.simpletimetracker.core.mapper.ColorMapper$Companion { synthetic java.util.List getAvailableColors$default(com.example.util.simpletimetracker.core.mapper.ColorMapper$Companion,boolean,int,java.lang.Object); } 8 9 -keep class com.example.util.simpletimetracker.core.utils.CountingIdlingResourceProvider { *; } 9 10 -keep class com.example.util.simpletimetracker.core.utils.TestUtils { *; }
+43
app/src/androidTest/java/com/example/util/simpletimetracker/MainScreenEmptyTest.kt
··· 167 167 clickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) 168 168 clickOnViewWithText(coreR.string.range_day) 169 169 checkRanges() 170 + 171 + // Empty tag statistics 172 + clickOnViewWithIdOnPager(statisticsR.id.btnStatisticsEmptyFilter) 173 + clickOnViewWithText(coreR.string.record_tag_hint_short) 174 + pressBack() 175 + longClickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) 176 + 177 + // Day range 178 + clickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) 179 + clickOnViewWithText(coreR.string.range_day) 180 + checkRanges() 181 + 182 + // Week range 183 + clickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) 184 + clickOnViewWithText(coreR.string.range_week) 185 + checkRanges() 186 + 187 + // Month range 188 + clickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) 189 + clickOnViewWithText(coreR.string.range_month) 190 + checkRanges() 191 + 192 + // Year range 193 + clickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) 194 + clickOnViewWithText(coreR.string.range_year) 195 + checkRanges() 196 + 197 + // Overall range 198 + clickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) 199 + clickOnViewWithText(coreR.string.range_overall) 200 + checkViewIsDisplayed( 201 + allOf( 202 + withId(baseR.id.viewStatisticsItem), 203 + hasDescendant(withText(coreR.string.untracked_time_name)), 204 + hasDescendant(withSubstring("100%")), 205 + isCompletelyDisplayed() 206 + ) 207 + ) 208 + 209 + // Back to day range 210 + clickOnViewWithId(statisticsR.id.btnStatisticsContainerToday) 211 + clickOnViewWithText(coreR.string.range_day) 212 + checkRanges() 170 213 } 171 214 172 215 private fun checkRanges() {
-25
app/src/androidTest/java/com/example/util/simpletimetracker/RecordsAllTest.kt
··· 359 359 checkViewDoesNotExist(record2) 360 360 checkViewDoesNotExist(record3) 361 361 checkViewIsDisplayed(withText(coreR.string.records_empty)) 362 - 363 - // Show all 364 - pressBack() 365 - clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter) 366 - // clickOnViewWithId(R.id.btnTypesFilterShowAll) 367 - pressBack() 368 - 369 - // Check records 370 - onView(withId(statisticsDetailR.id.cardStatisticsDetailRecords)).perform(nestedScrollTo(), click()) 371 - checkViewIsDisplayed(record1) 372 - checkViewIsDisplayed(record2) 373 - checkViewIsDisplayed(record3) 374 - 375 - // Hide all 376 - pressBack() 377 - clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter) 378 - // clickOnViewWithId(R.id.btnTypesFilterHideAll) 379 - pressBack() 380 - 381 - // Check records 382 - onView(withId(statisticsDetailR.id.cardStatisticsDetailRecords)).perform(nestedScrollTo(), click()) 383 - checkViewDoesNotExist(record1) 384 - checkViewDoesNotExist(record2) 385 - checkViewDoesNotExist(record3) 386 - checkViewIsDisplayed(withText(coreR.string.records_empty)) 387 362 } 388 363 }
-2
app/src/androidTest/java/com/example/util/simpletimetracker/SettingsTest.kt
··· 127 127 } 128 128 checkViewIsDisplayed(allOf(withId(baseR.id.viewRunningRecordItem), hasDescendant(withText(name3)))) 129 129 130 - // Click on already running 131 - clickOnView(allOf(isDescendantOfA(withId(baseR.id.viewRecordTypeItem)), withText(name2))) 132 130 NavUtils.openRecordsScreen() 133 131 checkViewDoesNotExist( 134 132 allOf(withText(name1), isDescendantOfA(withId(baseR.id.viewRecordItem)), isCompletelyDisplayed())
+13 -1
app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsDetailTest.kt
··· 8 8 import androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed 9 9 import androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA 10 10 import androidx.test.espresso.matcher.ViewMatchers.withId 11 + import androidx.test.espresso.matcher.ViewMatchers.withSubstring 11 12 import androidx.test.espresso.matcher.ViewMatchers.withText 12 13 import androidx.test.ext.junit.runners.AndroidJUnit4 13 14 import com.example.util.simpletimetracker.utils.BaseUiTest ··· 1117 1118 1118 1119 // Filter untagged records 1119 1120 clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter) 1121 + clickOnView(withSubstring(getString(coreR.string.records_filter_filter_tags))) 1120 1122 clickOnView( 1121 1123 allOf(isDescendantOfA(withId(baseR.id.viewCategoryItem)), withText(coreR.string.change_record_untagged)) 1122 1124 ) ··· 1125 1127 1126 1128 // Change filter 1127 1129 clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter) 1130 + clickOnView(withSubstring(getString(coreR.string.records_filter_filter_tags))) 1128 1131 clickOnView(allOf(isDescendantOfA(withId(baseR.id.viewCategoryItem)), withText(tag1))) 1129 1132 pressBack() 1130 1133 checkRecordsCard(2) 1131 1134 1132 1135 // Change filter 1133 1136 clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter) 1137 + clickOnView(withSubstring(getString(coreR.string.records_filter_filter_tags))) 1134 1138 clickOnView(allOf(isDescendantOfA(withId(baseR.id.viewCategoryItem)), withText(tag2))) 1135 1139 pressBack() 1136 1140 checkRecordsCard(1) 1137 1141 1138 1142 // Change filter 1139 1143 clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter) 1144 + clickOnView(withSubstring(getString(coreR.string.records_filter_filter_tags))) 1140 1145 clickOnView(allOf(isDescendantOfA(withId(baseR.id.viewCategoryItem)), withText(tag3))) 1141 1146 pressBack() 1142 1147 checkRecordsCard(0) 1143 1148 1144 1149 // Change filter 1145 1150 clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter) 1146 - clickOnViewWithText(coreR.string.types_filter_show_all) 1151 + clickOnView( 1152 + allOf( 1153 + hasSibling(withSubstring(getString(coreR.string.records_filter_filter_tags))), 1154 + withId(baseR.id.ivRecordFilterItemRemove) 1155 + ) 1156 + ) 1157 + clickOnView(withSubstring(getString(coreR.string.records_filter_filter_tags))) 1147 1158 clickOnView(allOf(isDescendantOfA(withId(baseR.id.viewCategoryItem)), withText(tag3))) 1148 1159 pressBack() 1149 1160 checkRecordsCard(4) 1150 1161 1151 1162 // Change filter 1152 1163 clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter) 1164 + clickOnView(withSubstring(getString(coreR.string.records_filter_filter_tags))) 1153 1165 clickOnView(allOf(isDescendantOfA(withId(baseR.id.viewCategoryItem)), withText(tag1))) 1154 1166 pressBack() 1155 1167 checkRecordsCard(2)
+13
app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsFilterTest.kt
··· 140 140 pressBack() 141 141 142 142 // All tags displayed 143 + tryAction { checkViewIsDisplayed(allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed())) } 144 + checkViewIsDisplayed(allOf(withText(tag1), isCompletelyDisplayed())) 145 + checkViewIsDisplayed(allOf(withText(tag2), isCompletelyDisplayed())) 146 + checkViewIsDisplayed( 147 + allOf(withId(statisticsR.id.tvStatisticsInfoText), withText("2$hourString 0$minuteString")) 148 + ) 149 + 150 + // Filter untracked 151 + clickOnViewWithIdOnPager(statisticsR.id.btnStatisticsChartFilter) 152 + clickOnView( 153 + allOf(isDescendantOfA(withId(baseR.id.viewCategoryItem)), withText(coreR.string.untracked_time_name)) 154 + ) 155 + pressBack() 143 156 tryAction { checkViewDoesNotExist(allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed())) } 144 157 checkViewIsDisplayed(allOf(withText(tag1), isCompletelyDisplayed())) 145 158 checkViewIsDisplayed(allOf(withText(tag2), isCompletelyDisplayed()))
+29 -9
app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsTest.kt
··· 73 73 clickOnViewWithText(coreR.string.range_overall) 74 74 Thread.sleep(1000) 75 75 76 - checkViewDoesNotExist( 77 - allOf( 78 - withText(coreR.string.untracked_time_name), 79 - isCompletelyDisplayed() 80 - ) 81 - ) 76 + checkViewIsDisplayed(allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed())) 82 77 checkViewDoesNotExist(allOf(withText("1$hourString 0m"), isCompletelyDisplayed())) 83 78 checkViewIsDisplayed( 84 79 allOf( ··· 312 307 checkViewIsDisplayed( 313 308 allOf( 314 309 withId(baseR.id.viewStatisticsItem), 310 + hasDescendant(withText(coreR.string.untracked_time_name)), 311 + hasDescendant(withSubstring("%")), 312 + isCompletelyDisplayed() 313 + ) 314 + ) 315 + checkViewIsDisplayed( 316 + allOf( 317 + withId(baseR.id.viewStatisticsItem), 315 318 withCardColor(firstColor), 316 319 hasDescendant(withText(categoryName1)), 317 320 hasDescendant(withText("3$hourString 0$minuteString")), 318 - hasDescendant(withSubstring("60%")), 321 + hasDescendant(withSubstring("%")), 319 322 isCompletelyDisplayed() 320 323 ) 321 324 ) ··· 325 328 withCardColor(lastColor), 326 329 hasDescendant(withText(categoryName2)), 327 330 hasDescendant(withText("2$hourString 0$minuteString")), 328 - hasDescendant(withSubstring("40%")), 331 + hasDescendant(withSubstring("%")), 329 332 isCompletelyDisplayed() 330 333 ) 331 334 ) ··· 351 354 clickOnViewWithId(statisticsR.id.btnStatisticsContainerPrevious) 352 355 checkViewIsDisplayed( 353 356 allOf( 354 - withText(coreR.string.statistics_empty), 357 + withId(baseR.id.viewStatisticsItem), 358 + hasDescendant(withText(coreR.string.untracked_time_name)), 359 + hasDescendant(withText("100%")), 360 + hasDescendant(withSubstring("$hourString 0$minuteString")), 361 + isCompletelyDisplayed() 362 + ) 363 + ) 364 + checkViewIsDisplayed( 365 + allOf( 366 + withId(statisticsR.id.layoutStatisticsInfoItem), 367 + hasDescendant(withText(coreR.string.statistics_total_tracked)), 368 + hasDescendant(withText("0$secondString")), 369 + isCompletelyDisplayed() 370 + ) 371 + ) 372 + checkViewDoesNotExist( 373 + allOf( 374 + withText(coreR.string.statistics_hint), 355 375 isCompletelyDisplayed() 356 376 ) 357 377 )
+3
app/src/androidTest/java/com/example/util/simpletimetracker/utils/BaseUiTest.kt
··· 18 18 import com.example.util.simpletimetracker.domain.interactor.PrefsInteractor 19 19 import com.example.util.simpletimetracker.feature_records.view.RecordsContainerFragment 20 20 import com.example.util.simpletimetracker.feature_statistics.view.StatisticsContainerFragment 21 + import com.example.util.simpletimetracker.feature_views.pieChart.PieChartView 21 22 import com.example.util.simpletimetracker.ui.MainActivity 22 23 import dagger.hilt.android.testing.HiltAndroidRule 23 24 import dagger.hilt.android.testing.HiltAndroidTest ··· 136 137 private fun disableAnimations() { 137 138 RecordsContainerFragment.viewPagerSmoothScroll = false 138 139 StatisticsContainerFragment.viewPagerSmoothScroll = false 140 + PieChartView.disableAnimationsForTest = true 139 141 } 140 142 141 143 private fun enableAnimations() { 142 144 RecordsContainerFragment.viewPagerSmoothScroll = true 143 145 StatisticsContainerFragment.viewPagerSmoothScroll = true 146 + PieChartView.disableAnimationsForTest = false 144 147 } 145 148 146 149 private fun registerIdlingResource() {
+3 -3
domain/src/main/java/com/example/util/simpletimetracker/domain/model/RecordsFilter.kt
··· 17 17 data class ManuallyFiltered(val recordIds: List<Long>) : RecordsFilter 18 18 19 19 sealed interface CommentItem { 20 - object NoComment: CommentItem 21 - object AnyComment: CommentItem 22 - data class Comment(val text: String): CommentItem 20 + object NoComment : CommentItem 21 + object AnyComment : CommentItem 22 + data class Comment(val text: String) : CommentItem 23 23 } 24 24 25 25 sealed interface CategoryItem {
-1
features/feature_statistics/src/main/java/com/example/util/simpletimetracker/feature_statistics/viewModel/StatisticsViewModel.kt
··· 19 19 import com.example.util.simpletimetracker.feature_base_adapter.statistics.StatisticsViewData 20 20 import com.example.util.simpletimetracker.feature_statistics.extra.StatisticsExtra 21 21 import com.example.util.simpletimetracker.feature_statistics.interactor.StatisticsViewDataInteractor 22 - import com.example.util.simpletimetracker.feature_views.TransitionNames 23 22 import com.example.util.simpletimetracker.navigation.Router 24 23 import com.example.util.simpletimetracker.navigation.params.screen.ChartFilterDialogParams 25 24 import com.example.util.simpletimetracker.navigation.params.screen.StatisticsDetailParams
+3
features/feature_views/src/main/java/com/example/util/simpletimetracker/feature_views/pieChart/PieChartView.kt
··· 267 267 sweepAngle: Float, 268 268 r: Float, 269 269 ) { 270 + if (disableAnimationsForTest) return 270 271 if (!drawParticles) return 271 272 if (segment.drawable == null) return 272 273 if (sweepAngle < PARTICLES_ANGLE_CUTOFF) return ··· 470 471 ) 471 472 472 473 companion object { 474 + var disableAnimationsForTest: Boolean = false 475 + 473 476 private var animateParticlesStartTime: Long = -1 474 477 private var animateParticlesFrameTime: Long = -1 475 478