require 'spec_helper' require 'pretty_text' describe PrettyText do describe "Cooking" do it "should support github style code blocks" do PrettyText.cook("``` test ```").should == "
test  \n
" end it "should support quoting [] " do PrettyText.cook("[quote=\"EvilTrout, post:123, topic:456, full:true\"][sam][/quote]").should =~ /\[sam\]/ end it "produces a quote even with new lines in it" do PrettyText.cook("[quote=\"EvilTrout, post:123, topic:456, full:true\"]ddd\n[/quote]").should == "

" end it "should produce a quote" do PrettyText.cook("[quote=\"EvilTrout, post:123, topic:456, full:true\"]ddd[/quote]").should == "

" end it "trims spaces on quote params" do PrettyText.cook("[quote=\"EvilTrout, post:555, topic: 666\"]ddd[/quote]").should == "

" end it "should handle 3 mentions in a row" do PrettyText.cook('@hello @hello @hello').should == "

@hello @hello @hello

" end it "should not do weird @ mention stuff inside a pre block" do PrettyText.cook("``` a @test ```").should == "
a @test  \n
" end it "should sanitize the html" do PrettyText.cook("").should == "alert(42)" end it "should escape html within the code block" do PrettyText.cook("```text
hello
```").should == "
<header>hello</header>  \n
" end it "should support language choices" do PrettyText.cook("```ruby test ```").should == "
test  \n
" end it 'should decorate @mentions' do PrettyText.cook("Hello @eviltrout").should == "

Hello @eviltrout

" end it 'should allow for @mentions to have punctuation' do PrettyText.cook("hello @bob's @bob,@bob; @bob\"").should == "

hello @bob's @bob,@bob; @bob\"

" end it 'should add spoiler tags' do PrettyText.cook("[spoiler]hello[/spoiler]").should == "

hello

" end it "should only detect ``` at the begining of lines" do PrettyText.cook(" ```\n hello\n ```") .should == "
```\nhello\n```\n
" end end describe "Excerpt" do it "should preserve links" do PrettyText.excerpt("cnn",100).should == "cnn" end it "should dump images" do PrettyText.excerpt("",100).should == "[image]" end it "should keep alt tags" do PrettyText.excerpt("car",100).should == "[car]" end it "should keep title tags" do PrettyText.excerpt("",100).should == "[car]" end it "should deal with special keys properly" do PrettyText.excerpt("
",100).should == "" end it "should truncate stuff properly" do PrettyText.excerpt("hello world",5).should == "hello…" end it "should insert a space between to Ps" do PrettyText.excerpt("

a

b

",5).should == "a b " end it "should strip quotes" do PrettyText.excerpt("boom",5).should == "boom" end it "should not count the surrounds of a link" do PrettyText.excerpt("cnn",3).should == "cnn" end it "should truncate links" do PrettyText.excerpt("cnn",2).should == "cn…" end it "should be able to extract links" do PrettyText.extract_links("http://bla.com").to_a.should == ["http://cnn.com"] end it "should not preserve tags in code blocks" do PrettyText.excerpt("
<h3>Hours</h3>
",100).should == "<h3>Hours</h3>" end it "should handle nil" do PrettyText.excerpt(nil,100).should == '' end end describe "apply cdn" do it "should detect bare links to images and apply a CDN" do PrettyText.apply_cdn("hello","http://a.com").should == "hello" end it "should not touch non images" do PrettyText.apply_cdn("hello","http://a.com").should == "hello" end end end