@@ -5,7 +5,11 @@ import androidx.test.espresso.Espresso.onView
55import androidx.test.espresso.Espresso.pressBack
66import androidx.test.espresso.ViewAssertion
77import androidx.test.espresso.assertion.PositionAssertions.isCompletelyAbove
8+ import androidx.test.espresso.assertion.PositionAssertions.isCompletelyBelow
89import androidx.test.espresso.assertion.PositionAssertions.isCompletelyLeftOf
10+ import androidx.test.espresso.assertion.PositionAssertions.isCompletelyRightOf
11+ import androidx.test.espresso.assertion.PositionAssertions.isLeftAlignedWith
12+ import androidx.test.espresso.assertion.PositionAssertions.isTopAlignedWith
913import androidx.test.espresso.assertion.ViewAssertions.matches
1014import androidx.test.espresso.matcher.ViewMatchers
1115import androidx.test.espresso.matcher.ViewMatchers.hasDescendant
@@ -17,6 +21,7 @@ import androidx.test.espresso.matcher.ViewMatchers.withId
1721import androidx.test.espresso.matcher.ViewMatchers.withSubstring
1822import androidx.test.espresso.matcher.ViewMatchers.withText
1923import androidx.test.ext.junit.runners.AndroidJUnit4
24+ import androidx.test.platform.app.InstrumentationRegistry
2025import com.example.util.simpletimetracker.core.extension.setWeekToFirstDay
2126import com.example.util.simpletimetracker.core.mapper.ColorMapper
2227import com.example.util.simpletimetracker.domain.model.DayOfWeek
@@ -384,6 +389,49 @@ class SettingsTest : BaseUiTest() {
384389 check(name3, name1) { matcher -> isCompletelyLeftOf(matcher) }
385390 }
386391
392+ @Test
393+ fun cardOrderManual2 () {
394+ val name = " Test"
395+
396+ // Add activities
397+ (1 .. 15 ).forEach {
398+ testUtils.addActivity(" $name$it " )
399+ }
400+
401+ // Change settings
402+ NavUtils .openSettingsScreen()
403+ NavUtils .openCardSizeScreen()
404+ Thread .sleep(1000 )
405+ clickOnViewWithText(" 4" )
406+ pressBack()
407+ clickOnSpinnerWithId(R .id.spinnerSettingsRecordTypeSort)
408+ clickOnViewWithText(R .string.settings_sort_by_color)
409+ clickOnSpinnerWithId(R .id.spinnerSettingsRecordTypeSort)
410+ clickOnViewWithText(R .string.settings_sort_manually)
411+ Thread .sleep(1000 )
412+
413+ val resources = InstrumentationRegistry .getInstrumentation().targetContext.resources
414+ val screenWidth = resources.displayMetrics.widthPixels
415+ val screenHeight = resources.displayMetrics.heightPixels
416+
417+ // Drag
418+ (1 .. 15 ).forEach {
419+ onView(allOf(isDescendantOfA(withId(R .id.viewRecordTypeItem)), withText(" $name$it " )))
420+ .perform(
421+ drag(Direction .RIGHT , screenWidth),
422+ drag(Direction .DOWN , screenHeight),
423+ )
424+ }
425+
426+ // Check order in settings
427+ checkManualOrder(name)
428+
429+ // Check order on main
430+ pressBack()
431+ NavUtils .openRunningRecordsScreen()
432+ checkManualOrder(name)
433+ }
434+
387435 @Test
388436 fun enableNotifications () {
389437 val name1 = " Test1"
@@ -756,4 +804,65 @@ class SettingsTest : BaseUiTest() {
756804 matcher(allOf(isDescendantOfA(withId(R .id.viewRecordTypeItem)), withText(second)))
757805 )
758806 }
807+
808+ private fun checkManualOrder (name : String ) {
809+ check(name + 2 , name + 1 ) { matcher ->
810+ isCompletelyRightOf(matcher)
811+ isTopAlignedWith(matcher)
812+ }
813+ check(name + 3 , name + 2 ) { matcher ->
814+ isCompletelyRightOf(matcher)
815+ isTopAlignedWith(matcher)
816+ }
817+ check(name + 4 , name + 3 ) { matcher ->
818+ isCompletelyRightOf(matcher)
819+ isTopAlignedWith(matcher)
820+ }
821+
822+ check(name + 5 , name + 1 ) { matcher ->
823+ isCompletelyBelow(matcher)
824+ isLeftAlignedWith(matcher)
825+ }
826+ check(name + 6 , name + 5 ) { matcher ->
827+ isCompletelyRightOf(matcher)
828+ isTopAlignedWith(matcher)
829+ }
830+ check(name + 7 , name + 6 ) { matcher ->
831+ isCompletelyRightOf(matcher)
832+ isTopAlignedWith(matcher)
833+ }
834+ check(name + 8 , name + 7 ) { matcher ->
835+ isCompletelyRightOf(matcher)
836+ isTopAlignedWith(matcher)
837+ }
838+
839+ check(name + 9 , name + 5 ) { matcher ->
840+ isCompletelyBelow(matcher)
841+ isLeftAlignedWith(matcher)
842+ }
843+ check(name + 10 , name + 9 ) { matcher ->
844+ isCompletelyRightOf(matcher)
845+ isTopAlignedWith(matcher)
846+ }
847+ check(name + 11 , name + 10 ) { matcher ->
848+ isCompletelyRightOf(matcher)
849+ isTopAlignedWith(matcher)
850+ }
851+ check(name + 12 , name + 11 ) { matcher ->
852+ isCompletelyRightOf(matcher)
853+ isTopAlignedWith(matcher)
854+ }
855+
856+ check(name + 13 , name + 9 ) { matcher ->
857+ isCompletelyBelow(matcher)
858+ }
859+ check(name + 14 , name + 13 ) { matcher ->
860+ isCompletelyRightOf(matcher)
861+ isTopAlignedWith(matcher)
862+ }
863+ check(name + 15 , name + 14 ) { matcher ->
864+ isCompletelyRightOf(matcher)
865+ isTopAlignedWith(matcher)
866+ }
867+ }
759868}
0 commit comments