/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠD uck Duck Go Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . duck duck go . privacy . config . impl . plugins Ċ Ċ import Ġcom . duck duck go . app . Coroutine Test Rule Ċ import Ġcom . duck duck go . app . run Blocking Ċ import Ġcom . duck duck go . feature . toggle s . api . Feature Name Ċ import Ġcom . duck duck go . privacy . config . api . Privacy Feature Name Ċ import Ġcom . duck duck go . privacy . config . store . Privacy Feature Toggle s Repository Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġorg . junit . Assert .* Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ class ĠPrivacy Feature Toggle s Plugin Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġvar Ġcoroutine Rule Ġ= ĠCor outine Test Rule () ĊĠĠĠ Ġlateinit Ġvar Ġtest ee : ĠPrivacy Feature Toggle s Plugin ĊĊĠĠĠ Ġprivate Ġval Ġmock Feature Toggle s Repository : ĠPrivacy Feature Toggle s Repository Ġ= Ġmock () ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġbefore () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest ee Ġ= ĠPrivacy Feature Toggle s Plugin ( mock Feature Toggle s Repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen IsEnabled And Feature IsNot AP riv acy Feature Then Return Null () Ġ= Ġcoroutine Rule . run Blocking Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNull ( test ee . isEnabled ( Non Privacy Feature (), Ġtrue )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen IsEnabled And Feature Is Privacy Feature Then Return True When Enabled () Ġ= Ġcoroutine Rule . run Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Privacy Feature IsEnabled () ĊĊĠĠĠĠĠĠĠ Ġval Ġis Enabled Ġ= Ġtest ee . isEnabled ( Privacy Feature Name . Content Blocking Feature Name (), Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( isEnabled !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen IsEnabled And Feature Is Privacy Feature Then Return False When Disabled () Ġ= Ġcoroutine Rule . run Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Privacy Feature Is Disabled () ĊĊĠĠĠĠĠĠĠ Ġval Ġis Enabled Ġ= Ġtest ee . isEnabled ( Privacy Feature Name . Content Blocking Feature Name (), Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( isEnabled !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen IsEnabled And Feature Is Privacy Feature Then Return DefaultValue If Feature DoesNotExist () Ġ= Ġcoroutine Rule . run Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠdefaultValue Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġgiven Privacy Feature Returns DefaultValue ( defaultValue ) ĊĊĠĠĠĠĠĠĠ Ġval Ġis Enabled Ġ= Ġtest ee . isEnabled ( Privacy Feature Name . Content Blocking Feature Name (), ĠdefaultValue ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( defaultValue , Ġis Enabled ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgiven Privacy Feature IsEnabled () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Feature Toggle s Repository . get ( Privacy Feature Name . Content Blocking Feature Name (). value , Ġtrue )). thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgiven Privacy Feature Is Disabled () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Feature Toggle s Repository . get ( Privacy Feature Name . Content Blocking Feature Name (). value , Ġtrue )). thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgiven Privacy Feature Returns DefaultValue ( defaultValue : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Feature Toggle s Repository . get ( Privacy Feature Name . Content Blocking Feature Name (). value , ĠdefaultValue )). thenReturn ( defaultValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠNon Privacy Feature ( override Ġval Ġvalue : ĠString Ġ= Ġ" test ") Ġ: ĠFeature Name Ċ Ċ } Ċ