Skip to content

Commit

Permalink
adding tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Razeeman committed May 21, 2023
1 parent 1c865bb commit 2b8d51d
Show file tree
Hide file tree
Showing 4 changed files with 419 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ class RecordActionsDuplicateTest : BaseUiTest() {
val calendar = Calendar.getInstance()

// Setup
testUtils.addActivity(name)
testUtils.addActivity(name = name, color = firstColor, icon = firstIcon)
runBlocking { prefsInteractor.setShowUntrackedInRecords(true) }
NavUtils.openRecordsScreen()

Expand Down Expand Up @@ -207,7 +207,7 @@ class RecordActionsDuplicateTest : BaseUiTest() {
val calendar = Calendar.getInstance()

// Setup
testUtils.addActivity(name)
testUtils.addActivity(name = name, color = firstColor, icon = firstIcon)
NavUtils.openRecordsScreen()

val current = calendar.timeInMillis
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
package com.example.util.simpletimetracker

import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.Espresso.pressBack
import androidx.test.espresso.contrib.PickerActions.setTime
import androidx.test.espresso.matcher.ViewMatchers.hasDescendant
import androidx.test.espresso.matcher.ViewMatchers.hasSibling
import androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed
import androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA
import androidx.test.espresso.matcher.ViewMatchers.withClassName
import androidx.test.espresso.matcher.ViewMatchers.withId
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.feature_dialogs.R
import com.example.util.simpletimetracker.feature_dialogs.dateTime.CustomTimePicker
import com.example.util.simpletimetracker.utils.BaseUiTest
import com.example.util.simpletimetracker.utils.NavUtils
import com.example.util.simpletimetracker.utils.checkViewIsDisplayed
Expand All @@ -20,7 +25,10 @@ import com.example.util.simpletimetracker.utils.tryAction
import com.example.util.simpletimetracker.utils.typeTextIntoView
import com.example.util.simpletimetracker.utils.withPluralText
import dagger.hilt.android.testing.HiltAndroidTest
import java.util.Calendar
import java.util.concurrent.TimeUnit
import org.hamcrest.CoreMatchers.allOf
import org.hamcrest.CoreMatchers.equalTo
import org.junit.Test
import org.junit.runner.RunWith
import com.example.util.simpletimetracker.core.R as coreR
Expand Down Expand Up @@ -433,6 +441,335 @@ class RecordsFilterTest : BaseUiTest() {
clickOnView(withText("$name1 - $tag1"))
pressBack()
checkRecordsCard(2)

// Invert selection
clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.records_filter_manually_filtered)))
clickOnViewWithText(coreR.string.records_filter_invert_selection)
pressBack()
checkRecordsCard(1)
}

@Test
fun dayOfWeek() {
val name1 = "TypeName1"
val calendar: Calendar = Calendar.getInstance()
val timeStarted = calendar.apply {
set(2023, 4, 8, 15, 0)
}.timeInMillis
val timeEnded = timeStarted + TimeUnit.HOURS.toMillis(1)

// Add data
testUtils.addActivity(name1)
// Monday
repeat(1) {
testUtils.addRecord(
typeName = name1,
timeStarted = timeStarted,
timeEnded = timeEnded,
)
}
// Tuesday
repeat(2) {
testUtils.addRecord(
typeName = name1,
timeStarted = timeStarted + TimeUnit.DAYS.toMillis(1),
timeEnded = timeEnded + TimeUnit.DAYS.toMillis(1),
)
}
// Wednesday
repeat(3) {
testUtils.addRecord(
typeName = name1,
timeStarted = timeStarted + TimeUnit.DAYS.toMillis(2),
timeEnded = timeEnded + TimeUnit.DAYS.toMillis(2),
)
}
// Thursday
repeat(4) {
testUtils.addRecord(
typeName = name1,
timeStarted = timeStarted + TimeUnit.DAYS.toMillis(3),
timeEnded = timeEnded + TimeUnit.DAYS.toMillis(3),
)
}
// Friday
repeat(5) {
testUtils.addRecord(
typeName = name1,
timeStarted = timeStarted + TimeUnit.DAYS.toMillis(4),
timeEnded = timeEnded + TimeUnit.DAYS.toMillis(4),
)
}
// Saturday
repeat(6) {
testUtils.addRecord(
typeName = name1,
timeStarted = timeStarted + TimeUnit.DAYS.toMillis(5),
timeEnded = timeEnded + TimeUnit.DAYS.toMillis(5),
)
}
// Saturday
repeat(7) {
testUtils.addRecord(
typeName = name1,
timeStarted = timeStarted + TimeUnit.DAYS.toMillis(6),
timeEnded = timeEnded + TimeUnit.DAYS.toMillis(6),
)
}

// Check
NavUtils.openStatisticsScreen()
clickOnView(allOf(withText(coreR.string.title_today), isCompletelyDisplayed()))
clickOnViewWithText(coreR.string.range_overall)
tryAction { clickOnView(allOf(withText(name1), isCompletelyDisplayed())) }
clickOnViewWithText(coreR.string.title_today)
clickOnViewWithText(coreR.string.range_overall)
checkRecordsCard(28)

clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.range_day)))
clickOnViewWithText(coreR.string.day_of_week_monday)
pressBack()
checkRecordsCard(1)

clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.range_day)))
clickOnViewWithText(coreR.string.day_of_week_monday)
clickOnViewWithText(coreR.string.day_of_week_tuesday)
pressBack()
checkRecordsCard(2)

clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.range_day)))
clickOnViewWithText(coreR.string.day_of_week_tuesday)
clickOnViewWithText(coreR.string.day_of_week_wednesday)
pressBack()
checkRecordsCard(3)

clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.range_day)))
clickOnViewWithText(coreR.string.day_of_week_wednesday)
clickOnViewWithText(coreR.string.day_of_week_thursday)
pressBack()
checkRecordsCard(4)

clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.range_day)))
clickOnViewWithText(coreR.string.day_of_week_thursday)
clickOnViewWithText(coreR.string.day_of_week_friday)
pressBack()
checkRecordsCard(5)

clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.range_day)))
clickOnViewWithText(coreR.string.day_of_week_friday)
clickOnViewWithText(coreR.string.day_of_week_saturday)
pressBack()
checkRecordsCard(6)

clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.range_day)))
clickOnViewWithText(coreR.string.day_of_week_saturday)
clickOnViewWithText(coreR.string.day_of_week_sunday)
pressBack()
checkRecordsCard(7)

clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.range_day)))
clickOnViewWithText(coreR.string.day_of_week_saturday)
pressBack()
checkRecordsCard(13)
}

@Test
fun duration() {
val name1 = "TypeName1"
val calendar: Calendar = Calendar.getInstance()

// Add data
testUtils.addActivity(name1)
testUtils.addRecord(
typeName = name1,
timeStarted = calendar.timeInMillis,
timeEnded = calendar.timeInMillis + TimeUnit.MINUTES.toMillis(30),
)
testUtils.addRecord(
typeName = name1,
timeStarted = calendar.timeInMillis,
timeEnded = calendar.timeInMillis + TimeUnit.MINUTES.toMillis(80),
)
testUtils.addRecord(
typeName = name1,
timeStarted = calendar.timeInMillis,
timeEnded = calendar.timeInMillis + TimeUnit.MINUTES.toMillis(100),
)

// Check
NavUtils.openStatisticsScreen()
tryAction { clickOnView(allOf(withText(name1), isCompletelyDisplayed())) }
checkRecordsCard(3)

// 0s - 1h
clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.records_all_sort_duration)))
clickOnViewWithId(recordsFilterR.id.fieldRecordsFilterRangeTimeEnded)
repeat(6) { clickOnViewWithId(R.id.ivDurationPickerDelete) }
clickOnViewWithId(R.id.tvNumberKeyboard1)
repeat(4) { clickOnViewWithId(R.id.tvNumberKeyboard0) }
clickOnViewWithText(coreR.string.duration_dialog_save)
pressBack()
checkRecordsCard(1)

// 1h - 2h
clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.records_all_sort_duration)))
clickOnViewWithId(recordsFilterR.id.fieldRecordsFilterRangeTimeStarted)
clickOnViewWithId(R.id.tvNumberKeyboard1)
repeat(4) { clickOnViewWithId(R.id.tvNumberKeyboard0) }
clickOnViewWithText(coreR.string.duration_dialog_save)
clickOnViewWithId(recordsFilterR.id.fieldRecordsFilterRangeTimeEnded)
repeat(5) { clickOnViewWithId(R.id.ivDurationPickerDelete) }
clickOnViewWithId(R.id.tvNumberKeyboard2)
repeat(4) { clickOnViewWithId(R.id.tvNumberKeyboard0) }
clickOnViewWithText(coreR.string.duration_dialog_save)
pressBack()
checkRecordsCard(2)

// 0s - 2h
clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.records_all_sort_duration)))
clickOnViewWithId(recordsFilterR.id.fieldRecordsFilterRangeTimeStarted)
repeat(5) { clickOnViewWithId(R.id.ivDurationPickerDelete) }
clickOnViewWithText(coreR.string.duration_dialog_save)
pressBack()
checkRecordsCard(3)

// 0s - 10m
clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.records_all_sort_duration)))
clickOnViewWithId(recordsFilterR.id.fieldRecordsFilterRangeTimeEnded)
repeat(5) { clickOnViewWithId(R.id.ivDurationPickerDelete) }
clickOnViewWithId(R.id.tvNumberKeyboard1)
repeat(3) { clickOnViewWithId(R.id.tvNumberKeyboard0) }
clickOnViewWithText(coreR.string.duration_dialog_save)
pressBack()
checkRecordsCard(0)
}

@Test
fun timeOfDay() {
val name1 = "TypeName1"
val calendar: Calendar = Calendar.getInstance().apply {
set(2023, 4, 21, 0, 0, 0)
}
val startOfDay = calendar.timeInMillis

// Add data
testUtils.addActivity(name1)
repeat(1) {
testUtils.addRecord(
typeName = name1,
timeStarted = startOfDay + TimeUnit.HOURS.toMillis(2),
timeEnded = startOfDay + TimeUnit.HOURS.toMillis(4),
)
}
repeat(2) {
testUtils.addRecord(
typeName = name1,
timeStarted = startOfDay + TimeUnit.HOURS.toMillis(8),
timeEnded = startOfDay + TimeUnit.HOURS.toMillis(10),
)
}
repeat(3) {
testUtils.addRecord(
typeName = name1,
timeStarted = startOfDay + TimeUnit.HOURS.toMillis(14),
timeEnded = startOfDay + TimeUnit.HOURS.toMillis(16),
)
}
repeat(4) {
testUtils.addRecord(
typeName = name1,
timeStarted = startOfDay + TimeUnit.HOURS.toMillis(20),
timeEnded = startOfDay + TimeUnit.HOURS.toMillis(22),
)
}

// Check
NavUtils.openStatisticsScreen()
clickOnView(allOf(withText(coreR.string.title_today), isCompletelyDisplayed()))
clickOnViewWithText(coreR.string.range_overall)
tryAction { clickOnView(allOf(withText(name1), isCompletelyDisplayed())) }
clickOnViewWithText(coreR.string.title_today)
clickOnViewWithText(coreR.string.range_overall)
checkRecordsCard(10)

// 0h - 1h
clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.date_time_dialog_time)))
clickOnViewWithId(recordsFilterR.id.fieldRecordsFilterRangeTimeEnded)
onView(withClassName(equalTo(CustomTimePicker::class.java.name))).perform(setTime(1, 0))
clickOnViewWithId(R.id.btnDateTimeDialogPositive)
pressBack()
checkRecordsCard(0)

// 0h - 6h
clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.date_time_dialog_time)))
clickOnViewWithId(recordsFilterR.id.fieldRecordsFilterRangeTimeEnded)
onView(withClassName(equalTo(CustomTimePicker::class.java.name))).perform(setTime(6, 0))
clickOnViewWithId(R.id.btnDateTimeDialogPositive)
pressBack()
checkRecordsCard(1)

// 0h - 12h
clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.date_time_dialog_time)))
clickOnViewWithId(recordsFilterR.id.fieldRecordsFilterRangeTimeEnded)
onView(withClassName(equalTo(CustomTimePicker::class.java.name))).perform(setTime(12, 0))
clickOnViewWithId(R.id.btnDateTimeDialogPositive)
pressBack()
checkRecordsCard(3)

// 0h - 18h
clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.date_time_dialog_time)))
clickOnViewWithId(recordsFilterR.id.fieldRecordsFilterRangeTimeEnded)
onView(withClassName(equalTo(CustomTimePicker::class.java.name))).perform(setTime(18, 0))
clickOnViewWithId(R.id.btnDateTimeDialogPositive)
pressBack()
checkRecordsCard(6)

// 0h - 23h
clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.date_time_dialog_time)))
clickOnViewWithId(recordsFilterR.id.fieldRecordsFilterRangeTimeEnded)
onView(withClassName(equalTo(CustomTimePicker::class.java.name))).perform(setTime(23, 0))
clickOnViewWithId(R.id.btnDateTimeDialogPositive)
pressBack()
checkRecordsCard(10)

// 12h - 23h
clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.date_time_dialog_time)))
clickOnViewWithId(recordsFilterR.id.fieldRecordsFilterRangeTimeStarted)
onView(withClassName(equalTo(CustomTimePicker::class.java.name))).perform(setTime(12, 0))
clickOnViewWithId(R.id.btnDateTimeDialogPositive)
pressBack()
checkRecordsCard(7)

// 18h - 6h
clickOnViewWithId(statisticsDetailR.id.cardStatisticsDetailFilter)
clickOnView(withSubstring(getString(coreR.string.date_time_dialog_time)))
clickOnViewWithId(recordsFilterR.id.fieldRecordsFilterRangeTimeStarted)
onView(withClassName(equalTo(CustomTimePicker::class.java.name))).perform(setTime(18, 0))
clickOnViewWithId(R.id.btnDateTimeDialogPositive)
clickOnViewWithId(recordsFilterR.id.fieldRecordsFilterRangeTimeEnded)
onView(withClassName(equalTo(CustomTimePicker::class.java.name))).perform(setTime(6, 0))
clickOnViewWithId(R.id.btnDateTimeDialogPositive)
pressBack()
checkRecordsCard(5)
}

@Test
Expand Down
Loading

0 comments on commit 2b8d51d

Please sign in to comment.