require 'spec_helper'
describe Slacken do
describe '#translate' do
subject { described_class.translate(source) }
context 'when h1 is given' do
let(:source) do
<<-EOS.unindent
heading italic bold
EOS
end
it 'wraps inner text with "*"' do
should eq '*heading _italic_ bold*'
end
end
context 'when p is given' do
let(:source) { 'hello world
' }
it 'returns inner text' do
should eq "hello world"
end
end
context 'when br is given' do
let(:source) { 'hello
world
' }
it 'converts br into new line char' do
should eq "hello\nworld"
end
end
context 'when em is given' do
let(:source) { 'italic
' }
it 'wraps inner text with "_"' do
should eq '_italic_'
end
end
context 'when string is given' do
let(:source) { 'bold
' }
it 'wraps inner text with "*"' do
should eq '*bold*'
end
end
context 'when code is given' do
let(:source) { 'code
' }
it 'wraps inner text with "`"' do
should eq '`code`'
end
end
context 'when emoji img is given' do
let(:source) do
<<-EOS.unindent
hello
world
EOS
end
it 'replaces img elements with corresponding emoji notation' do
should eq 'hello :eyes: world :bowtie:'
end
end
context 'when nested ul, ol and li elements are given' do
let(:source) do
<<-EOS.unindent
- リスト1
- リスト2
- リスト2-1
EOS
end
it 'converts to list notation' do
should eq <<-EOS.unindent.chomp
1. リスト1
• リスト1-1
• リスト1-2
2. リスト2
1. リスト2-1
EOS
end
end
context 'when task lists are given' do
let(:source) do
<<-EOS.unindent
EOS
end
it 'converts to list notation with ascii checkbox' do
should eq <<-EOS.unindent.chomp
• [x] Checked item
• [ ] Unchecked item
EOS
end
end
context 'when dl is given' do
let(:source) do
<<-EOS.unindent
- 定義語リストとは?
- こんなかんじで単語の意味を説明していくリストです。
- 他の単語
- ここに説明を書く
EOS
end
it 'converts to list notation' do
should eq <<-EOS.unindent.chomp
• 定義語リストとは?
• こんなかんじで単語の意味を説明していくリストです。
• 他の単語
• ここに説明を書く
EOS
end
end
context 'when blockquote is given' do
let(:source) do
<<-EOS.unindent
この文字列は引用されたものです
インデントされているはず
これはもインデントされている
これはインデントされない
EOS
end
it 'inserts ">" to each lines' do
should eq <<-EOS.unindent.chomp
> この文字列は引用されたものです
> インデントされているはず
> これはもインデントされている
これはインデントされない
EOS
end
end
context 'when code block is given' do
let(:source) do
<<-EOS.unindent
class Klass
def method
puts 'method called!'
end
end
EOS
end
it 'wraps inner text with "```"' do
should eq <<-EOS.unindent.chomp
```class Klass
def method
puts 'method called!'
end
end
```
EOS
end
end
context 'when table is given' do
let(:source) do
<<-EOS.unindent
Header1 |
Header2 |
Cell1 |
Cell2 |
hello |
world |
EOS
end
it 'converts html to table notation' do
should eq <<-EOS.unindent.chomp
+-------+-------+
|Header1|Header2|
+-------+-------+
|Cell1 |Cell2 |
|hello |world |
+-------+-------+
EOS
end
end
context 'when table with empty td is given' do
let(:source) do
<<-EOS.unindent
EOS
end
it 'converts html to table notation' do
should eq <<-EOS.unindent.chomp
+-------+-------+
|Header1|Header2|
+-------+-------+
|A | |
|B |C |
+-------+-------+
EOS
end
end
context 'when img is given' do
let(:source) { "" }
let(:src) { 'http://cdn.qiita.com/logo.png' }
let(:alt) { 'Qiita logo' }
it 'convert inner text to img notation' do
should eq "<#{src}|#{alt}>"
end
end
context 'when img in a is given' do
let(:source) { "
" }
let(:src) { 'http://cdn.qiita.com/logo.png' }
let(:alt) { 'Qiita logo' }
it 'ignores the link' do
should eq "<#{src}|#{alt}>"
end
end
context 'when a is given' do
let(:source) { 'qiita
' }
it 'converts to link notation' do
should eq ""
end
end
context 'when hr is given' do
let(:source) do
<<-EOS.unindent
before
after
EOS
end
it 'converts to "-----------"' do
should eq <<-EOS.unindent.chomp
before
-----------
after
EOS
end
end
context 'when del is given' do
let(:source) { 'ignore' }
it 'returns inner text' do
should eq 'ignore'
end
end
end
end