@@ -2,13 +2,13 @@ import { EmbeddedItem, EmbedModel } from '../src/Models/embedded-object'
22import { entryEmbeddedEntries , entryEmbeddedAssets , assetRichTextJson , entryRichTextJson } from './mock/entry-mock' ;
33import { assetDisplayJson } from './mock/embedded-object-mock' ;
44import { Attributes , createMetadata , Metadata } from '../src/Models/metadata-model' ;
5- import { findEmbeddedEntry , findEmbeddedAsset , findRenderString , findEmbeddedItems } from '../src/helper/find-embeded-object' ;
5+ import { findEmbeddedEntry , findEmbeddedAsset , findRenderString , findEmbeddedItems , findGQLEmbeddedItems } from '../src/helper/find-embeded-object' ;
66import StyleType from '../src/embedded-types/style-type' ;
77import { EntryNode } from '../src/Models/json-rte-model' ;
88
99const assetRichTextMetadata = createMetadata ( assetRichTextJson as unknown as Attributes )
1010const entryRichTextMetadata = createMetadata ( entryRichTextJson as unknown as Attributes )
11- const assetDisplayMetadata = createMetadata ( assetDisplayJson as unknown as Attributes )
11+ const assetDisplayMetadata = createMetadata ( assetDisplayJson as unknown as Attributes )
1212
1313describe ( 'Embedded object render from content' , ( ) => {
1414 it ( 'Find Embedded Entry no matching uids with blank embedded Entry test' , done => {
@@ -62,11 +62,11 @@ describe('Embedded object render from content', () => {
6262 } )
6363
6464 it ( 'Find Render string from undefined objects test' , done => {
65-
65+
6666 const renderString = findRenderString ( entryEmbeddedAssets . _embedded_items . rich_text_editor [ 0 ] , undefined )
6767 expect ( renderString ) . toEqual ( '' )
6868 done ( )
69- } )
69+ } )
7070
7171 it ( 'Find Render string from default renderOption' , done => {
7272 const renderString = findRenderString ( entryEmbeddedEntries . _embedded_items . rich_text_editor [ 0 ] , entryRichTextMetadata )
@@ -82,31 +82,74 @@ describe('Embedded object render from content', () => {
8282
8383 it ( 'Find Render string from passed renderOption' , done => {
8484 let renderString = findRenderString ( entryEmbeddedEntries . _embedded_items . rich_text_editor [ 0 ] , entryRichTextMetadata , {
85- [ StyleType . BLOCK ] : ( item :EmbeddedItem | EntryNode , metadata : Metadata ) => `<div><div>${ item . title || item . uid } </div><div>Content type: <span>${ item . _content_type_uid } </span></div></div>`
85+ [ StyleType . BLOCK ] : ( item : EmbeddedItem | EntryNode , metadata : Metadata ) => `<div><div>${ item . title || item . uid } </div><div>Content type: <span>${ item . _content_type_uid } </span></div></div>`
8686 } )
8787 expect ( renderString ) . toEqual ( '<div><div>Update this title</div><div>Content type: <span>content_block</span></div></div>' )
88-
88+
8989 renderString = findRenderString ( entryEmbeddedEntries . _embedded_items . rich_text_editor [ 0 ] , entryRichTextMetadata , {
90- [ StyleType . BLOCK ] :
90+ [ StyleType . BLOCK ] :
9191 {
9292 'embeddedrte' :
93- ( item :EmbeddedItem | EntryNode , metadata : Metadata ) => `<div>${ item . title || item . uid } <div>Content type: <span>${ item . _content_type_uid } </span></div></div>`
93+ ( item : EmbeddedItem | EntryNode , metadata : Metadata ) => `<div>${ item . title || item . uid } <div>Content type: <span>${ item . _content_type_uid } </span></div></div>`
9494 }
9595 } )
9696 expect ( renderString ) . toEqual ( '<div>Update this title<div>Content type: <span>content_block</span></div></div>' )
9797
9898 renderString = findRenderString ( entryEmbeddedEntries . _embedded_items . rich_text_editor [ 0 ] , entryRichTextMetadata , {
99- [ StyleType . BLOCK ] :
99+ [ StyleType . BLOCK ] :
100100 {
101101 'content-type' :
102- ( item :EmbeddedItem | EntryNode , metadata : Metadata ) => `<div><div>${ item . title || item . uid } </div><div>Content type: <span>${ item . _content_type_uid } </span></div></div>`
102+ ( item : EmbeddedItem | EntryNode , metadata : Metadata ) => `<div><div>${ item . title || item . uid } </div><div>Content type: <span>${ item . _content_type_uid } </span></div></div>`
103103 }
104104 } )
105105 expect ( renderString ) . toEqual ( '<div><p>Update this title</p><p>Content type: <span>content_block</span></p></div>' )
106106 done ( )
107107 } )
108108} )
109109
110+ describe ( 'findEmbeddedEntry edge cases' , ( ) => {
111+ it ( 'should return empty array if embeddeditems contains null or undefined' , ( ) => {
112+ const result = findEmbeddedEntry ( 'uid' , 'contentType' , [ null , undefined ] ) ;
113+ expect ( result ) . toEqual ( [ ] ) ;
114+ } ) ;
115+
116+ it ( 'should skip falsy entries in embeddeditems' , ( ) => {
117+ const validEntry = { uid : 'uid' , _content_type_uid : 'contentType' } ;
118+ const result = findEmbeddedEntry ( 'uid' , 'contentType' , [ null , validEntry , undefined ] ) ;
119+ expect ( result ) . toEqual ( [ validEntry ] ) ;
120+ } ) ;
121+ } ) ;
122+
123+ describe ( 'findEmbeddedAsset edge cases' , ( ) => {
124+ it ( 'should return empty array if embeddedAssets contains null or undefined' , ( ) => {
125+ const result = findEmbeddedAsset ( 'uid' , [ null , undefined ] ) ;
126+ expect ( result ) . toEqual ( [ ] ) ;
127+ } ) ;
128+
129+ it ( 'should skip falsy assets in embeddedAssets' , ( ) => {
130+ const validAsset = { uid : 'uid' } ;
131+ const result = findEmbeddedAsset ( 'uid' , [ null , validAsset , undefined ] ) ;
132+ expect ( result ) . toEqual ( [ validAsset ] ) ;
133+ } ) ;
134+ } ) ;
135+
136+ describe ( 'findGQLEmbeddedItems edge cases' , ( ) => {
137+ it ( 'should return empty array if metadata is null' , ( ) => {
138+ const result = findGQLEmbeddedItems ( null as any , [ { uid : 'uid' } ] ) ;
139+ expect ( result ) . toEqual ( [ ] ) ;
140+ } ) ;
141+
142+ it ( 'should return empty array if items is null' , ( ) => {
143+ const result = findGQLEmbeddedItems ( { itemType : 'entry' , itemUid : 'uid' , contentTypeUid : 'ct' , attributes : { } } as any , null as any ) ;
144+ expect ( result ) . toEqual ( [ ] ) ;
145+ } ) ;
146+
147+ it ( 'should return empty array if both metadata and items are null' , ( ) => {
148+ const result = findGQLEmbeddedItems ( null as any , null as any ) ;
149+ expect ( result ) . toEqual ( [ ] ) ;
150+ } ) ;
151+ } ) ;
152+
110153function makeFindEntry ( uid : string = '' , contentTypeUid : string = '' , embeddeditems ?: EmbeddedItem [ ] ) {
111154 return findEmbeddedEntry ( uid , contentTypeUid , embeddeditems )
112155}
@@ -115,7 +158,7 @@ function makeFindAsset(uid: string = '', embeddedAssets?: EmbeddedItem[]) {
115158 return findEmbeddedAsset ( uid , embeddedAssets )
116159}
117160
118- function reduceToArray ( embedModel : EmbedModel < EmbeddedItem > ) : EmbeddedItem [ ] {
161+ function reduceToArray ( embedModel : EmbedModel < EmbeddedItem > ) : EmbeddedItem [ ] {
119162 return Object . values ( embedModel ) . reduce ( ( accumulator , value ) => accumulator . concat ( value ) , [ ] )
120163}
121164
0 commit comments