package Ġnet . d ank ito . read ability 4 j . util Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġnet . d ank ito . read ability 4 j . Article Ċ import Ġnet . d ank ito . read ability 4 j . model . Article Metadata Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . io . OutputStream Writer Ċ import Ġjava . nio . charset . Charset ĊĊ Ċ abstract Ġclass ĠTest Data Generator Base Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠobjectMapper Ġ= ĠObjectMapper () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġwrite TestData ( source Html : ĠString , Ġarticle : ĠArticle , Ġarticle Extended : ĠArticle , Ġtest Folder Name : ĠString , ĠtestCase Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestCase Folder Ġ= Ġget TestCase Folder ( test Folder Name , ĠtestCase Name ) ĊĊĠĠĠĠĠĠĠ Ġwrite File ( testCase Folder , Ġ" source . html ", Ġsource Html ) ĊĠĠĠĠĠĠĠ Ġwrite File ( testCase Folder , Ġ" expected . html ", Ġarticle . content Ġ?: Ġ"") ĊĠĠĠĠĠĠĠ Ġwrite File ( testCase Folder , Ġ" expected - metadata . json ", Ġgenerate Metadata Json ( article )) ĊĊĠĠĠĠĠĠĠ Ġif ( article Extended . content Ġ!= Ġarticle . content ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite File ( testCase Folder , Ġ" expected - extended . html ", Ġarticle Extended . content Ġ?: Ġ"") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġget TestCase Folder ( test Folder Name : ĠString , ĠtestCase Name : ĠString ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Pages Folder Ġ= ĠFile ( getPath To Test Resources Folder (), Ġtest Folder Name ) ĊĠĠĠĠĠĠĠ Ġval ĠtestCase Folder Ġ= ĠFile ( test Pages Folder , ĠtestCase Name ) ĊĊĠĠĠĠĠĠĠ Ġif ( testCase Folder . exists () Ġ== Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtestCase Folder . mkdir s () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠtestCase Folder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġgenerate Metadata Json ( article : ĠArticle ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmetadata Ġ= ĠArticle Metadata ( article . title , Ġarticle . by line , Ġarticle . excerpt , Ġarticle . dir ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠobjectMapper . writer WithDefault PrettyPrinter (). writeValue AsString ( metadata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġwrite File ( testCase Folder : ĠFile , ĠfileName : ĠString , Ġfile Content : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwriter Ġ= ĠOutputStream Writer ( File OutputStream ( File ( testCase Folder , ĠfileName )), ĠCharset . forName (" UTF - 8 "). new Encoder ()) Ġ// ĠTODO : Ġset Ġencoding ĊĊĠĠĠĠĠĠĠ Ġwriter . write ( file Content ) ĊĊĠĠĠĠĠĠĠ Ġwriter . flush () ĊĠĠĠĠĠĠĠ Ġwriter . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun ĠgetPath To Test Resources Folder (): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Page Resource Url Ġ= Ġthis . java Class . class Loader . getResource (" log back - test . xml ") Ġ// Ġget Ġurl Ġto Ġany Ġtest Ġresource Ġthat 's Ġfor Ġsure Ġthere ĊĠĠĠĠĠĠĠ Ġval Ġtest Page Resource File Ġ= ĠFile ( test Page Resource Url . to URI ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġread ability 4 J Folder Ġ= Ġtest Page Resource File . parent File . parent File . parent File . parent File ĊĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( File ( File ( read ability 4 J Folder , Ġ" src "), Ġ" test "), Ġ" resources ") ĊĠĠĠ Ġ} Ċ Ċ }