File tree Expand file tree Collapse file tree 2 files changed +59
-5
lines changed Expand file tree Collapse file tree 2 files changed +59
-5
lines changed Original file line number Diff line number Diff line change @@ -868,6 +868,53 @@ describe('connectionFromArraySlice()', () => {
868868 }
869869 } ) ;
870870 } ) ;
871+
872+ it ( 'can populate edges and resolve nodes from the array' , ( ) => {
873+ const letterEdgeData = [
874+ {
875+ letter : 'A' ,
876+ isFirst : true ,
877+ } ,
878+ {
879+ letter : 'B' ,
880+ isFirst : false ,
881+ }
882+ ] ;
883+
884+ const c = connectionFromArraySlice (
885+ letterEdgeData ,
886+ {
887+ first : 2 ,
888+ } ,
889+ {
890+ sliceStart : 0 ,
891+ arrayLength : 2 ,
892+ resolveNode : ( { letter } ) => letter ,
893+ }
894+ ) ;
895+ return expect ( c ) . to . deep . equal ( {
896+ edges : [
897+ {
898+ isFirst : true ,
899+ node : 'A' ,
900+ letter : 'A' ,
901+ cursor : 'YXJyYXljb25uZWN0aW9uOjA=' ,
902+ } ,
903+ {
904+ isFirst : false ,
905+ node : 'B' ,
906+ letter : 'B' ,
907+ cursor : 'YXJyYXljb25uZWN0aW9uOjE=' ,
908+ } ,
909+ ] ,
910+ pageInfo : {
911+ startCursor : 'YXJyYXljb25uZWN0aW9uOjA=' ,
912+ endCursor : 'YXJyYXljb25uZWN0aW9uOjE=' ,
913+ hasPreviousPage : false ,
914+ hasNextPage : false ,
915+ }
916+ } ) ;
917+ } ) ;
871918} ) ;
872919
873920describe ( 'connectionFromPromisedArraySlice()' , ( ) => {
Original file line number Diff line number Diff line change @@ -68,7 +68,7 @@ export function connectionFromArraySlice<T>(
6868 meta : ArraySliceMetaInfo
6969) : Connection < T > {
7070 const { after, before, first, last } = args ;
71- const { sliceStart, arrayLength } = meta ;
71+ const { sliceStart, arrayLength, resolveNode } = meta ;
7272 const sliceEnd = sliceStart + arraySlice . length ;
7373 const beforeOffset = getOffsetWithDefault ( before , arrayLength ) ;
7474 const afterOffset = getOffsetWithDefault ( after , - 1 ) ;
@@ -110,10 +110,17 @@ export function connectionFromArraySlice<T>(
110110 arraySlice . length - ( sliceEnd - endOffset )
111111 ) ;
112112
113- const edges = slice . map ( ( value , index ) => ( {
114- cursor : offsetToCursor ( startOffset + index ) ,
115- node : value ,
116- } ) ) ;
113+ const edges = slice . map ( ( value , index ) => {
114+ const newEdge = {
115+ cursor : offsetToCursor ( startOffset + index ) ,
116+ node : resolveNode ? resolveNode ( value ) : value ,
117+ } ;
118+
119+ if ( resolveNode ) {
120+ return { ...newEdge , ...value } ;
121+ }
122+ return newEdge ;
123+ } ) ;
117124
118125 const firstEdge = edges [ 0 ] ;
119126 const lastEdge = edges [ edges . length - 1 ] ;
You can’t perform that action at this time.
0 commit comments