@@ -201,6 +201,39 @@ describe(useEmbeddedMetadata.name, () => {
201
201
cleanupTags ( ) ;
202
202
} ) ;
203
203
204
+ it ( "Will delete the original metadata node when you try deleting a metadata state value" , ( ) => {
205
+ const key = "aardvark" ;
206
+ const tagToDelete : MetadataKey = "user" ;
207
+
208
+ const cleanupTags = seedInitialMetadata ( key ) ;
209
+ const { result } = renderMetadataHook ( key ) ;
210
+
211
+ const query = `meta[${ key } =${ tagToDelete } ]` ;
212
+ let userNode = document . querySelector ( query ) ;
213
+ expect ( userNode ) . not . toBeNull ( ) ;
214
+
215
+ act ( ( ) => result . current . clearMetadataByKey ( tagToDelete ) ) ;
216
+ userNode = document . querySelector ( query ) ;
217
+ expect ( userNode ) . toBeNull ( ) ;
218
+
219
+ cleanupTags ( ) ;
220
+ } ) ;
221
+
222
+ it ( "Will not notify subscribers if you try deleting a metadata value that does not exist (or has already been deleted)" , ( ) => {
223
+ const key = "giraffe" ;
224
+ const tagToDelete : MetadataKey = "entitlements" ;
225
+
226
+ const cleanupTags = seedInitialMetadata ( key ) ;
227
+ const { result } = renderMetadataHook ( key ) ;
228
+ act ( ( ) => result . current . clearMetadataByKey ( tagToDelete ) ) ;
229
+
230
+ const resultBeforeNoOp = result . current . metadata ;
231
+ act ( ( ) => result . current . clearMetadataByKey ( tagToDelete ) ) ;
232
+ expect ( result . current . metadata ) . toBe ( resultBeforeNoOp ) ;
233
+
234
+ cleanupTags ( ) ;
235
+ } ) ;
236
+
204
237
// Need to guarantee this, or else we could have a good number of bugs in the
205
238
// React UI
206
239
it ( "Always treats metadata as immutable values during all deletions" , ( ) => {
0 commit comments