package Ġch . y vu . test store . common Ċ Ċ import Ġch . y vu . test store . run . Run Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito .` when ` Ċ import Ġorg . mockito . Mockito . verify Ċ import Ġorg . mockito . Mockito Annotations . init Mocks Ċ import Ġjava . util .* Ċ import Ġjava . util . UUID . randomUUID Ċ Ċ class ĠMax Rows Result Fetcher Test Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠSimple Query (" SELECT Ġfoo ") ĊĠĠĠĠĠĠĠ Ġval Ġrun Ġ= ĠRun ( randomUUID (), Ġrandom UUID (), Ġ" abc - 1 2 3 ", ĠDate ( 1 )) ĊĠĠĠĠĠĠĠ Ġval Ġrun 2 Ġ= ĠRun ( randomUUID (), Ġrandom UUID (), Ġ" abc - 1 2 4 ", ĠDate ( 2 )) ĊĠĠĠĠĠĠĠ Ġval Ġrun 3 Ġ= ĠRun ( randomUUID (), Ġrandom UUID (), Ġ" abc - 1 2 5 ", ĠDate ( 3 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġpage d Result Fetcher : ĠP aged Result Fetcher < Run > ĊĊĠĠĠ Ġlateinit Ġvar Ġmax Rows Result Fetcher : ĠMax Rows Result Fetcher < Run > ĊĊĠĠĠ Ġ@ Before Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Mocks ( this ) ĊĠĠĠĠĠĠĠ Ġmax Rows Result Fetcher Ġ= ĠMax Rows Result Fetcher ( page d Result Fetcher ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġf etches At Least One Page With Correct Fetch Size From Page Fetcher () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax Rows Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= ĠPage ( listOf ( run ), Ġnull ) ĊĠĠĠĠĠĠĠ Ġ` when `( page d Result Fetcher . fetch ( query , Ġnull , Ġmax Rows )). thenReturn ( page ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmax Rows Result Fetcher . fetch ( query , Ġmax Rows ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( run ), Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġf etches Next Page Correct ly IfNot En ough Results F etched () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax Rows Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġnext Page Ġ= Ġ" 1 2 3 4 " ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= ĠPage ( listOf ( run ), Ġnext Page ) ĊĠĠĠĠĠĠĠ Ġ` when `( page d Result Fetcher . fetch ( query , Ġnull , Ġmax Rows )). thenReturn ( page ) ĊĠĠĠĠĠĠĠ Ġ` when `( page d Result Fetcher . fetch ( query , Ġnext Page , Ġ 1 )). thenReturn ( page ) ĊĊĠĠĠĠĠĠĠ Ġmax Rows Result Fetcher . fetch ( query , Ġmax Rows ) ĊĊĠĠĠĠĠĠĠ Ġverify ( page d Result Fetcher ). fetch ( query , Ġnull , Ġmax Rows ) ĊĠĠĠĠĠĠĠ Ġverify ( page d Result Fetcher ). fetch ( query , Ġnext Page , Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġconcaten ates Results Of Multiple Pages Correct ly () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax Rows Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġnext Page Ġ= Ġ" 1 2 3 4 " ĊĠĠĠĠĠĠĠ Ġval Ġpage 1 Ġ= ĠPage ( listOf ( run ), Ġnext Page ) ĊĠĠĠĠĠĠĠ Ġval Ġpage 2 Ġ= ĠPage ( listOf ( run 2 ), Ġnext Page ) ĊĠĠĠĠĠĠĠ Ġ` when `( page d Result Fetcher . fetch ( query , Ġnull , Ġmax Rows )). thenReturn ( page 1 ) ĊĠĠĠĠĠĠĠ Ġ` when `( page d Result Fetcher . fetch ( query , Ġnext Page , Ġ 1 )). thenReturn ( page 2 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmax Rows Result Fetcher . fetch ( query , Ġmax Rows ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( run , Ġrun 2 ), Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġf etches 3 Pages Correct ly () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax Rows Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġval Ġnext Page 1 Ġ= Ġ" 1 2 3 4 " ĊĠĠĠĠĠĠĠ Ġval Ġnext Page 2 Ġ= Ġ" 5 6 7 8 " ĊĠĠĠĠĠĠĠ Ġval Ġpage 1 Ġ= ĠPage ( listOf ( run ), Ġnext Page 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġpage 2 Ġ= ĠPage ( listOf ( run 2 ), Ġnext Page 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġpage 3 Ġ= ĠPage ( listOf ( run 3 ), Ġnull ) ĊĠĠĠĠĠĠĠ Ġ` when `( page d Result Fetcher . fetch ( query , Ġnull , Ġ 3 )). thenReturn ( page 1 ) ĊĠĠĠĠĠĠĠ Ġ` when `( page d Result Fetcher . fetch ( query , Ġnext Page 1 , Ġ 2 )). thenReturn ( page 2 ) ĊĠĠĠĠĠĠĠ Ġ` when `( page d Result Fetcher . fetch ( query , Ġnext Page 2 , Ġ 1 )). thenReturn ( page 3 ) ĊĊĠĠĠĠĠĠĠ Ġmax Rows Result Fetcher . fetch ( query , Ġmax Rows ) ĊĊĠĠĠĠĠĠĠ Ġverify ( page d Result Fetcher ). fetch ( query , Ġnull , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġverify ( page d Result Fetcher ). fetch ( query , Ġnext Page 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġverify ( page d Result Fetcher ). fetch ( query , Ġnext Page 2 , Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġreturns Only First Max Rows If Page Has More Rows () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax Rows Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= ĠPage ( listOf ( run , Ġrun 2 ), Ġnull ) ĊĠĠĠĠĠĠĠ Ġ` when `( page d Result Fetcher . fetch ( query , Ġnull , Ġmax Rows )). thenReturn ( page ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmax Rows Result Fetcher . fetch ( query , Ġmax Rows ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( run ), Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġreturns All Rows If Database Has LessThan Max Rows () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax Rows Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= ĠPage ( listOf ( run ), Ġnull ) ĊĠĠĠĠĠĠĠ Ġ` when `( page d Result Fetcher . fetch ( query , Ġnull , Ġmax Rows )). thenReturn ( page ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmax Rows Result Fetcher . fetch ( query , Ġmax Rows ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( run ), Ġresult ) ĊĠĠĠ Ġ} Ċ }