Sha256: d2a097ceb181279393b9bd80e3fee6a0e794b0df0e742ca86ed4811ddc7e4b5c

Contents?: true

Size: 1.63 KB

Versions: 7

Compression:

Stored size: 1.63 KB

Contents

require 'spec_helper'

describe 'Axlsx template handler' do

  AB = ActionView::Template::Handlers::AxlsxBuilder
  VT = Struct.new(:source)

  let( :handler ) { AB.new }

  let( :template ) do
    VT.new("wb = xlsx_package.workbook;\nwb.add_worksheet(name: 'Test') do |sheet|\n\tsheet.add_row ['one', 'two', 'three']\n\tsheet.add_row ['a', 'b', 'c']\nend\n")
  end

  context "Rails #{Rails.version}" do
    # for testing if the author is set
    # before do
      # Rails.stub_chain(:application, :config, :axlsx_author).and_return( 'Elmer Fudd' )
    # end

    it "has xlsx format" do
      if Rails::VERSION::MAJOR >= 6
        expect(handler.default_format).to eq(mime_type.symbol)
      else
        expect(handler.default_format).to eq(mime_type)
      end
    end

    it "compiles to an excel spreadsheet when passing in a source" do
      xlsx_package, wb = nil
      source = "wb = xlsx_package.workbook;\nwb.add_worksheet(name: 'Test') do |sheet|\n\tsheet.add_row ['four', 'five', 'six']\n\tsheet.add_row ['d', 'e', 'f']\nend\n"
      eval( AB.new.call template, source )
      xlsx_package.serialize('/tmp/axlsx_temp.xlsx')
      expect{ wb = Roo::Excelx.new('/tmp/axlsx_temp.xlsx') }.to_not raise_error
      expect(wb.cell(2,3)).to eq('f')
    end

    it "compiles to an excel spreadsheet when inferring source from template " do
      xlsx_package, wb = nil
      eval( AB.new.call template )
      xlsx_package.serialize('/tmp/axlsx_temp.xlsx')
      expect{ wb = Roo::Excelx.new('/tmp/axlsx_temp.xlsx') }.to_not raise_error
      expect(wb.cell(2,3)).to eq('c')
    end

    #TODO:
    # Test if author field is set - does roo parse that?
  end
end

Version data entries

7 entries across 7 versions & 3 rubygems

Version Path
cm-admin-1.5.22 vendor/bundle/ruby/3.3.0/gems/caxlsx_rails-0.6.3/spec/axlsx_builder_spec.rb
cm-admin-1.5.21 vendor/bundle/ruby/3.3.0/gems/caxlsx_rails-0.6.3/spec/axlsx_builder_spec.rb
cm-admin-1.5.20 vendor/bundle/ruby/3.3.0/gems/caxlsx_rails-0.6.3/spec/axlsx_builder_spec.rb
caxlsx_rails-0.6.3 spec/axlsx_builder_spec.rb
caxlsx_rails-0.6.2 spec/axlsx_builder_spec.rb
axlsx_rails-0.6.1 spec/axlsx_builder_spec.rb
axlsx_rails-0.6.0 spec/axlsx_builder_spec.rb