diff options
Diffstat (limited to 'test/formatters/test_csv.rb')
| -rw-r--r-- | test/formatters/test_csv.rb | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/test/formatters/test_csv.rb b/test/formatters/test_csv.rb new file mode 100644 index 0000000..a4443f4 --- /dev/null +++ b/test/formatters/test_csv.rb @@ -0,0 +1,119 @@ +require "test_helper" + +class TestRooFormatterCSV < Minitest::Test + def test_date_time_to_csv + with_each_spreadsheet(name: "time-test") do |workbook| + Dir.mktmpdir do |tempdir| + csv_output = File.join(tempdir, "time_test.csv") + assert workbook.to_csv(csv_output) + assert File.exist?(csv_output) + assert_equal "", `diff --strip-trailing-cr #{TESTDIR}/time-test.csv #{csv_output}` + # --strip-trailing-cr is needed because the test-file use 0A and + # the test on an windows box generates 0D 0A as line endings + end + end + end + + def test_boolean_to_csv + with_each_spreadsheet(name: "boolean") do |workbook| + Dir.mktmpdir do |tempdir| + csv_output = File.join(tempdir,"boolean.csv") + assert workbook.to_csv(csv_output) + assert File.exist?(csv_output) + assert_equal "", `diff --strip-trailing-cr #{TESTDIR}/boolean.csv #{csv_output}` + # --strip-trailing-cr is needed because the test-file use 0A and + # the test on an windows box generates 0D 0A as line endings + end + end + end + + def test_link_to_csv + with_each_spreadsheet(name: "link", format: :excelx) do |workbook| + Dir.mktmpdir do |tempdir| + csv_output = File.join(tempdir, "link.csv") + assert workbook.to_csv(csv_output) + assert File.exist?(csv_output) + assert_equal "", `diff --strip-trailing-cr #{TESTDIR}/link.csv #{csv_output}` + # --strip-trailing-cr is needed because the test-file use 0A and + # the test on an windows box generates 0D 0A as line endings + end + end + end + + # "/tmp/xxxx" darf man unter Windows nicht verwenden, weil das nicht erkannt + # wird. + # Besser: Methode um temporaeres Dir. portabel zu bestimmen + def test_huge_document_to_csv + skip_long_test + + original_csv_path = File.join(TESTDIR, "Bibelbund.csv") + with_each_spreadsheet(name: "Bibelbund", format: [:openoffice, :excelx]) do |workbook| + Dir.mktmpdir do |tempdir| + new_csv_path = File.join(tempdir, "Bibelbund.csv") + assert_equal "Tagebuch des Sekret\303\244rs. Letzte Tagung 15./16.11.75 Schweiz", workbook.cell(45, "A") + assert_equal "Tagebuch des Sekret\303\244rs. Nachrichten aus Chile", workbook.cell(46, "A") + assert_equal "Tagebuch aus Chile Juli 1977", workbook.cell(55, "A") + assert workbook.to_csv(new_csv_path) + assert File.exist?(new_csv_path) + assert FileUtils.identical?(original_csv_path, new_csv_path), "error in class #{workbook.class}" + end + end + end + + def test_bug_empty_sheet + with_each_spreadsheet(name: "formula", format: [:openoffice, :excelx]) do |workbook| + workbook.default_sheet = "Sheet3" # is an empty sheet + Dir.mktmpdir do |tempdir| + workbook.to_csv(File.join(tempdir, "emptysheet.csv")) + assert_equal "", `cat #{File.join(tempdir, "emptysheet.csv")}` + end + end + end + + def test_bug_quotes_excelx + skip_long_test + # TODO: run this test with a much smaller document + with_each_spreadsheet(name: "Bibelbund", format: [:openoffice, :excelx]) do |workbook| + workbook.default_sheet = workbook.sheets.first + assert_equal( + 'Einflüsse der neuen Theologie in "de gereformeerde Kerken van Nederland"', + workbook.cell("A", 76) + ) + workbook.to_csv("csv#{$$}") + assert_equal( + 'Einflüsse der neuen Theologie in "de gereformeerde Kerken van Nederland"', + workbook.cell("A", 78) + ) + File.delete_if_exist("csv#{$$}") + end + end + + def test_bug_datetime_to_csv + with_each_spreadsheet(name: "datetime") do |workbook| + Dir.mktmpdir do |tempdir| + datetime_csv_file = File.join(tempdir, "datetime.csv") + + assert workbook.to_csv(datetime_csv_file) + assert File.exist?(datetime_csv_file) + assert_equal "", file_diff("#{TESTDIR}/so_datetime.csv", datetime_csv_file) + end + end + end + + def test_true_class + assert_equal "true", cell_to_csv(1, 1) + end + + def test_false_class + assert_equal "false", cell_to_csv(2, 1) + end + + def test_date_class + assert_equal "2017-01-01", cell_to_csv(3, 1) + end + + def cell_to_csv(row, col) + filename = File.join(TESTDIR, "formula_cell_types.xlsx") + Roo::Spreadsheet.open(filename).send("cell_to_csv", row, col, "Sheet1") + end +end |
