@@ -447,6 +447,39 @@ def Qux; end
447447 end
448448 end
449449
450+ describe "#more_less_ul" do
451+ def ul ( items )
452+ [ "<ul>" , *items . map { |item | "<li>#{ item } </li>" } , "</ul>" ] . join
453+ end
454+
455+ it "returns a single list when the number of items is <= hard limit" do
456+ _ ( @helpers . more_less_ul ( 1 ..7 , 7 ) ) . must_equal ul ( 1 ..7 )
457+ _ ( @helpers . more_less_ul ( 1 ..7 , 8 ) ) . must_equal ul ( 1 ..7 )
458+
459+ _ ( @helpers . more_less_ul ( 1 ..7 , 6 ..7 ) ) . must_equal ul ( 1 ..7 )
460+ _ ( @helpers . more_less_ul ( 1 ..7 , 6 ..8 ) ) . must_equal ul ( 1 ..7 )
461+
462+ _ ( @helpers . more_less_ul ( 1 ..7 , 7 ..9 ) ) . must_equal ul ( 1 ..7 )
463+ _ ( @helpers . more_less_ul ( 1 ..7 , 8 ..9 ) ) . must_equal ul ( 1 ..7 )
464+ end
465+
466+ it "returns split lists when the number of items is > hard limit" do
467+ _ ( @helpers . more_less_ul ( 1 ..7 , 6 ) ) . must_match %r"#{ ul 1 ..6 } .*<details.+#{ ul 7 ..7 } .*</details>"m
468+ _ ( @helpers . more_less_ul ( 1 ..7 , 5 ) ) . must_match %r"#{ ul 1 ..5 } .*<details.+#{ ul 6 ..7 } .*</details>"m
469+
470+ _ ( @helpers . more_less_ul ( 1 ..7 , 5 ..6 ) ) . must_match %r"#{ ul 1 ..5 } .*<details.+#{ ul 6 ..7 } .*</details>"m
471+ _ ( @helpers . more_less_ul ( 1 ..7 , 4 ..6 ) ) . must_match %r"#{ ul 1 ..4 } .*<details.+#{ ul 5 ..7 } .*</details>"m
472+ end
473+
474+ it "specifies the number of hidden items" do
475+ _ ( @helpers . more_less_ul ( 1 ..7 , 4 ) ) . must_match %r"\b 3 More\b "
476+ end
477+
478+ it "does not escape items" do
479+ _ ( @helpers . more_less_ul ( [ "<a>link</a>" ] , 1 ) ) . must_include "<a>link</a>"
480+ end
481+ end
482+
450483 describe "#method_source_code_and_url" do
451484 before :each do
452485 @helpers . options . github = true
0 commit comments