Sha256: 05cf50790f12bee3702d6da36d70f3cf756d2a8e0a14e000fb22c865469a05ac

Contents?: true

Size: 1.93 KB

Versions: 3

Compression:

Stored size: 1.93 KB

Contents

# -*- coding: utf-8 -*-
require 'slim'
require 'spec_helper'

describe Sinatra::Capture do
  subject do
    Sinatra.new do
      enable :inline_templates
      helpers Sinatra::Capture
    end.new!
  end
  Tilt.prefer Tilt::ERBTemplate

  extend Forwardable
  def_delegators :subject, :capture, :capture_later

  def render(engine, template)
    subject.send(:render, engine, template.to_sym).strip.gsub(/\s+/, ' ')
  end

  shared_examples_for "a template language" do |engine|
    lang = engine == :erubis ? :erb : engine
    require "#{engine}"

    it "captures content" do
      expect(render(engine, "simple_#{lang}")).to eq("Say Hello World!")
    end

    it "allows nested captures" do
      expect(render(engine, "nested_#{lang}")).to eq("Say Hello World!")
    end
  end

  describe('haml')   { it_behaves_like "a template language", :haml   }
  describe('slim')   { it_behaves_like "a template language", :slim   }
  describe('erubis') { it_behaves_like "a template language", :erubis }

  describe 'erb' do
    it_behaves_like "a template language", :erb

    it "handles utf-8 encoding" do
      expect(render(:erb, "utf_8")).to eq("UTF-8 –")
    end

    it "handles ISO-8859-1 encoding" do
      expect(render(:erb, "iso_8859_1")).to eq("ISO-8859-1 -")
    end
  end
end

__END__

@@ simple_erb
Say
<% a = capture do %>World<% end %>
Hello <%= a %>!

@@ nested_erb
Say
<% a = capture do %>
  <% b = capture do %>World<% end %>
  <%= b %>!
<% end %>
Hello <%= a.strip %>

@@ simple_slim
| Say 
- a = capture do
  | World
| Hello #{a.strip}!

@@ nested_slim
| Say 
- a = capture do
  - b = capture do
    | World
  | #{b.strip}!
| Hello #{a.strip}

@@ simple_haml
Say
- a = capture do
  World
Hello #{a.strip}!

@@ nested_haml
Say
- a = capture do
  - b = capture do
    World
  #{b.strip}!
Hello #{a.strip}

@@ utf_8
<% a = capture do %>–<% end %>
UTF-8 <%= a %>

@@ iso_8859_1
<% a = capture do %>-<% end %>
ISO-8859-1 <%= a.force_encoding("iso-8859-1") %>

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sinatra-contrib-2.0.0.rc1 spec/capture_spec.rb
sinatra-contrib-2.0.0.beta2 spec/capture_spec.rb
sinatra-contrib-2.0.0.beta1 spec/capture_spec.rb