diff --git a/.tool-versions b/.tool-versions index c6f9668..631ddf7 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ -erlang 20.0 -elixir 1.9.0-otp-20 +erlang 21.0 +elixir 1.9.0-otp-21 diff --git a/native/xler_native/src/lib.rs b/native/xler_native/src/lib.rs index e65c719..9df46dc 100644 --- a/native/xler_native/src/lib.rs +++ b/native/xler_native/src/lib.rs @@ -1,6 +1,6 @@ #[macro_use] extern crate rustler; -#[macro_use] extern crate rustler_codegen; -#[macro_use] extern crate lazy_static; +extern crate rustler_codegen; +extern crate lazy_static; extern crate calamine; use rustler::{Env, NifResult, Encoder, Term, SchedulerFlags}; diff --git a/test/data/sample.xlsx b/test/data/sample.xlsx new file mode 100644 index 0000000..f049f34 Binary files /dev/null and b/test/data/sample.xlsx differ diff --git a/test/xler_test.exs b/test/xler_test.exs index d413949..25cfc8d 100644 --- a/test/xler_test.exs +++ b/test/xler_test.exs @@ -1,8 +1,39 @@ defmodule XlerTest do use ExUnit.Case - doctest Xler + # doctest Xler - test "greets the world" do - assert Xler.hello() == :world + def file(), do: File.cwd!() <> "/test/data/sample.xlsx" + + test "can read worksheets from xlsx file" do + assert Xler.worksheets(file()) == {:ok, ["Sheet1"]} + end + + test "gets a list of data returned via the worksheet name" do + {:ok, data} = Xler.parse(file(), "Sheet1") + + assert length(data) == 701 + end + + test "returns the correct first row" do + {:ok, data} = Xler.parse(file(), "Sheet1") + + assert data |> List.first() == [ + "Segment", + "Country", + "Product", + "Discount Band", + "Units Sold", + "Manufacturing Price", + "Sale Price", + "Gross Sales", + "Discounts", + " Sales", + "COGS", + "Profit", + "Date", + "Month Number", + "Month Name", + "Year" + ] end end