package Ġde . r ki . cor on aw arn app . cor on atest . ant igen . profile Ċ Ċ import Ġandroid . content . Context Ċ import Ġde . r ki . cor on aw arn app . util . serialization . Serialization Module Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . every Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġorg . joda . time . format . DateTime Format Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġtest helpers . Base Test Ċ import Ġtest helpers . extensions . to Comparable Json Pretty Ċ import Ġtest helpers . preferences . Mock SharedPreferences Ċ Ċ internal Ġclass ĠR AT Profile Settings Test Ġ: ĠBaseTest () Ġ{ ĊĠĠĠ Ġ@ Mock K Ġlateinit Ġvar Ġcontext : ĠContext ĊĠĠĠ Ġprivate Ġval Ġmock Preferences Ġ= ĠMock SharedPreferences () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrat Profile Settings : ĠR AT Profile Settings ĊĠĠĠ Ġprivate Ġval Ġformatter Ġ= ĠDateTime Format . for Pattern (" yyyy - MM - dd ") ĊĠĠĠ Ġprivate Ġval Ġprofile Ġ= ĠR AT Profile ( ĊĠĠĠĠĠĠĠ ĠfirstName Ġ= Ġ" First Ġname ", ĊĠĠĠĠĠĠĠ ĠlastName Ġ= Ġ" Last Ġname ", ĊĠĠĠĠĠĠĠ Ġbirth Date Ġ= Ġformatter . parse LocalDate (" 1 9 5 0 - 0 8 - 0 1 "), ĊĠĠĠĠĠĠĠ Ġstreet Ġ= Ġ" Main Ġstreet ", ĊĠĠĠĠĠĠĠ Ġzip Code Ġ= Ġ" 1 2 1 3 2 ", ĊĠĠĠĠĠĠĠ Ġcity Ġ= Ġ" L ondon ", ĊĠĠĠĠĠĠĠ Ġphone Ġ= Ġ" 1 1 1 1 1 1 1 1 1 ", ĊĠĠĠĠĠĠĠ Ġemail Ġ= Ġ" email @ example . com " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . get SharedPreferences (" rat profile _ local data ", ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns Ġmock Preferences ĊĊĠĠĠĠĠĠĠ Ġrat Profile Settings Ġ= ĠR AT Profile Settings ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSerialization Module (). base Gson () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Profile Ġhas Ġbirth Ġdate `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrat Profile Settings . profile . update Ġ{ Ġprofile Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ( mock Preferences . data Map Peek [" rat profile . settings . profile "] Ġas ĠString ) ĊĠĠĠĠĠĠĠ Ġjson . to Comparable Json Pretty () ĠshouldBe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" firstName ": Ġ" First Ġname ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lastName ": Ġ" Last Ġname ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" birth Date ": Ġ" 1 9 5 0 - 0 8 - 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" street ": Ġ" Main Ġstreet ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" zip Code ": Ġ" 1 2 1 3 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" city ": Ġ" L ondon ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" phone ": Ġ" 1 1 1 1 1 1 1 1 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" email ": Ġ" email @ example . com " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Profile Ġhasn 't Ġbirth Ġdate `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrat Profile Settings . profile . update Ġ{ Ġprofile . copy ( birth Date Ġ= Ġnull ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ( mock Preferences . data Map Peek [" rat profile . settings . profile "] Ġas ĠString ) ĊĠĠĠĠĠĠĠ Ġjson . to Comparable Json Pretty () ĠshouldBe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" firstName ": Ġ" First Ġname ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lastName ": Ġ" Last Ġname ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" street ": Ġ" Main Ġstreet ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" zip Code ": Ġ" 1 2 1 3 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" city ": Ġ" L ondon ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" phone ": Ġ" 1 1 1 1 1 1 1 1 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" email ": Ġ" email @ example . com " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Profile Ġhas Ġempty Ġproperties `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrat Profile Settings . profile . update Ġ{ Ġprofile . copy ( firstName Ġ= Ġ"", ĠlastName Ġ= Ġ"") Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ( mock Preferences . data Map Peek [" rat profile . settings . profile "] Ġas ĠString ) ĊĠĠĠĠĠĠĠ Ġjson . to Comparable Json Pretty () ĠshouldBe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" firstName ": Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lastName ": Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" birth Date ": Ġ" 1 9 5 0 - 0 8 - 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" street ": Ġ" Main Ġstreet ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" zip Code ": Ġ" 1 2 1 3 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" city ": Ġ" L ondon ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" phone ": Ġ" 1 1 1 1 1 1 1 1 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" email ": Ġ" email @ example . com " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġ} Ċ } Ċ