/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠCom m enc is Ċ Ġ* Ċ Ġ* Ġ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 . comm enc is . checklist Ċ Ċ import Ġcom . comm enc is . checklist . util . project . type . I Project Type Provider Ċ import Ġcom . comm enc is . checklist . util . project . type . Project Type Ċ import Ġcom . comm enc is . test Utils . getAction Field Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . any Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . gradle . api . Action Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . plugins . Object Configuration Action Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . mockito . Argument Captor Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito Annotations . init Mocks Ċ Ċ class ĠChecklist Base Plugin Test Ġ{ ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Project Type Provider : ĠI Project Type Provider ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġchecklist Base Plugin : ĠChecklist Base Plugin ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Mocks ( this ) ĊĠĠĠĠĠĠĠ Ġchecklist Base Plugin Ġ= ĠChecklist Base Plugin ( mock Project Type Provider ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` When ĠChecklist Base Plugin Ġapplied Ġto Ġan ĠApplication ĠProject , Ġit Ġshould Ġapply ĠApplication Checklist Plugin `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject : ĠProject Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Project Type Provider . getProject Type ( any ())). thenReturn ( Project Type . APPLICATION ) ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġget Action ( project ) ĊĠĠĠĠĠĠĠ ĠassertThat ( action ). isEqualTo ( Application Checklist Plugin :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` When ĠChecklist Base Plugin Ġapplied Ġto Ġan ĠLibrary ĠProject , Ġit Ġshould Ġapply ĠLibrary Checklist Plugin `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject : ĠProject Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Project Type Provider . getProject Type ( any ())). thenReturn ( Project Type . LIBRARY ) ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġget Action ( project ) ĊĠĠĠĠĠĠĠ ĠassertThat ( action ). isEqualTo ( Library Checklist Plugin :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` When ĠChecklist Base Plugin Ġapplied Ġto Ġan ĠFeature ĠProject , Ġit Ġshould Ġapply ĠFeature Checklist Plugin `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject : ĠProject Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Project Type Provider . getProject Type ( any ())). thenReturn ( Project Type . FEATURE ) ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġget Action ( project ) ĊĠĠĠĠĠĠĠ ĠassertThat ( action ). isEqualTo ( Feature Checklist Plugin :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Action ( project : ĠProject ): ĠAny { ĊĠĠĠĠĠĠĠ Ġchecklist Base Plugin . apply ( project ) ĊĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= Ġobject Ġ: ĠType Token < Action < Object Configuration Action >>() Ġ{} . raw Type !! Ġas ĠClass < Action < Object Configuration Action >> ĊĠĠĠĠĠĠĠ Ġval Ġargument Captor : ĠArgument Captor < Action < Object Configuration Action >> Ġ= ĠArgument Captor . for Class ( clazz ) ĊĠĠĠĠĠĠĠ Ġverify ( project ). apply ( argument Captor . capture ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Action Field ("\ $ clazz ", Ġargument Captor ) ĊĠĠĠ Ġ} Ċ Ċ }