require "assert" require 'osheet/xmlss_writer' class Osheet::Xmlss::Writer class UnitTests < Assert::Context desc "the xmlss writer" before do @writer = Osheet::XmlssWriter.new @workbook = Osheet::Workbook.new(@writer) end subject { @writer } should have_reader :style_cache, :xmlss_workbook should have_instance_methods :bind, :to_s, :to_data, :to_file should have_instance_methods :worksheet, :column, :row, :cell should have_instance_methods :style should have_instance_methods :name should have_instance_methods :width, :height should have_instance_methods :autofit, :autofit?, :hidden, :hidden? should have_instance_methods :data, :href, :formula should have_instance_methods :index, :rowspan, :colspan end class WorkbookTests < UnitTests before do @workbook.worksheet("testsheet1") end should "not allow multiple worksheets with the same name" do assert_raises ArgumentError do subject.worksheet(Osheet::Worksheet.new("testsheet1")) end assert_nothing_raised do subject.worksheet(Osheet::Worksheet.new("testsheet2")) subject.worksheet(Osheet::Worksheet.new) { subject.name 'testsheet3' } subject.worksheet(Osheet::Worksheet.new) { subject.name 'testsheet4' } end end end class ToFileTests < UnitTests desc "used with a workbook" before do Osheet::Workbook.new(@writer) { title "written" worksheet { name "Test!" column row { cell { data 1 format :number } } } } end should "write workbook markup" do assert_equal "1
", @writer.to_s end should "return string xml data" do xml_data = subject.to_s assert_kind_of ::String, xml_data assert_match /^<\?xml/, xml_data assert_equal xml_data, subject.to_data end should "write xml data to a file path" do path = subject.to_file("./tmp/base_test.xls") assert_kind_of ::String, path assert_equal './tmp/base_test.xls', path assert File.exists?(path) File.open(path) do |f| assert_equal subject.to_data, f.read end end end end