package Ġcom . review . relic Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . widget . Nested ScrollView Ċ import Ġandroidx . test . espress o . Esp ress o . on View Ċ import Ġandroidx . test . espress o . Ui Controller Ċ import Ġandroidx . test . espress o . View Action Ċ import Ġandroidx . test . espress o . action . Scroll ToAction Ċ 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 . contrib . RecyclerView Actions . action On Item At Position Ċ import Ġandroidx . test . espress o . matcher . View Matchers .* Ċ import Ġandroidx . test . ext . junit . rules . Activity Scenario Rule Ċ import Ġcom . review . relic . adapter . Data Bound ViewHolder Ċ import Ġcom . review . relic . databinding . Review Item Layout Binding Ċ import Ġcom . review . relic . ui . Review Rel ic Bottom Sheet Ċ import Ġcom . review . relic . ui . Review Rel ic Bottom Sheet Inputs Ċ import Ġcom . review . relic . ui . Test Activity Ċ import Ġcom . review . relic . utils . ImageType Ċ import Ġcom . review . relic . utils . Review Rel ic Image Ċ import Ġorg . hamcrest . Core Matchers . not Ċ import Ġorg . hamcrest . Matcher Ċ import Ġorg . hamcrest . Matchers Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test ĊĊ Ċ class ĠReview Rel ic Bottom Sheet Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġactivity Test Rule Ġ= ĠActivity Scenario Rule ( Test Activity :: class . java ) ĊĊĠĠĠ Ġprivate Ġval Ġthank You Message Ġ= Ġ"" Ġ// TODO : /* Test ĠThank Ġyou Ġmessage */ ĊĠĠĠ Ġprivate Ġval Ġtransaction Id Ġ= Ġ"" Ġ// TODO : /* Test ĠTransaction ĠId */ ĊĊĠĠĠ Ġprivate Ġval Ġreview Rel ic Bottom Sheet Inputs Ġ= ĠReview Rel ic Bottom Sheet Inputs ( ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Test ĠTitle ", Ġ// TODO : Ġ/* Test Ġtitle */ ĊĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġ" Test ĠSub title Ġgoes Ġhere ", Ġ// TODO : Ġ/* Test Ġsubtitle */ ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠReview Rel ic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set SecretKey ("") Ġ// TODO : /* ĠSecret Ġkey Ġobtained Ġfrom Ġadmin Ġpanel Ġof Ġreview Ġre lic Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Token ("") Ġ// TODO : /* ĠToken Ġobtained Ġfrom Ġadmin Ġpanel Ġof Ġreview Ġre lic Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Merchant Id ("") Ġ// TODO : /* ĠMer chant ĠId Ġobtained Ġfrom Ġadmin Ġpanel Ġof Ġreview Ġre lic Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable Logging ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Initialize Listener ( object Ġ: ĠReview Rel ic On Initialized Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Initialization Complete ( is Successful : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Successful ) Ġlaunch Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlaunch Fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Test Rule . scenario . on Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReview Rel ic . show Sheet ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Id Ġ= Ġtransaction Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthank You Message Ġ= Ġthank You Message , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreview Rel ic Bottom Sheet Inputs Ġ= Ġreview Rel ic Bottom Sheet Inputs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager Ġ= Ġit . support FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Submit Without Review Select () Ġ{ ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġtest RecyclerView And Texts () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Review Rel ic . review Rel ic Settings ?. settings ?. should Show Images Ġ== Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView Matcher ( R . id . re cyclerView Items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. at Position On View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 .. ( Review Rel ic . review Rel ic Settings ?. review Settings ?. count () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ 0 )). random (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . imageView Review ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( with Effective Visibility ( Visibility . VISIBLE ))) ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView Matcher ( R . id . re cyclerView Items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. at Position On View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 .. ( Review Rel ic . review Rel ic Settings ?. review Settings ?. count () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ 0 )). random (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . textView Item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( with Effective Visibility ( Visibility . VISIBLE ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . edit Text Review )). perform ( better Scroll To (), Ġtype Text (" Some ĠText ")) ĊĠĠĠĠĠĠĠ Ġon View ( is Root ()). perform ( close Soft Keyboard ()) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . iv Arrow Down )). check ( matches ( with Effective Visibility ( Visibility . GONE ))) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . button Submit Review )). perform ( better Scroll To (), Ġclick ()) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . button Submit Review )). check ( matches ( not ( isEnabled ()))) ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 2 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Submit With Review Select () Ġ{ ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġtest RecyclerView And Texts () ĊĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . re cyclerView Items )). perform ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction On Item At Position < Data Bound ViewHolder < Review Item Layout Binding >>( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 .. ( Review Rel ic . review Rel ic Settings ?. review Settings ?. count () Ġ?: Ġ 0 )). random (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView Item Click Action . click Child View With Id ( R . id . textView Item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . edit Text Review )). perform ( better Scroll To (), Ġtype Text (" Some ĠText ")) ĊĠĠĠĠĠĠĠ Ġon View ( is Root ()). perform ( close Soft Keyboard ()) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . button Submit Review )). perform ( better Scroll To (), Ġclick ()) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . button Submit Review )). check ( matches ( isEnabled ())) ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 3 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . group Thank You )). check ( matches ( with Effective Visibility ( Visibility . VISIBLE ))) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . textView Thank You )). check ( matches ( with Text ( th ank You Message ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest RecyclerView And Texts () Ġ{ ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . re cyclerView Items )). check ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView ItemCount Assertion ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReview Rel ic . review Rel ic Settings ?. review Settings ?. count () Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreview Rel ic Bottom Sheet Inputs . title ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . textView Title )). check ( matches ( with Text ( it ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġon View ( with Id ( R . id . textView Title )). check ( matches ( with Text ( Review Rel ic . review Rel ic Settings ?. name ))) ĊĊĠĠĠĠĠĠĠ Ġreview Rel ic Bottom Sheet Inputs . subtitle ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . textView Sub Title )). check ( matches ( with Text ( it ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġscroll - to Ġaction Ġthat Ġalso Ġworks Ġwith ĠNested Scroll Views ĊĠĠĠ Ġclass ĠBetter Scroll ToAction Ġ: ĠView Action Ġby ĠScroll ToAction () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetDescription (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" Not Ġyet Ġimplemented " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Constraints (): ĠMatcher < View > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMatch ers . all Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Effective Visibility ( Visibility . VISIBLE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Desc endant Of A ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMatch ers . any Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis AssignableFrom ( Nested ScrollView :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġconvenience Ġmethod ĊĠĠĠ Ġprivate Ġfun Ġbetter Scroll To (): ĠView Action Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġaction With Assertions ( Better Scroll ToAction ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠRecyclerView Item Click Action Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġclick Child View With Id ( id : ĠInt ): ĠView Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠView Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Constraints (): ĠMatcher < View >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetDescription (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" Click Ġon Ġa Ġchild Ġview Ġwith Ġspecified Ġid ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġperform ( ui Controller : ĠUi Controller ?, Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġview . findViewById < View >( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . perform Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }