package Ġcom . mv vm clean . trend ing repos Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . view . View Ċ import Ġandroidx . test . espress o . Esp ress o . on View Ċ import Ġandroidx . test . espress o . Esp ress o . open ActionBar Overflow Or Options Menu Ċ import Ġandroidx . test . espress o . Ui Controller Ċ import Ġandroidx . test . espress o . View Action Ċ import Ġandroidx . test . espress o . action . View Actions .* Ċ import Ġandroidx . test . espress o . assertion . View Assertions . matches Ċ import Ġandroidx . test . espress o . contrib . RecyclerView Actions Ċ import Ġandroidx . test . espress o . intent . rule . Intent s Test Rule Ċ import Ġandroidx . test . espress o . matcher . View Matchers .* Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġandroidx . test . rule . Activity Test Rule Ċ import Ġcom . mv vm clean . trend ing repos . features . trend ing repo . Trend ing Repo Search Activity Ċ import Ġcom . mv vm clean . trend ing repos . features . trend ing repo . Trend ing Repo SearchResult Adapter Ċ import Ġcom . mv vm clean . trend ing repos . helpers . Recycler Child View Ċ import Ġorg . hamcrest . Matcher Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith ĊĊ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ internal Ġclass ĠT rend ing Repo Search Activity IntegrationTest Ġ: ĠBaseTest () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Context : ĠContext ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġvar Ġactivity Rule : ĠActivity Test Rule < Trend ing Repo Search Activity > Ġ= ĊĠĠĠĠĠĠĠ ĠActivity Test Rule ( Trend ing Repo Search Activity :: class . java , Ġfalse , Ġfalse ) ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġintent s Test Rule Ġ= ĠInt ents Test Rule ( Trend ing Repo Search Activity :: class . java ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġoverride Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setup () ĊĠĠĠĠĠĠĠ Ġapp Context Ġ= ĠInstrument ation Registry . get Instrumentation (). target Context ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġactivity Rule . launch Activity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġuse AppContext () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠContext Ġof Ġthe Ġapp Ġunder Ġtest . ĊĠĠĠĠĠĠĠ Ġval Ġapp Context Ġ= ĠInstrument ation Registry . get Instrumentation (). target Context ĊĠĠĠĠĠĠĠ ĠassertEquals (" com . mv vm clean . trend ing repos ", Ġapp Context . packageName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck Toolbar Title () Ġ{ ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . toolbar Title )). check ( matches ( with Text ( R . string . title _ trend ing ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġperform Repo Item Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġclick Repo Item ( 0 ) ĊĠĠĠĠĠĠĠ Ġsleep () ĊĠĠĠĠĠĠĠ Ġclick Repo Item ( 1 ) ĊĠĠĠĠĠĠĠ Ġsleep () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġperform Repo Item L onClick () Ġ{ ĊĠĠĠĠĠĠĠ Ġclick Repo Item ( 0 , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġsleep () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġperform Scrolling () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFirst , Ġscroll Ġto Ġthe Ġview Ġholder Ġusing Ġthe ĠisIn The Middle () Ġmatcher . ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . rv Repository )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView Actions . scrollTo Position < Trend ing Repo SearchResult Adapter . Trend ing Repo ViewHolder >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsleep () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclick Repo Item ( position : ĠInt , Ġis Long Click : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . rv Repository )). perform ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView Actions . action On Item At Position < Trend ing Repo SearchResult Adapter . Trend ing Repo ViewHolder >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRe cycler Child View . click Child View With Id ( R . id . container Trend ing Repo , Ġis Long Click ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsort Repositories ByName () Ġ{ ĊĠĠĠĠĠĠĠ Ġopen ActionBar Overflow Or Options Menu ( app Context ) ĊĠĠĠĠĠĠĠ Ġon View ( with Text ( R . string . label _ sort _ by _ name )). perform ( click ()) ĊĠĠĠĠĠĠĠ Ġsleep () ĊĠĠĠĠĠĠĠ Ġclick Repo Item ( 0 ) ĊĠĠĠĠĠĠĠ Ġsleep () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsort Repositories By St ars () Ġ{ ĊĠĠĠĠĠĠĠ Ġopen ActionBar Overflow Or Options Menu ( app Context ) ĊĠĠĠĠĠĠĠ Ġon View ( with Text ( R . string . label _ sort _ by _ stars )). perform ( click ()) ĊĠĠĠĠĠĠĠ Ġsleep () ĊĠĠĠĠĠĠĠ Ġclick Repo Item ( 0 ) ĊĠĠĠĠĠĠĠ Ġsleep () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Display RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . rv Repository )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( with Child ( is Displayed ()))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Display Error View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsleep () ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . v In visible )). perform ( click ()) ĊĠĠĠĠĠĠĠ Ġsleep () ĊĠĠĠĠĠĠĠ Ġ// H ides Ġalert Ġdialog ĊĠĠĠĠĠĠĠ Ġon View ( with Text ( app Context . getString ( R . string . error _ offline _ test _ scenario ))). perform ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpress Back () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . swipe Repo Refresh )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( with Custom Constraints ( swipe Down (), Ġis Display ing At Least ( 8 5 ))) ĊĠĠĠĠĠĠĠ Ġsleep () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġforce Refresh Repositories () Ġ{ ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . swipe Repo Refresh )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( with Custom Constraints ( swipe Down (), Ġis Display ing At Least ( 8 5 ))) ĊĠĠĠĠĠĠĠ Ġsleep () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwith Custom Constraints ( ĊĠĠĠĠĠĠĠ Ġaction : ĠView Action , Ġconstraints : ĠMatcher < View ?> ? ĊĠĠĠ Ġ): ĠView Action Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠView Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Constraints (): ĠMatcher < View ?> ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġconstraints ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetDescription (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaction . description ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġperform ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Controller : ĠUi Controller ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠView ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . perform ( ui Controller , Ġview ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġoverride Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . te ar Down () ĊĠĠĠĠĠĠĠ Ġactivity Rule . finish Activity () ĊĠĠĠ Ġ} Ċ Ċ }