2021-12-30 11:12:05 -08:00
require " rails_helper "
describe MarkdownHelper , :type = > :helper do
before do
stub_const ( " APP_CONFIG " , {
'hostname' = > 'example.com' ,
'https' = > true ,
'items_per_page' = > 5 ,
'allowed_hosts' = > [
'twitter.com'
]
} )
end
describe '#markdown' do
it 'should return the expected text' do
expect ( markdown ( '**Strong text**' ) ) . to eq ( '<p><strong>Strong text</strong></p>' )
end
it 'should transform mentions into links' do
expect ( markdown ( '@jake_weary' ) ) . to eq ( '<p><a href="/jake_weary">@jake_weary</a></p>' )
end
end
describe '#strip_markdown' do
it 'should not return formatted text' do
expect ( strip_markdown ( '**Strong text**' ) ) . to eq ( 'Strong text' )
end
end
describe '#twitter_markdown' do
context 'mentioned user has Twitter connected' do
let ( :user ) { FactoryBot . create ( :user ) }
let ( :service ) { Services :: Twitter . create ( user : user ) }
before do
service . nickname = 'test'
service . save!
end
it 'should transform a internal mention to a Twitter mention' do
expect ( twitter_markdown ( " @ #{ user . screen_name } " ) ) . to eq ( '@test' )
end
end
context 'mentioned user doesnt have Twitter connected' do
it 'should not transform the mention' do
expect ( twitter_markdown ( '@test' ) ) . to eq ( 'test' )
end
end
end
describe '#question_markdown' do
it 'should link allowed links without the linkfilter' do
2021-12-31 13:24:15 -08:00
expect ( question_markdown ( 'https://twitter.com/retrospring' ) ) . to eq ( '<p><a href="https://twitter.com/retrospring" target="_blank" rel="nofollow">https://twitter.com/retrospring</a></p>' )
2021-12-30 11:12:05 -08:00
end
it 'should link untrusted links with the linkfilter' do
2021-12-31 13:24:15 -08:00
expect ( question_markdown ( 'https://rrerr.net' ) ) . to eq ( '<p><a href="/linkfilter?url=https%3A%2F%2Frrerr.net" target="_blank" rel="nofollow">https://rrerr.net</a></p>' )
end
it 'should not process any markup aside of links' do
expect ( question_markdown ( '**your account has been disabled**, [click here to enable it again](https://evil.example.com)' ) ) . to eq ( '<p>**your account has been disabled**, [click here to enable it again](<a href="/linkfilter?url=https%3A%2F%2Fevil.example.com" target="_blank" rel="nofollow">https://evil.example.com</a>)</p>' )
2021-12-30 11:12:05 -08:00
end
end
describe '#raw_markdown' do
it 'should return the expected text' do
expect ( raw_markdown ( '# Heading' ) ) . to eq ( " <h1>Heading</h1> \n " )
end
end
describe '#get_markdown' do
it 'should return the contents of the specified file' do
expect ( get_markdown ( 'spec/fixtures/markdown/test.md' ) ) . to eq ( " # Heading " )
end
it 'should return an error message on error' do
expect ( get_markdown ( 'non/existant/path.md' ) ) . to eq ( " # Error reading #{ Rails . root } /non/existant/path.md " )
end
end
describe '#markdown_io' do
it 'should return the expected text' do
expect ( markdown_io ( 'spec/fixtures/markdown/io.md' ) ) . to eq ( '<p><strong>Strong text</strong></p>' )
end
end
describe '#strip_markdown_io' do
it 'should return the expected text' do
expect ( strip_markdown_io ( 'spec/fixtures/markdown/io.md' ) ) . to eq ( 'Strong text' )
end
end
describe '#twitter_markdown_io' do
let ( :user ) { FactoryBot . create ( :user ) }
let ( :service ) { Services :: Twitter . create ( user : user ) }
before do
user . screen_name = 'test'
user . save!
service . nickname = 'ObamaGaming'
service . save!
end
it 'should return the expected text' do
expect ( twitter_markdown_io ( 'spec/fixtures/markdown/twitter.md' ) ) . to eq ( '@ObamaGaming' )
end
end
describe '#raw_markdown_io' do
it 'should return the expected text' do
expect ( raw_markdown_io ( 'spec/fixtures/markdown/test.md' ) ) . to eq ( " <h1>Heading</h1> \n " )
end
end
end