Skip to content

Commit

Permalink
Update specs
Browse files Browse the repository at this point in the history
  • Loading branch information
ahangarha committed Jul 2, 2023
1 parent a531bfc commit fa767ff
Show file tree
Hide file tree
Showing 2 changed files with 190 additions and 171 deletions.
178 changes: 7 additions & 171 deletions spec/bidify_spec.rb
Original file line number Diff line number Diff line change
@@ -1,181 +1,17 @@
# frozen_string_literal: true

require 'bidify'
require 'bidify/html_string_bidifier'

describe 'Bidify' do
describe '#bidify' do
it 'bidifies a single paragraph' do
input = '<p>some text</p>'
expected_output = '<p dir="auto">some text</p>'
it '#bidify_html_string calls HtmlStringBidifier#apply with the given input' do
input = '<p>some text</p>'

actual_output = Bidify.bidify(input)
html_string_bidifier = instance_spy(Bidify::HtmlStringBidifier)
allow(Bidify::HtmlStringBidifier).to receive(:new).and_return(html_string_bidifier)

expect(actual_output).to eq expected_output
end
Bidify.bidify_html_string(input)

it 'bidifies all non-list tags in bidifiable tags list' do
input = <<~HTML
<div>Content</div>
<h1>Content</h1>
<h2>Content</h2>
<h3>Content</h3>
<h4>Content</h4>
<h5>Content</h5>
<h6>Content</h6>
<p>Content</p>
<blockquote>Content</blockquote>
HTML

expected_output = <<~HTML
<div dir="auto">Content</div>
<h1 dir="auto">Content</h1>
<h2 dir="auto">Content</h2>
<h3 dir="auto">Content</h3>
<h4 dir="auto">Content</h4>
<h5 dir="auto">Content</h5>
<h6 dir="auto">Content</h6>
<p dir="auto">Content</p>
<blockquote dir="auto">Content</blockquote>
HTML

actual_output = Bidify.bidify(input)

expect(actual_output).to eq expected_output
end

it 'bidifies non list nested elements and ignore the first inner element' do
input = <<~HTML
<blockquote>
<p>Item 1</p>
<p>Item 2</p>
</blockquote>
HTML

expected_output = <<~HTML
<blockquote dir="auto">
<p>Item 1</p>
<p dir="auto">Item 2</p>
</blockquote>
HTML

actual_output = Bidify.bidify(input)

expect(actual_output).to eq expected_output
end

it "doesn't bidify li elements by default" do
input = <<~HTML
<ul>
<li>
Item 1
<p>with paragraph</p>
</li>
<li>
<p>Paragram at the begining of</p>
Item 2
</li>
</ul>
HTML

expected_output = <<~HTML
<ul dir="auto">
<li>
Item 1
<p dir="auto">with paragraph</p>
</li>
<li>
<p>Paragram at the begining of</p>
Item 2
</li>
</ul>
HTML

actual_output = Bidify.bidify(input)

expect(actual_output).to eq expected_output
end

it 'bidifies non-list nested elements with plain text as the first content' do
input = <<~HTML
<blockquote>
blah
<p>Item 1</p>
<p>Item 2</p>
</blockquote>
HTML

expected_output = <<~HTML
<blockquote dir="auto">
blah
<p dir="auto">Item 1</p>
<p dir="auto">Item 2</p>
</blockquote>
HTML

actual_output = Bidify.bidify(input)

expect(actual_output).to eq expected_output
end

it 'bidifies non-list nested elements and ignores html comments' do
input = <<~HTML
<blockquote>
<!-- comment -->
<p>Item 1</p>
<p>Item 2</p>
</blockquote>
HTML

expected_output = <<~HTML
<blockquote dir="auto">
<!-- comment -->
<p>Item 1</p>
<p dir="auto">Item 2</p>
</blockquote>
HTML

actual_output = Bidify.bidify(input)

expect(actual_output).to eq expected_output
end

it 'skips tags not included in bidifiable tags by default' do
input = <<~HTML
<span>Not getting affected</span>
<img src="image.png">
<main>content</main>
<section>content</section>
<aside>content</aside>
<a>content</a>
HTML

expected_output = input

actual_output = Bidify.bidify(input)

expect(actual_output).to eq expected_output
end

it 'skips blank lines' do
input = <<~HTML
<blockquote>
<p>Item 1</p>
<p>Item 2</p>
</blockquote>
HTML

expected_output = <<~HTML
<blockquote dir="auto">
<p>Item 1</p>
<p dir="auto">Item 2</p>
</blockquote>
HTML

actual_output = Bidify.bidify(input)

expect(actual_output).to eq expected_output
end
expect(html_string_bidifier).to have_received(:apply).with(input)
end
end
183 changes: 183 additions & 0 deletions spec/html_string_bidifier_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
# frozen_string_literal: true

require 'bidify'

describe 'Bidify' do
describe '::StringHtmlBidifier.apply' do
let(:bidifier) { Bidify::HtmlStringBidifier.new }

it 'bidifies a single paragraph' do
input = '<p>some text</p>'
expected_output = '<p dir="auto">some text</p>'

actual_output = bidifier.apply(input)

expect(actual_output).to eq expected_output
end

it 'bidifies all non-list tags in bidifiable tags list' do
input = <<~HTML
<div>Content</div>
<h1>Content</h1>
<h2>Content</h2>
<h3>Content</h3>
<h4>Content</h4>
<h5>Content</h5>
<h6>Content</h6>
<p>Content</p>
<blockquote>Content</blockquote>
HTML

expected_output = <<~HTML
<div dir="auto">Content</div>
<h1 dir="auto">Content</h1>
<h2 dir="auto">Content</h2>
<h3 dir="auto">Content</h3>
<h4 dir="auto">Content</h4>
<h5 dir="auto">Content</h5>
<h6 dir="auto">Content</h6>
<p dir="auto">Content</p>
<blockquote dir="auto">Content</blockquote>
HTML

actual_output = bidifier.apply(input)

expect(actual_output).to eq expected_output
end

it 'bidifies non list nested elements and ignore the first inner element' do
input = <<~HTML
<blockquote>
<p>Item 1</p>
<p>Item 2</p>
</blockquote>
HTML

expected_output = <<~HTML
<blockquote dir="auto">
<p>Item 1</p>
<p dir="auto">Item 2</p>
</blockquote>
HTML

actual_output = bidifier.apply(input)

expect(actual_output).to eq expected_output
end

it "doesn't bidify li elements by default" do
input = <<~HTML
<ul>
<li>
Item 1
<p>with paragraph</p>
</li>
<li>
<p>Paragram at the begining of</p>
Item 2
</li>
</ul>
HTML

expected_output = <<~HTML
<ul dir="auto">
<li>
Item 1
<p dir="auto">with paragraph</p>
</li>
<li>
<p>Paragram at the begining of</p>
Item 2
</li>
</ul>
HTML

actual_output = bidifier.apply(input)

expect(actual_output).to eq expected_output
end

it 'bidifies non-list nested elements with plain text as the first content' do
input = <<~HTML
<blockquote>
blah
<p>Item 1</p>
<p>Item 2</p>
</blockquote>
HTML

expected_output = <<~HTML
<blockquote dir="auto">
blah
<p dir="auto">Item 1</p>
<p dir="auto">Item 2</p>
</blockquote>
HTML

actual_output = bidifier.apply(input)

expect(actual_output).to eq expected_output
end

it 'bidifies non-list nested elements and ignores html comments' do
input = <<~HTML
<blockquote>
<!-- comment -->
<p>Item 1</p>
<p>Item 2</p>
</blockquote>
HTML

expected_output = <<~HTML
<blockquote dir="auto">
<!-- comment -->
<p>Item 1</p>
<p dir="auto">Item 2</p>
</blockquote>
HTML

actual_output = bidifier.apply(input)

expect(actual_output).to eq expected_output
end

it 'skips tags not included in bidifiable tags by default' do
input = <<~HTML
<span>Not getting affected</span>
<img src="image.png">
<main>content</main>
<section>content</section>
<aside>content</aside>
<a>content</a>
HTML

expected_output = input

actual_output = bidifier.apply(input)

expect(actual_output).to eq expected_output
end

it 'skips blank lines' do
input = <<~HTML
<blockquote>
<p>Item 1</p>
<p>Item 2</p>
</blockquote>
HTML

expected_output = <<~HTML
<blockquote dir="auto">
<p>Item 1</p>
<p dir="auto">Item 2</p>
</blockquote>
HTML

actual_output = bidifier.apply(input)

expect(actual_output).to eq expected_output
end
end
end

0 comments on commit fa767ff

Please sign in to comment.