@@ -26,6 +26,50 @@ describe('media.util', () => {
2626 } ,
2727 } ) ;
2828
29+ it ( 'does not transform path if it does not start with media_folder' , ( ) => {
30+ const mockConfig = createMockConfig ( {
31+ collections : [
32+ createMockCollection < UnknownField > ( {
33+ folder : 'base/folder' ,
34+ slug : '{{fields.title}}-{{fields.name}}' ,
35+ fields : [
36+ {
37+ name : 'title' ,
38+ widget : 'string' ,
39+ } ,
40+ {
41+ name : 'name' ,
42+ widget : 'string' ,
43+ } ,
44+ mockBaseImageField ,
45+ ] ,
46+ } ) ,
47+ ] ,
48+ media_folder : '/path/to/media/folder/{{slug}}' ,
49+ public_folder : '/path/to/public/folder/{{slug}}' ,
50+ } ) ;
51+
52+ const mockCollection = mockConfig . collections [ 0 ] ;
53+ const mockImageField = ( mockConfig . collections [ 0 ] as FolderCollection )
54+ . fields [ 3 ] as FileOrImageField ;
55+
56+ const mockEntry = createMockEntry ( {
57+ path : 'path/to/entry/index.md' ,
58+ slug : 'i-am-a-title-fish' ,
59+ data : { title : 'i am a title' , name : 'fish' } ,
60+ } ) ;
61+
62+ expect (
63+ selectMediaFilePublicPath (
64+ mockConfig ,
65+ mockCollection ,
66+ '/some/other/path/image.png' ,
67+ mockEntry ,
68+ mockImageField ,
69+ ) ,
70+ ) . toBe ( '/some/other/path/image.png' ) ;
71+ } ) ;
72+
2973 describe ( 'top level' , ( ) => {
3074 it ( 'should default to top level config media_folder' , ( ) => {
3175 const mockConfig = createMockConfig ( {
@@ -138,6 +182,7 @@ describe('media.util', () => {
138182
139183 const mockEntry = createMockEntry ( {
140184 path : 'path/to/entry/index.md' ,
185+ slug : 'i-am-a-title-fish' ,
141186 data : { title : 'i am a title' , name : 'fish' } ,
142187 } ) ;
143188
@@ -174,6 +219,7 @@ describe('media.util', () => {
174219
175220 const mockEntry = createMockEntry ( {
176221 path : 'path/to/entry/index.md' ,
222+ slug : 'i-am-a-title-fish' ,
177223 data : { title : 'i am a title' , name : 'fish' } ,
178224 } ) ;
179225
@@ -211,6 +257,7 @@ describe('media.util', () => {
211257
212258 const mockEntry = createMockEntry ( {
213259 path : 'path/to/entry/index.md' ,
260+ slug : '' ,
214261 data : { } ,
215262 newRecord : true ,
216263 } ) ;
@@ -305,6 +352,7 @@ describe('media.util', () => {
305352
306353 const mockEntry = createMockEntry ( {
307354 path : 'path/to/entry/index.md' ,
355+ slug : 'i-am-a-title-fish' ,
308356 data : { title : 'i am a title' , name : 'fish' } ,
309357 } ) ;
310358
@@ -341,6 +389,7 @@ describe('media.util', () => {
341389
342390 const mockEntry = createMockEntry ( {
343391 path : 'path/to/entry/index.md' ,
392+ slug : 'i-am-a-title-fish' ,
344393 data : { title : 'i am a title' , name : 'fish' } ,
345394 } ) ;
346395
@@ -378,6 +427,7 @@ describe('media.util', () => {
378427
379428 const mockEntry = createMockEntry ( {
380429 path : 'path/to/entry/index.md' ,
430+ slug : '' ,
381431 data : { } ,
382432 newRecord : true ,
383433 } ) ;
@@ -420,7 +470,7 @@ describe('media.util', () => {
420470 selectMediaFilePublicPath (
421471 mockConfig ,
422472 undefined ,
423- 'image.png' ,
473+ 'path/to/media/folder/ image.png' ,
424474 undefined ,
425475 undefined ,
426476 undefined ,
@@ -438,7 +488,7 @@ describe('media.util', () => {
438488 selectMediaFilePublicPath (
439489 mockConfig ,
440490 undefined ,
441- 'image.png' ,
491+ 'path/to/media/folder/ image.png' ,
442492 undefined ,
443493 undefined ,
444494 undefined ,
@@ -463,7 +513,7 @@ describe('media.util', () => {
463513 selectMediaFilePublicPath (
464514 mockConfig ,
465515 mockCollection ,
466- 'image.png' ,
516+ 'path/to/media/folder/ image.png' ,
467517 mockBaseEntry ,
468518 mockImageField ,
469519 ) ,
@@ -484,7 +534,7 @@ describe('media.util', () => {
484534 selectMediaFilePublicPath (
485535 mockConfig ,
486536 mockCollection ,
487- 'image.png' ,
537+ 'path/to/media/folder/ image.png' ,
488538 mockBaseEntry ,
489539 mockImageField ,
490540 ) ,
@@ -518,7 +568,7 @@ describe('media.util', () => {
518568 selectMediaFilePublicPath (
519569 mockConfig ,
520570 mockCollection ,
521- 'image.png' ,
571+ 'path/to/collection/media/folder/ image.png' ,
522572 mockBaseEntry ,
523573 mockImageField ,
524574 ) ,
@@ -550,7 +600,7 @@ describe('media.util', () => {
550600 selectMediaFilePublicPath (
551601 mockConfig ,
552602 mockCollection ,
553- 'image.png' ,
603+ 'path/to/collection/media/folder/ image.png' ,
554604 mockBaseEntry ,
555605 mockImageField ,
556606 ) ,
@@ -583,7 +633,7 @@ describe('media.util', () => {
583633 selectMediaFilePublicPath (
584634 mockConfig ,
585635 mockCollection ,
586- 'image.png' ,
636+ 'path/to/some/other/media/i-am-a-title/ image.png' ,
587637 mockBaseEntry ,
588638 mockImageField ,
589639 ) ,
@@ -619,14 +669,15 @@ describe('media.util', () => {
619669
620670 const mockEntry = createMockEntry ( {
621671 path : 'path/to/entry/index.md' ,
672+ slug : 'i-am-a-title-fish' ,
622673 data : { title : 'i am a title' , name : 'fish' } ,
623674 } ) ;
624675
625676 expect (
626677 selectMediaFilePublicPath (
627678 mockConfig ,
628679 mockCollection ,
629- 'image.png' ,
680+ 'path/to/some/other/media/i-am-a-title-fish/ image.png' ,
630681 mockEntry ,
631682 mockImageField ,
632683 ) ,
@@ -661,14 +712,15 @@ describe('media.util', () => {
661712
662713 const mockEntry = createMockEntry ( {
663714 path : 'path/to/entry/index.md' ,
715+ slug : 'i-am-a-title-fish' ,
664716 data : { title : 'i am a title' , name : 'fish' } ,
665717 } ) ;
666718
667719 expect (
668720 selectMediaFilePublicPath (
669721 mockConfig ,
670722 mockCollection ,
671- 'image.png' ,
723+ '/path/to/media/folder/i-am-a-title-fish/ image.png' ,
672724 mockEntry ,
673725 mockImageField ,
674726 ) ,
@@ -704,14 +756,15 @@ describe('media.util', () => {
704756
705757 const mockEntry = createMockEntry ( {
706758 path : 'path/to/entry/index.md' ,
759+ slug : 'i-am-a-title-fish' ,
707760 data : { title : 'i am a title' , name : 'fish' } ,
708761 } ) ;
709762
710763 expect (
711764 selectMediaFilePublicPath (
712765 mockConfig ,
713766 mockCollection ,
714- 'image.png' ,
767+ 'path/to/media/folder/i-am-a-title-fish/ image.png' ,
715768 mockEntry ,
716769 mockImageField ,
717770 ) ,
@@ -748,6 +801,7 @@ describe('media.util', () => {
748801
749802 const mockEntry = createMockEntry ( {
750803 path : 'path/to/entry/index.md' ,
804+ slug : '' ,
751805 data : { } ,
752806 newRecord : true ,
753807 } ) ;
@@ -756,7 +810,7 @@ describe('media.util', () => {
756810 selectMediaFilePublicPath (
757811 mockConfig ,
758812 mockCollection ,
759- 'image.png' ,
813+ 'path/to/collection/media/folder/ image.png' ,
760814 mockEntry ,
761815 mockImageField ,
762816 ) ,
@@ -792,7 +846,7 @@ describe('media.util', () => {
792846 selectMediaFilePublicPath (
793847 mockConfig ,
794848 mockCollection ,
795- 'image.png' ,
849+ 'path/to/collection/media/folder/ image.png' ,
796850 mockBaseEntry ,
797851 mockImageField ,
798852 ) ,
@@ -824,7 +878,7 @@ describe('media.util', () => {
824878 selectMediaFilePublicPath (
825879 mockConfig ,
826880 mockCollection ,
827- 'image.png' ,
881+ '/path/to/collection/media/folder/ image.png' ,
828882 mockBaseEntry ,
829883 mockImageField ,
830884 ) ,
@@ -857,7 +911,7 @@ describe('media.util', () => {
857911 selectMediaFilePublicPath (
858912 mockConfig ,
859913 mockCollection ,
860- 'image.png' ,
914+ '/path/to/some/other/media/i-am-a-title/ image.png' ,
861915 mockBaseEntry ,
862916 mockImageField ,
863917 ) ,
@@ -893,14 +947,15 @@ describe('media.util', () => {
893947
894948 const mockEntry = createMockEntry ( {
895949 path : 'path/to/entry/index.md' ,
950+ slug : 'i-am-a-title-fish' ,
896951 data : { title : 'i am a title' , name : 'fish' } ,
897952 } ) ;
898953
899954 expect (
900955 selectMediaFilePublicPath (
901956 mockConfig ,
902957 mockCollection ,
903- 'image.png' ,
958+ '/path/to/some/other/media/i-am-a-title-fish/ image.png' ,
904959 mockEntry ,
905960 mockImageField ,
906961 ) ,
@@ -935,14 +990,15 @@ describe('media.util', () => {
935990
936991 const mockEntry = createMockEntry ( {
937992 path : 'path/to/entry/index.md' ,
993+ slug : 'i-am-a-title-fish' ,
938994 data : { title : 'i am a title' , name : 'fish' } ,
939995 } ) ;
940996
941997 expect (
942998 selectMediaFilePublicPath (
943999 mockConfig ,
9441000 mockCollection ,
945- 'image.png' ,
1001+ '/path/to/media/folder/i-am-a-title-fish/ image.png' ,
9461002 mockEntry ,
9471003 mockImageField ,
9481004 ) ,
@@ -978,14 +1034,15 @@ describe('media.util', () => {
9781034
9791035 const mockEntry = createMockEntry ( {
9801036 path : 'path/to/entry/index.md' ,
1037+ slug : 'i-am-a-title-fish' ,
9811038 data : { title : 'i am a title' , name : 'fish' } ,
9821039 } ) ;
9831040
9841041 expect (
9851042 selectMediaFilePublicPath (
9861043 mockConfig ,
9871044 mockCollection ,
988- 'image.png' ,
1045+ '/path/to/media/folder/i-am-a-title-fish/ image.png' ,
9891046 mockEntry ,
9901047 mockImageField ,
9911048 ) ,
@@ -1021,7 +1078,8 @@ describe('media.util', () => {
10211078 . fields [ 3 ] as FileOrImageField ;
10221079
10231080 const mockEntry = createMockEntry ( {
1024- path : 'path/to/entry/index.md' ,
1081+ path : 'path/to/entry/DRAFT_MEDIA_FILES/index.md' ,
1082+ slug : '' ,
10251083 data : { } ,
10261084 newRecord : true ,
10271085 } ) ;
@@ -1030,11 +1088,11 @@ describe('media.util', () => {
10301088 selectMediaFilePublicPath (
10311089 mockConfig ,
10321090 mockCollection ,
1033- 'image.png' ,
1091+ '/path/to/collection/media/folder/DRAFT_MEDIA_FILES/ image.png' ,
10341092 mockEntry ,
10351093 mockImageField ,
10361094 ) ,
1037- ) . toBe ( '/path/to/collection/public/folder/image.png' ) ;
1095+ ) . toBe ( '/path/to/collection/public/folder/DRAFT_MEDIA_FILES/ image.png' ) ;
10381096 } ) ;
10391097 } ) ;
10401098 } ) ;
0 commit comments