package Ġj future dev . cin ema analytics . parser Ċ Ċ import Ġio . kot lint est . data . forall Ċ import Ġio . kot lint est . shouldBe Ċ import Ġio . kot lint est . specs . String Spec Ċ import Ġio . kot lint est . tables . row Ċ import Ġj future dev . cin ema analytics . Environment Ċ import Ġj future dev . cin ema analytics . domain . Country Ċ import Ġj future dev . cin ema analytics . domain . Film Ċ import Ġj future dev . cin ema analytics . domain . Genre Ċ import Ġj future dev . cin ema analytics . domain . Local Source Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . json . Json Configuration Ċ import Ġorg . js oup . J soup Ċ import Ġorg . js oup . nodes . Element Ċ import Ġorg . js oup . select . Elements Ċ import Ġjava . io . File Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġjava . time . Month Ċ Ċ private Ġval Ġtop Fil ms Ġ= Ġmap Of ( ĊĠĠĠ Ġ" Star ĠW ars : ĠThe ĠLast ĠJ edi " Ġto Ġ 6 2 0 _ 1 8 1 _ 3 8 2 L , ĊĠĠĠ Ġ" Be auty Ġand Ġthe ĠBe ast " Ġto Ġ 5 0 4 _ 0 1 4 _ 1 6 5 L , ĊĠĠĠ Ġ" W onder ĠW oman " Ġto Ġ 4 1 2 _ 5 6 3 _ 4 0 8 L , ĊĠĠĠ Ġ" J uman ji : ĠWelcome Ġto Ġthe ĠJun gle " Ġto Ġ 4 0 4 _ 5 1 5 _ 4 8 0 L , ĊĠĠĠ Ġ" Guard ians Ġof Ġthe ĠGalaxy ĠVol . Ġ 2 " Ġto Ġ 3 8 9 _ 8 1 3 _ 1 0 1 L , ĊĠĠĠ Ġ" Spider - Man : ĠHome coming " Ġto Ġ 3 3 4 _ 2 0 1 _ 1 4 0 L , ĊĠĠĠ Ġ" It " Ġto Ġ 3 2 7 _ 4 8 1 _ 7 4 8 L , ĊĠĠĠ Ġ" Th or : ĠR agn ar ok " Ġto Ġ 3 1 5 _ 0 5 8 _ 2 8 9 L , ĊĠĠĠ Ġ" Des pic able ĠMe Ġ 3 " Ġto Ġ 2 6 4 _ 6 2 4 _ 3 0 0 L , ĊĠĠĠ Ġ" Just ice ĠLeague " Ġto Ġ 2 2 9 _ 0 2 4 _ 2 9 5 L Ċ ) Ċ Ċ private Ġval Ġdata Path Ġ= ĠUSA Fil ms Parser Spec :: class . java . getResource ("/ data / usa - 2 0 1 7 . html "). path Ċ Ċ class ĠUSA Fil ms Parser Spec Ġ: ĠString Spec ({ ĊĠĠĠ Ġ" parse Ġlocal Ġfile " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfil ms Ġ= ĠUSA Fil ms Parser ( Json ( Json Configuration . Stable ), ĠEnvironment ()). parse ( Local Source ( 2 0 1 7 , Ġdata Path )) ĊĠĠĠĠĠĠĠ Ġfil ms . size ĠshouldBe Ġ 2 3 8 ĊĠĠĠĠĠĠĠ Ġfil ms [ 0 ] ĠshouldBe ĠFil m ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCountry . USA , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMonth . J AN U ARY , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Under world : ĠB lood ĠW ars ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" An na ĠF o er ster ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( Genre . ACTION , ĠGen re . H OR ROR ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfil ms [ fil ms . size Ġ- Ġ 1 ] ĠshouldBe ĠFil m ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCountry . USA , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMonth . DE CE MBER , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ph antom ĠThread ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Pa ul ĠThomas ĠAnd erson ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( Genre . DR AMA ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfil ms [ 9 4 ] ĠshouldBe ĠFil m ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCountry . USA , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMonth . MAY , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Everything , ĠEverything ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" St ella ĠMe gh ie ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( Genre . DR AMA , ĠGen re . ROM ANCE ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfil ms . sorted By Descending Ġ{ Ġit . g ross Ġ}. take ( 1 0 ). associate Ġ{ ĠPair ( it . title , Ġit . g ross ) Ġ} ĠshouldBe Ġtop Fil ms ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" parse Ġdirector " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠUSA Fil ms Parser ( Json ( Json Configuration . Stable ), ĠEnvironment ()) ĊĠĠĠĠĠĠĠ Ġforall ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" P ier re ĠMore l Ġ( director ); ĠCh ad ĠSt . ĠJohn Ġ( screen play ); ĠJ enn ifer ĠG arner , ĠJohn ĠO rt iz ", Ġ" P ier re ĠMore l "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sh ane ĠBlack Ġ( director / screen play ); ĠF red ĠDe kker Ġ( screen play ); ĠBo yd ĠHol bro ok , ĠT rev ante ĠR h odes ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sh ane ĠBlack " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y ann ĠDem ange Ġ( director ); ĠLog an ĠM iller , ĠSteve ĠK lo ves , ĠNo ah ĠM iller , ĠAnd y ĠWe iss Ġ( screen play ); ĠMat thew ĠMc Con aug hey ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y ann ĠDem ange " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y ann ĠDem ange Ġ( director ); ĠLog an ĠM iller , ĠSteve ĠK lo ves , ĠNo ah ĠM iller , ĠAnd y ĠWe iss Ġ( screen play ); ĠMat thew ĠMc Con aug hey ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y ann ĠDem ange " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" Michael ĠM oo re Ġ( director / screen play )", Ġ" Michael ĠM oo re ") ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġcre w , Ġdirector Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser . get Director ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElements ( listOf ( Element (" td "), ĠElement (" td "), ĠElement (" td "). text ( cre w ))), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĠshouldBe Ġdirector ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" parse Ġrank ings " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠUSA Fil ms Parser ( Json ( Json Configuration . Stable ), ĠEnvironment ()) ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠJ soup . parse ( File ( data Path ), ĠStandard Charsets . UTF _ 8 . name ()) ĊĠĠĠĠĠĠĠ Ġval Ġrank ings Ġ= Ġparser . parse Rank ings ( document ) ĊĠĠĠĠĠĠĠ Ġrank ings ĠshouldBe Ġtop Fil ms ĊĠĠĠ Ġ} Ċ })