/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 Ġ- Ġpresent ĠIn structure , ĠInc . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠThis Ġprogram Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* ĠĠĠĠ Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* ĠĠĠĠ Ġthe ĠFree ĠSoftware ĠFoundation , Ġversion Ġ 3 Ġof Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* ĠĠĠĠ Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠĠĠĠ ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠĠĠĠ ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ Ġ* ĠĠĠĠ Ġalong Ġwith Ġthis Ġprogram . Ġ ĠIf Ġnot , Ġsee Ġ< http :// www . gnu . org / licenses />. Ċ Ġ* Ċ Ġ*/ Ċ package Ġcom . in structure . p anda utils . features . element ary . hom ero om Ċ Ċ import Ġandroid . content . res . Resources Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . in structure . canvas api 2 . managers . Anno uncement Manager Ċ import Ġcom . in structure . canvas api 2 . managers . Planner Manager Ċ import Ġcom . in structure . canvas api 2 . managers . User Manager Ċ import Ġcom . in structure . canvas api 2 . models .* Ċ import Ġcom . in structure . canvas api 2 . utils . Data Result Ċ import Ġcom . in structure . canvas api 2 . utils . to Api String Ċ import Ġcom . in structure . p anda utils . R Ċ import Ġcom . in structure . p anda utils . mv vm . Event Ċ import Ġio . mock k .* Ċ import Ġkotlinx . coroutines . Deferred Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . await All Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . th reet en . bp . LocalDate Ċ import Ġjava . util .* Ċ Ċ @ Experimental Cor outines Api Ċ class ĠCourse Card Creator Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpl anner Manager : ĠPl anner Manager Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġval Ġuser Manager : ĠUser Manager Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġval Ġanno uncement Manager : ĠAnno uncement Manager Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġval Ġresources : ĠResources Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġval Ġevents : ĠMutable LiveData < Event < Hom ero om Action >> Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĊĠĠĠ Ġprivate Ġval Ġcourse Card Creator Ġ= ĠCourse Card Creator ( planner Manager , Ġuser Manager , Ġanno uncement Manager , Ġresources ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock k Static (" kotlin x . coroutines . Await Kt ") ĊĊĠĠĠĠĠĠĠ Ġval Ġannounce ments Deferred : ĠDeferred < Data Result < List < Dis cussion Topic Header >>> Ġ= Ġmock k () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġanno uncement Manager . get Latest Anno uncement Async ( any (), Ġany ()) Ġ} Ġreturns Ġannounce ments Deferred ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ ĠlistOf ( announce ments Deferred ). await All () Ġ} Ġreturns ĠlistOf ( Data Result . Success ( emptyList ())) ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpl anner Manager . get Planner Items Async ( any (), Ġany (), Ġany ()) Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġawait () Ġ} Ġreturns ĠData Result . Success ( emptyList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġuser Manager . getAll Missing Sub missions Async ( any ()) Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġawait () Ġ} Ġreturns ĠData Result . Success ( emptyList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Planner Ġitems Ġshould Ġbe Ġrequested Ġonly Ġfor Ġtoday `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġtoday Ġ= ĠLocalDate . now () ĊĠĠĠĠĠĠĠ Ġval Ġtoday String Ġ= Ġtoday . to Api String () ĊĠĠĠĠĠĠĠ Ġval Ġtomorrow String Ġ= Ġtoday . plus Days ( 1 ). to Api String () ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġcourse Card Creator . create Course Cards ( emptyList (), Ġtrue , Ġfalse , Ġevents ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġpl anner Manager . get Planner Items Async ( any (), Ġeq ( today String !! ), Ġeq ( tom orrow String !! )) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Force Ġnetwork Ġcall Ġfor Ġpl anner Ġitems Ġand Ġmissing Ġassignments Ġwhen Ġupdating Ġassignment Ġinfo `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġupdate Assignments Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġcourse Card Creator . create Course Cards ( emptyList (), Ġfalse , Ġupdate Assignments , Ġevents ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġpl anner Manager . get Planner Items Async ( true , Ġany (), Ġany ()) Ġ} ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġuser Manager . getAll Missing Sub missions Async ( true ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Create Ġcourse Ġcard Ġwith Ġcorrect Ġcourse Ġname , Ġcolor Ġand Ġimage Ġurl `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġcourses Ġ= ĠlistOf ( Course ( id Ġ= Ġ 1 , Ġname Ġ= Ġ" Test Ġcourse ", Ġcourse Color Ġ= Ġ"# 1 2 3 4 5 6 ", ĠimageUrl Ġ= Ġ" www . image url . com ")) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġcourse Cards Ġ= Ġcourse Card Creator . create Course Cards ( courses , Ġfalse , Ġfalse , Ġevents ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcourse Cards . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" Test Ġcourse ", Ġcourse Cards [ 0 ]. data . course Name ) ĊĠĠĠĠĠĠĠ ĠassertEquals ("# 1 2 3 4 5 6 ", Ġcourse Cards [ 0 ]. data . course Color ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" www . image url . com ", Ġcourse Cards [ 0 ]. data . imageUrl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Create Ġcourse Ġcard Ġwith Ġthe Ġfirst Ġanno uncement Ġof Ġthe Ġcourse `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġcourses Ġ= ĠlistOf ( Course ( id Ġ= Ġ 1 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġannounce ments Ġ= ĠlistOf ( Dis cussion Topic Header ( title Ġ= Ġ" First "), ĠDis cussion Topic Header ( title Ġ= Ġ" Second ")) ĊĠĠĠĠĠĠĠ Ġval Ġannounce ments Deferred : ĠDeferred < Data Result < List < Dis cussion Topic Header >>> Ġ= Ġmock k () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġanno uncement Manager . get Latest Anno uncement Async ( courses [ 0 ], Ġany ()) Ġ} Ġreturns Ġannounce ments Deferred ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ ĠlistOf ( announce ments Deferred ). await All () Ġ} Ġreturns ĠlistOf ( Data Result . Success ( announce ments )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġcourse Cards Ġ= Ġcourse Card Creator . create Course Cards ( courses , Ġfalse , Ġfalse , Ġevents ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcourse Cards . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" First ", Ġcourse Cards [ 0 ]. data . announcement Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Create Ġcourse Ġcard Ġwith Ġdue Ġtoday Ġtext Ġfrom Ġthe Ġnot Ġsubmitted Ġand Ġnot Ġmissing Ġassignments Ġdue Ġtoday `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġcourses Ġ= ĠlistOf ( Course ( id Ġ= Ġ 1 ), ĠCourse ( id Ġ= Ġ 2 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġpl anner Items Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Planner Item ( 1 , ĠPl ann able Type . ASSIGN MENT , Ġfalse , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Planner Item ( 1 , ĠPl ann able Type . TODO , Ġfalse , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Planner Item ( 1 , ĠPl ann able Type . ASSIGN MENT , Ġfalse , Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Planner Item ( 1 , ĠPl ann able Type . ASSIGN MENT , Ġtrue , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Planner Item ( 2 , ĠPl ann able Type . ASSIGN MENT , Ġfalse , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Planner Item ( 2 , ĠPl ann able Type . ASSIGN MENT , Ġfalse , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Planner Item ( 3 , ĠPl ann able Type . ASSIGN MENT , Ġfalse , Ġfalse ), ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġannounce ments Deferred : ĠDeferred < Data Result < List < Dis cussion Topic Header >>> Ġ= Ġmock k () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġanno uncement Manager . get Latest Anno uncement Async ( any (), Ġany ()) Ġ} Ġreturns Ġannounce ments Deferred ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ ĠlistOf ( announce ments Deferred , Ġannounce ments Deferred ). await All () Ġ} Ġreturns ĠlistOf ( Data Result . Success ( emptyList ()), ĠData Result . Success ( emptyList ())) ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpl anner Manager . get Planner Items Async ( any (), Ġany (), Ġany ()) Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġawait () Ġ} Ġreturns ĠData Result . Success ( planner Items ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġresources . getString ( eq ( R . string . due Today ), Ġany ()) Ġ} Ġanswers Ġ{ Ġcall Ġ-> Ġ"${ ( call . invocation . args [ 1 ] Ġas ĠArray < Any >) [ 0 ]} Ġdue Ġtoday " Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġcourse Cards Ġ= Ġcourse Card Creator . create Course Cards ( courses , Ġfalse , Ġfalse , Ġevents ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcourse Cards . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" 1 Ġdue Ġtoday ", Ġcourse Cards [ 0 ]. data . assignments Due Text ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" 2 Ġdue Ġtoday ", Ġcourse Cards [ 1 ]. data . assignments Due Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Create Ġcourse Ġcard Ġwith Ġnothing Ġdue Ġtoday Ġtext Ġif Ġuser Ġdon 't Ġhave Ġdue Ġtoday Ġassignments Ġfor Ġcourses `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġcourses Ġ= ĠlistOf ( Course ( id Ġ= Ġ 1 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġpl anner Items Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Planner Item ( 1 , ĠPl ann able Type . TODO , Ġfalse , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Planner Item ( 1 , ĠPl ann able Type . ASSIGN MENT , Ġfalse , Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Planner Item ( 1 , ĠPl ann able Type . ASSIGN MENT , Ġtrue , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Planner Item ( 2 , ĠPl ann able Type . ASSIGN MENT , Ġfalse , Ġfalse ), ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpl anner Manager . get Planner Items Async ( any (), Ġany (), Ġany ()) Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġawait () Ġ} Ġreturns ĠData Result . Success ( planner Items ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġresources . getString ( eq ( R . string . nothing Due Today )) Ġ} Ġreturns Ġ" Nothing Ġdue Ġtoday " ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġcourse Cards Ġ= Ġcourse Card Creator . create Course Cards ( courses , Ġfalse , Ġfalse , Ġevents ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcourse Cards . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" Nothing Ġdue Ġtoday ", Ġcourse Cards [ 0 ]. data . assignments Due Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Create Ġcourse Ġcard Ġwith Ġmissing Ġtext Ġfrom Ġthe Ġmissing Ġsubmissions Ġthat Ġare Ġnot Ġdis missed `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġcourses Ġ= ĠlistOf ( Course ( id Ġ= Ġ 1 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġassignments Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssignment ( id Ġ= Ġ 1 , Ġcourse Id Ġ= Ġ 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssignment ( id Ġ= Ġ 2 , Ġcourse Id Ġ= Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssignment ( id Ġ= Ġ 3 , Ġcourse Id Ġ= Ġ 1 , Ġpl anner Override Ġ= ĠPl anner Override ( pl ann able Id Ġ= Ġ 3 , Ġpl ann able Type Ġ= ĠPl ann able Type . ASSIGN MENT , Ġdis missed Ġ= Ġfalse )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssignment ( id Ġ= Ġ 4 , Ġcourse Id Ġ= Ġ 1 , Ġpl anner Override Ġ= ĠPl anner Override ( pl ann able Id Ġ= Ġ 4 , Ġpl ann able Type Ġ= ĠPl ann able Type . ASSIGN MENT , Ġdis missed Ġ= Ġtrue ))) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġuser Manager . getAll Missing Sub missions Async ( any ()) Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġawait () Ġ} Ġreturns ĠData Result . Success ( assignments ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġresources . getString ( eq ( R . string . missing ), Ġany ()) Ġ} Ġanswers Ġ{ Ġcall Ġ-> Ġ"${ ( call . invocation . args [ 1 ] Ġas ĠArray < Any >) [ 0 ]} Ġmissing " Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġcourse Cards Ġ= Ġcourse Card Creator . create Course Cards ( courses , Ġfalse , Ġfalse , Ġevents ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcourse Cards . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" 2 Ġmissing ", Ġcourse Cards [ 0 ]. data . assignments Missing Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Create Ġcourse Ġcard Ġwithout Ġmissing Ġtext Ġif Ġno Ġassignment Ġis Ġmissing Ġfor Ġthe Ġcourse `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġcourses Ġ= ĠlistOf ( Course ( id Ġ= Ġ 1 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġassignments Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssignment ( id Ġ= Ġ 1 , Ġcourse Id Ġ= Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssignment ( id Ġ= Ġ 4 , Ġcourse Id Ġ= Ġ 1 , Ġpl anner Override Ġ= ĠPl anner Override ( pl ann able Id Ġ= Ġ 4 , Ġpl ann able Type Ġ= ĠPl ann able Type . ASSIGN MENT , Ġdis missed Ġ= Ġtrue ))) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġuser Manager . getAll Missing Sub missions Async ( any ()) Ġ} Ġreturns Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġawait () Ġ} Ġreturns ĠData Result . Success ( assignments ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġcourse Cards Ġ= Ġcourse Card Creator . create Course Cards ( courses , Ġfalse , Ġfalse , Ġevents ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcourse Cards . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ("", Ġcourse Cards [ 0 ]. data . assignments Missing Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Create Ġcourse Ġcard Ġwith Ġdefault Ġcolor Ġif Ġno Ġcolor Ġis Ġset `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġcourses Ġ= ĠlistOf ( Course ( id Ġ= Ġ 1 , Ġname Ġ= Ġ" Test Ġcourse ")) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġcourse Cards Ġ= Ġcourse Card Creator . create Course Cards ( courses , Ġfalse , Ġfalse , Ġevents ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcourse Cards . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ("# 3 9 4 B 5 8 ", Ġcourse Cards [ 0 ]. data . course Color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Planner Item ( course Id : ĠLong , Ġpl ann able Type : ĠPl ann able Type , Ġsubmitted : ĠBoolean , Ġmissing : ĠBoolean ): ĠPl anner Item Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpl ann able Ġ= Ġmock k < Pl ann able >() ĊĠĠĠĠĠĠĠ Ġreturn ĠPl anner Item ( course Id , Ġnull , Ġnull , Ġnull , Ġnull , Ġpl ann able Type , Ġpl ann able , ĠDate (), Ġnull , ĠSubmission State ( submitted , Ġmissing ), Ġfalse ) ĊĠĠĠ Ġ} Ċ }