@@ -553,3 +553,89 @@ describe('html <img> tag', () => {
553553 } )
554554 } )
555555} )
556+
557+ // Complex situations are tested by the previous `img tag`.
558+ // Here, only the situation where the img tag is replaced with other media tags is supplemented.
559+ //
560+ // And test `aliasSupport` option.
561+ describe ( 'html media tag' , ( ) => {
562+ describe ( 'single-line' , ( ) => {
563+ const source = [
564+ /* src */
565+ // relative paths
566+ '<audio src="./foo.mp3">' ,
567+ '<video src="./foo.mp4">' ,
568+ '<source src="./foo.mp4">' ,
569+ '<audio src="../foo.mp3">' ,
570+ '<video src="../foo.mp4">' ,
571+ '<source src="../foo.mp4">' ,
572+ // absolute paths
573+ '<audio src="/foo.mp3">' ,
574+ '<video src="/foo.mp4">' ,
575+ '<source src="/foo.mp4">' ,
576+ // aliases
577+ '<audio src="@alias/foo.mp3">' ,
578+ '<video src="@alias/foo.mp4">' ,
579+ '<source src="@alias/foo.mp4">' ,
580+ // no-prefix paths
581+ '<audio src="sub2/foo.mp3">' ,
582+ '<video src="sub2/foo.mp4">' ,
583+ '<source src="sub2/foo.mp4">' ,
584+ ]
585+
586+ const TEST_CASES : {
587+ description : string
588+ md : MarkdownIt
589+ env : MarkdownEnv
590+ expected : string [ ]
591+ } [ ] = [
592+ {
593+ description : 'should respect `aliasSupport` option' ,
594+ md : MarkdownIt ( { html : true } ) . use ( assetsPlugin , {
595+ aliasSupport : '@-prefix' ,
596+ } ) ,
597+ env : {
598+ base : '/base/' ,
599+ } ,
600+ expected : [
601+ /* src */
602+ // relative paths
603+ '<audio src="./foo.mp3">' ,
604+ '<video src="./foo.mp4">' ,
605+ '<source src="./foo.mp4">' ,
606+ '<audio src="../foo.mp3">' ,
607+ '<video src="../foo.mp4">' ,
608+ '<source src="../foo.mp4">' ,
609+ // absolute paths
610+ '<audio src="/foo.mp3">' ,
611+ '<video src="/foo.mp4">' ,
612+ '<source src="/foo.mp4">' ,
613+ // aliases
614+ '<audio src="@alias/foo.mp3">' ,
615+ '<video src="@alias/foo.mp4">' ,
616+ '<source src="@alias/foo.mp4">' ,
617+ // no-prefix paths
618+ '<audio src="./sub2/foo.mp3">' ,
619+ '<video src="./sub2/foo.mp4">' ,
620+ '<source src="./sub2/foo.mp4">' ,
621+ ] ,
622+ } ,
623+ ]
624+
625+ TEST_CASES . forEach ( ( { description, md, env, expected } ) => {
626+ it ( description , ( ) => {
627+ // Note: Media tags are blocks.
628+
629+ // block
630+ expect ( md . render ( source . join ( '\n\n' ) , env ) ) . toEqual (
631+ expected . map ( ( item ) => item ) . join ( '\n' ) ,
632+ )
633+
634+ // block with leading white space
635+ expect (
636+ md . render ( source . map ( ( item ) => ` ${ item } ` ) . join ( '\n\n' ) , env ) ,
637+ ) . toEqual ( expected . map ( ( item ) => ` ${ item } ` ) . join ( '\n' ) )
638+ } )
639+ } )
640+ } )
641+ } )
0 commit comments