spec/integration/icon_spec.rb in prawn-icon-2.5.0 vs spec/integration/icon_spec.rb in prawn-icon-3.0.0
- old
+ new
@@ -45,24 +45,32 @@
icon_text = '<icon>fas-info-circle</icon> icon here!'
pdf.text 'Start'
pdf.move_down 10
pdf.text 'More'
pdf.move_down 20
- icon = pdf.icon icon_text, inline_format: true
+ pdf.icon icon_text, inline_format: true
pdf.move_down 30
pdf.text 'End'
+ inspector = PDF::Inspector::Text.analyze(pdf.render)
+ x, y = inspector.positions[2]
- expect(icon.at.first).to eq(0)
- expect(icon.at.last.round).to eq(734)
+ expect(x).to eq(0)
+ expect(y.round).to eq(724)
end
context 'with final_gap: false' do
it 'renders the icon without a final gap' do
- icon = pdf.icon '<icon size="60">far-address-book</icon>',
+ pdf.icon(
+ '<icon size="60">far-address-book</icon>',
inline_format: true,
final_gap: false
- expect(icon.at.last.round).to eq(792)
+ )
+ pdf.text('Hello')
+ inspector = PDF::Inspector::Text.analyze(pdf.render)
+ y = inspector.positions[1].last.round
+
+ expect(y).to eq(723)
end
end
end
context 'without options' do
@@ -100,22 +108,66 @@
expect(icon).to be_a(Prawn::Icon)
end
end
context ':inline_format => true' do
- it 'should return a Prawn::::Text::Formatted::Box instance' do
+ it 'returns nil' do
icon = pdf.make_icon '<icon>far-address-book</icon>', inline_format: true
- expect(icon).to be_a(Prawn::Text::Formatted::Box)
+ expect(icon).to be_nil
end
end
end
describe '::inline_icon' do
- it 'should return a Prawn::Text::Formatted::Box instance' do
+ it 'returns nil' do
icon = pdf.inline_icon '<icon>far-address-book</icon>'
- expect(icon).to be_a(Prawn::Text::Formatted::Box)
+ expect(icon).to be_nil
+ end
+
+ it 'starts a new page if necessary', github_issue: '49' do
+ text = 209.times.map { 'Hello, World!' }.join(' ')
+ pdf.text(text, size: 18)
+ pdf.icon('Hello, <icon>fas-globe</icon>', inline_format: true, size: 18)
+ inspector = PDF::Inspector::Page.analyze(pdf.render)
+
+ expect(inspector.pages.size).to eq(2)
+ end
+ end
+
+ describe '::formatted_icon_box' do
+ it 'returns a Prawn::Text::Formatted::Box instance' do
+ icon_text = <<~CONTENT
+ <icon size="20">fas-broom</icon>
+ <strikethrough>cancel that</strikethrough>
+ <icon>fas-check</icon>
+ CONTENT
+ box = pdf.formatted_icon_box(icon_text, inline_format: true)
+
+ expect(box).to be_a(Prawn::Text::Formatted::Box)
+ end
+
+ it 'accepts an absolute position parameter' do
+ icon_text = 'Hello, <icon>fas-globe</icon>!'
+ pdf.formatted_icon_box(icon_text, inline_format: true, x: 200, y: 100).render
+ inspector = PDF::Inspector::Text.analyze(pdf.render)
+ x, y = inspector.positions[0]
+
+ expect(x).to eq(200)
+ expect(y.round).to eq(90)
+ end
+
+ it 'handles final_gap: false correctly' do
+ icon_text = <<~CONTENT
+ Hello, <icon size="60">fas-globe</icon>
+ Next line.
+ CONTENT
+ pdf.formatted_icon_box(icon_text, inline_format: true, final_gap: false).render
+ inspector = PDF::Inspector::Text.analyze(pdf.render)
+ x = inspector.positions[1].first
+
+ expect(x.round).to eq(34)
end
end
describe '::table_icon' do
context 'inline_format: false (default)' do