@@ -105,6 +105,42 @@ struct ObservableCloudTests {
105105 #expect( weakModel == nil )
106106 }
107107
108+ @Test ( " Released cloud model ignores later external notifications " , . testMode)
109+ func releasedCloudModelIgnoresLaterExternalNotifications( ) {
110+ weak var weakModel : MockModelCloud ?
111+
112+ do {
113+ let model = MockModelCloud ( developmentMode: false )
114+ weakModel = model
115+ #expect( model. name == " Test " )
116+ }
117+
118+ #expect( weakModel == nil )
119+
120+ userDefaults. set ( " AfterDeinit " , forKey: " name " )
121+ userDefaults. synchronize ( )
122+ NotificationCenter . default. post (
123+ name: NSUbiquitousKeyValueStore . didChangeExternallyNotification,
124+ object: nil ,
125+ userInfo: [
126+ NSUbiquitousKeyValueStoreChangedKeysKey: [ " name " ]
127+ ] )
128+
129+ let replacement = MockModelCloud ( developmentMode: false )
130+ #expect( replacement. name == " AfterDeinit " )
131+
132+ tracking ( replacement, \. name, . notification)
133+ userDefaults. set ( " ReplacementUpdate " , forKey: " name " )
134+ userDefaults. synchronize ( )
135+ NotificationCenter . default. post (
136+ name: NSUbiquitousKeyValueStore . didChangeExternallyNotification,
137+ object: nil ,
138+ userInfo: [
139+ NSUbiquitousKeyValueStoreChangedKeysKey: [ " name " ]
140+ ] )
141+ #expect( replacement. name == " ReplacementUpdate " )
142+ }
143+
108144 @Test ( " syncImmediately macro default is preserved by generated init " , . testMode)
109145 func syncImmediatelyMacroDefaultIsPreserved( ) {
110146 let model = MockModelCloudSyncImmediately ( )
0 commit comments