@@ -298,7 +298,7 @@ defmodule Tests.Delta.Compose do
298298 end
299299 end
300300
301- describe ".compose/2 (custom embeds )" do
301+ describe ".compose/2 (custom delta embed )" do
302302 @ describetag custom_embeds: [ TestEmbed ]
303303
304304 test "retain an embed with a number" do
@@ -329,6 +329,22 @@ defmodule Tests.Delta.Compose do
329329 assert Delta . compose ( a , b ) == expected
330330 end
331331
332+ test "retain newline with an embed" do
333+ a = [ Op . insert ( "\n " ) ]
334+ b = [ Op . retain ( % { "delta" => [ Op . insert ( "b" ) ] } ) ]
335+ expected = [ Op . insert ( % { "delta" => [ Op . insert ( "b" ) ] } ) ]
336+
337+ assert Delta . compose ( a , b ) == expected
338+ end
339+
340+ test "retain string with an embed" do
341+ a = [ Op . insert ( "1\n 2" ) ]
342+ b = [ Op . retain ( 1 ) , Op . retain ( % { "delta" => [ Op . insert ( "b" ) ] } ) ]
343+ expected = [ Op . insert ( "1" ) , Op . insert ( % { "delta" => [ Op . insert ( "b" ) ] } ) , Op . insert ( "2" ) ]
344+
345+ assert Delta . compose ( a , b ) == expected
346+ end
347+
332348 test "delete a retain" do
333349 a = [ Op . retain ( % { "delta" => [ Op . insert ( "a" ) ] } ) ]
334350 b = [ Op . delete ( 1 ) ]
@@ -337,4 +353,58 @@ defmodule Tests.Delta.Compose do
337353 assert Delta . compose ( a , b ) == expected
338354 end
339355 end
356+
357+ describe ".compose/2 (custom map embed)" do
358+ @ describetag custom_embeds: [ MapEmbed ]
359+
360+ test "retain an embed with a number" do
361+ a = [ Op . insert ( % { "map" => "image.png" } ) ]
362+ b = [ Op . retain ( 1 , % { "bold" => true } ) ]
363+ expected = [ Op . insert ( % { "map" => "image.png" } , % { "bold" => true } ) ]
364+
365+ assert Delta . compose ( a , b ) == expected
366+ end
367+
368+ test "retain a number with an embed" do
369+ a = [ Op . retain ( 10 , % { "bold" => true } ) ]
370+ b = [ Op . retain ( % { "map" => "image.png" } ) ]
371+
372+ expected = [
373+ Op . retain ( % { "map" => "image.png" } , % { "bold" => true } ) ,
374+ Op . retain ( 9 , % { "bold" => true } )
375+ ]
376+
377+ assert Delta . compose ( a , b ) == expected
378+ end
379+
380+ test "retain an embed with an embed" do
381+ a = [ Op . retain ( % { "map" => "image1.png" } ) ]
382+ b = [ Op . retain ( % { "map" => "image2.png" } ) ]
383+
384+ assert Delta . compose ( a , b ) == b
385+ end
386+
387+ test "retain newline with an embed" do
388+ a = [ Op . insert ( "\n " ) ]
389+ b = [ Op . retain ( % { "map" => "image.png" } ) ]
390+
391+ assert Delta . compose ( a , b ) == [ Op . insert ( % { "map" => "image.png" } ) ]
392+ end
393+
394+ test "retain string with an embed" do
395+ a = [ Op . insert ( "1\n 2" ) ]
396+ b = [ Op . retain ( 1 ) , Op . retain ( % { "map" => "image.png" } ) ]
397+ expected = [ Op . insert ( "1" ) , Op . insert ( % { "map" => "image.png" } ) , Op . insert ( "2" ) ]
398+
399+ assert Delta . compose ( a , b ) == expected
400+ end
401+
402+ test "delete a retain" do
403+ a = [ Op . retain ( % { "map" => "image.png" } ) ]
404+ b = [ Op . delete ( 1 ) ]
405+ expected = [ Op . delete ( 1 ) ]
406+
407+ assert Delta . compose ( a , b ) == expected
408+ end
409+ end
340410end
0 commit comments