package Ġcom . fib el att i . pin board . features . posts . domain . use case Ċ Ċ import Ġcom . fib el att i . core . functional . Failure Ċ import Ġcom . fib el att i . core . functional . Success Ċ import Ġcom . fib el att i . core . functional . exception OrNull Ċ import Ġcom . fib el att i . core . functional . get OrNull Ċ import Ġcom . fib el att i . pin board . Mock DataProvider . create Suggest ed Tags Ċ import Ġcom . fib el att i . pin board . Mock DataProvider . mock Url Valid Ċ import Ġcom . fib el att i . pin board . core . network . ApiException Ċ import Ġcom . fib el att i . pin board . core . network . Invalid RequestException Ċ import Ġcom . fib el att i . pin board . features . posts . domain . Posts Repository Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . mock k Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ class ĠGet Suggest ed Tags For Url Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmock Posts Repository Ġ= Ġmock k < Posts Repository >() ĊĠĠĠ Ġprivate Ġval Ġmock Validate Url Ġ= Ġmock k < Validate Url >() ĊĊĠĠĠ Ġprivate Ġval Ġget Suggest ed Tags For Url Ġ= ĠGet Suggest ed Tags For Url ( ĊĠĠĠĠĠĠĠ Ġmock Posts Repository , ĊĠĠĠĠĠĠĠ Ġmock Validate Url ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` G IV EN ĠValidate Url Ġfails ĠWHEN ĠAdd Post Ġis Ġcalled ĠTHEN ĠFailure Ġis Ġreturned `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġmock Validate Url ( mock Url Valid ) Ġ} Ġreturns ĠFailure ( Invalid RequestException ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Blocking Ġ{ Ġget Suggest ed Tags For Url ( mock Url Valid ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ ĠassertThat ( result . exception OrNull ()). isInstanceOf ( Invalid RequestException :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` G IV EN Ġposts Ġrepository Ġadd Ġfails ĠWHEN ĠAdd Post Ġis Ġcalled ĠTHEN ĠFailure Ġis Ġreturned `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġmock Validate Url ( mock Url Valid ) Ġ} returns ĠSuccess Ġ( mock Url Valid ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġmock Posts Repository . get Suggest ed Tags For Url ( mock Url Valid ) Ġ} returns ĠFailure Ġ( ApiException ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Blocking Ġ{ Ġget Suggest ed Tags For Url ( mock Url Valid ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ ĠassertThat ( result . exception OrNull ()). isInstanceOf ( ApiException :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` G IV EN Ġposts Ġrepository Ġadd Ġsucceeds ĠWHEN ĠAdd Post Ġis Ġcalled ĠTHEN ĠSuccess Ġis Ġreturned `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġcreate Suggest ed Tags () ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġmock Validate Url ( mock Url Valid ) Ġ} returns ĠSuccess Ġ( mock Url Valid ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġmock Posts Repository . get Suggest ed Tags For Url ( mock Url Valid ) Ġ} returns ĠSuccess Ġ( response ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Blocking Ġ{ Ġget Suggest ed Tags For Url ( mock Url Valid ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ ĠassertThat ( result . get OrNull ()). isEqualTo ( response ) ĊĠĠĠ Ġ} Ċ } Ċ