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.

add activity name check, add messages test

razeeman (Jul 11, 2020, 11:57 AM +0300) 01645a35 0347a434

+68 -2
+3
app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTest.kt
··· 91 91 checkPreviewUpdated(withText(timeEndedPreview)) 92 92 checkPreviewUpdated(withText("2h 3m")) 93 93 94 + // Activity not selected 95 + clickOnViewWithText(R.string.change_record_save) 96 + 94 97 // Open activity chooser 95 98 clickOnViewWithText(R.string.change_record_type_field) 96 99 checkViewIsDisplayed(withId(R.id.rvChangeRecordType))
+3
app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTypeTest.kt
··· 41 41 checkViewIsNotDisplayed(withId(R.id.rvChangeRecordTypeColor)) 42 42 checkViewIsNotDisplayed(withId(R.id.rvChangeRecordTypeIcon)) 43 43 44 + // Name is not selected 45 + clickOnViewWithText(R.string.change_record_type_save) 46 + 44 47 // Typing name 45 48 typeTextIntoView(R.id.etChangeRecordTypeName, name) 46 49 checkPreviewUpdated(withText(name))
+35
app/src/androidTest/java/com/example/util/simpletimetracker/MessagesTest.kt
··· 1 + package com.example.util.simpletimetracker 2 + 3 + import androidx.test.espresso.Espresso.pressBack 4 + import androidx.test.ext.junit.runners.AndroidJUnit4 5 + import com.example.util.simpletimetracker.utils.BaseUiTest 6 + import com.example.util.simpletimetracker.utils.NavUtils 7 + import com.example.util.simpletimetracker.utils.clickOnViewWithId 8 + import com.example.util.simpletimetracker.utils.clickOnViewWithText 9 + import com.example.util.simpletimetracker.utils.toastTextShowing 10 + import org.junit.Test 11 + import org.junit.runner.RunWith 12 + 13 + @RunWith(AndroidJUnit4::class) 14 + class MessagesTest : BaseUiTest() { 15 + 16 + @Test 17 + fun test() { 18 + // Activity with no name 19 + clickOnViewWithText(R.string.running_records_add_type) 20 + clickOnViewWithText(R.string.change_record_type_save) 21 + toastTextShowing(R.string.change_record_message_choose_name) 22 + pressBack() 23 + pressBack() 24 + 25 + // Add record 26 + NavUtils.openRecordsScreen() 27 + clickOnViewWithId(R.id.btnRecordAdd) 28 + 29 + // Record with no activity 30 + // Wait for previous message to disappear 31 + Thread.sleep(5000) 32 + clickOnViewWithText(R.string.change_record_save) 33 + toastTextShowing(R.string.message_choose_type) 34 + } 35 + }
+17 -1
app/src/androidTest/java/com/example/util/simpletimetracker/utils/Matchers.kt
··· 1 1 package com.example.util.simpletimetracker.utils 2 2 3 3 import android.view.View 4 + import android.view.WindowManager 4 5 import androidx.cardview.widget.CardView 5 6 import androidx.core.content.ContextCompat 7 + import androidx.test.espresso.Root 6 8 import androidx.test.espresso.matcher.BoundedMatcher 7 9 import androidx.test.espresso.matcher.ViewMatchers.withTagValue 8 10 import org.hamcrest.CoreMatchers.equalTo 9 11 import org.hamcrest.Description 10 12 import org.hamcrest.Matcher 13 + import org.hamcrest.TypeSafeMatcher 11 14 12 15 fun withCardColor(expectedId: Int): Matcher<View> = 13 16 object : BoundedMatcher<View, CardView>(CardView::class.java) { ··· 23 26 } 24 27 25 28 fun withTag(tagValueMatcher: Int): Matcher<View> = 26 - withTagValue(equalTo(tagValueMatcher)) 29 + withTagValue(equalTo(tagValueMatcher)) 30 + 31 + fun isToast(): Matcher<Root> { 32 + return object : TypeSafeMatcher<Root>() { 33 + override fun matchesSafely(item: Root): Boolean { 34 + val type: Int = item.windowLayoutParams.get().type 35 + return type == WindowManager.LayoutParams.TYPE_TOAST 36 + } 37 + 38 + override fun describeTo(description: Description) { 39 + description.appendText("is toast") 40 + } 41 + } 42 + }
+4 -1
app/src/androidTest/java/com/example/util/simpletimetracker/utils/ViewInteractions.kt
··· 60 60 onView(withId(id)).perform(scrollToPosition<BaseRecyclerViewHolder>(position)) 61 61 62 62 fun scrollRecyclerToView(id: Int, matcher: Matcher<View>): ViewInteraction = 63 - onView(withId(id)).perform(scrollTo<BaseRecyclerViewHolder>(matcher)) 63 + onView(withId(id)).perform(scrollTo<BaseRecyclerViewHolder>(matcher)) 64 + 65 + fun toastTextShowing(textId: Int): ViewInteraction = 66 + onView(withText(textId)).inRoot(isToast()).check(matches(isDisplayed()))
+5
feature_change_record_type/src/main/java/com/example/util/simpletimetracker/feature_change_record_type/viewModel/ChangeRecordTypeViewModel.kt
··· 138 138 } 139 139 140 140 fun onSaveClick() { 141 + if (newName.isEmpty()) { 142 + resourceRepo.getString(R.string.change_record_message_choose_name) 143 + .let(router::showSystemMessage) 144 + return 145 + } 141 146 (saveButtonEnabled as MutableLiveData).value = false 142 147 viewModelScope.launch { 143 148 RecordType(
+1
feature_change_record_type/src/main/res/values/strings.xml
··· 5 5 <string name="change_record_type_color_hint">Color</string> 6 6 <string name="change_record_type_icon_hint">Icon</string> 7 7 <string name="change_record_type_save">Save</string> 8 + <string name="change_record_message_choose_name">Choose a name</string> 8 9 </resources>