Sha256: 5c72193aafc6b06abb921d07d86b882f35a24fe771cf9309ebbedfed6164f8c8

Contents?: true

Size: 1.77 KB

Versions: 24

Compression:

Stored size: 1.77 KB

Contents

require 'contest'
require 'tilt'

begin
  if RUBY_VERSION >= '1.9.0'
    require 'csv'
  else
    require 'fastercsv'
  end

  class CSVTemplateTest < Test::Unit::TestCase

    test "registered for '.rcsv' files" do
      assert Tilt.mappings['rcsv'].include?(Tilt::CSVTemplate)
    end

    test "compiles and evaluates the template on #render" do
      template = Tilt::CSVTemplate.new { "csv << ['hello', 'world']" }
      assert_equal "hello,world\n", template.render
    end

    test "can be rendered more than once" do
      template = Tilt::CSVTemplate.new { "csv << [1,2,3]" }
      3.times { assert_equal "1,2,3\n", template.render }
    end

    test "can pass locals" do
      template = Tilt::CSVTemplate.new { 'csv << [1, name]' }
      assert_equal "1,Joe\n", template.render(Object.new, :name => 'Joe')
    end

    test "evaluating in an object scope" do
      template = Tilt::CSVTemplate.new { 'csv << [1, @name]' }
      scope = Object.new
      scope.instance_variable_set :@name, 'Joe'
      assert_equal "1,Joe\n", template.render(scope)
    end

    test "backtrace file and line reporting" do
      data = File.read(__FILE__).split("\n__END__\n").last
      template = Tilt::CSVTemplate.new('test.csv') { data }
      begin
        template.render
        fail 'should have raised an exception'
      rescue => boom
        assert_kind_of NameError, boom
        line = boom.backtrace.grep(/^test\.csv:/).first
        assert line, "Backtrace didn't contain test.csv"
        file, line, meth = line.split(":")
        assert_equal '4', line
      end
    end

  end

rescue LoadError => boom
  warn "Tilt::CSVTemplate (disabled) please install 'fastercsv' if using ruby 1.8.x"
end


__END__
# header
csv << ['Type', 'Age']

raise NameError

# rows
csv << ['Frog', 2]
csv << ['Cat', 5]

Version data entries

24 entries across 23 versions & 9 rubygems

Version Path
arcabouco-0.2.13 vendor/bundle/gems/tilt-1.4.1/test/tilt_csv_test.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/tilt-1.4.1/test/tilt_csv_test.rb
solidus_backend-1.0.0.pre3 vendor/bundle/gems/tilt-1.4.1/test/tilt_csv_test.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/tilt-1.4.1/test/tilt_csv_test.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/tilt-1.4.1/test/tilt_csv_test.rb
mango-0.8.0 vendor/bundler/ruby/2.1.0/gems/tilt-1.4.1/test/tilt_csv_test.rb
mango-0.7.1 vendor/bundler/ruby/2.0.0/gems/tilt-1.4.1/test/tilt_csv_test.rb
mango-0.7.0 vendor/bundler/ruby/2.0.0/gems/tilt-1.4.1/test/tilt_csv_test.rb
challah-1.0.0 vendor/bundle/gems/tilt-1.4.1/test/tilt_csv_test.rb
swipe-rails-0.0.5 vendor/bundle/gems/tilt-1.4.1/test/tilt_csv_test.rb
font-awesome-rails-3.1.1.2 vendor/ruby/1.9.1/gems/tilt-1.3.7/test/tilt_csv_test.rb
font-awesome-rails-3.1.1.1 vendor/ruby/1.9.1/gems/tilt-1.3.7/test/tilt_csv_test.rb
challah-1.0.0.beta3 vendor/bundle/gems/tilt-1.3.7/test/tilt_csv_test.rb
challah-1.0.0.beta3 vendor/bundle/gems/tilt-1.4.1/test/tilt_csv_test.rb
tilt-1.4.1 test/tilt_csv_test.rb
tilt-1.4.0 test/tilt_csv_test.rb
fc-webicons-0.0.4 vendor/bundle/ruby/1.9.1/gems/tilt-1.3.6/test/tilt_csv_test.rb
challah-1.0.0.beta2 vendor/bundle/gems/tilt-1.3.7/test/tilt_csv_test.rb
challah-1.0.0.beta vendor/bundle/gems/tilt-1.3.6/test/tilt_csv_test.rb
tilt-1.3.7 test/tilt_csv_test.rb