Compare commits

...

7 Commits

Author SHA1 Message Date
Tyler Plude
f6d4ff5d75 Adding WIP test 2024-12-09 14:21:07 -08:00
Tyler Plude
fc02be294e Merge branch 'master' into fix-rounding-csv-json-export-testing 2024-12-09 13:14:12 -08:00
Tyler Plude
4c171f4240 Merge branch 'master' into fix-rounding-csv-json-export 2024-12-03 09:17:58 -08:00
Tyler Plude
ab660299ca Fixing table unit test 2024-12-02 12:52:22 -08:00
Tyler Plude
c29f8a4dad Merge branch 'master' into fix-rounding-csv-json-export 2024-12-02 09:46:27 -08:00
Tyler Plude
e32423209d Merge branch 'master' into fix-rounding-csv-json-export 2024-11-27 18:20:16 -08:00
Tyler Plude
8c77704f84 Fix unexpected rounding in csv & json exports when column multiplier is non integral 2024-11-27 18:17:35 -08:00
3 changed files with 40 additions and 3 deletions

View File

@@ -125,7 +125,7 @@
currency (when currency?
(keyword (or currency "USD")))
integral? (isa? (or effective_type base_type) :type/Integer)
integral? (and (isa? (or effective_type base_type) :type/Integer) (integer? scale))
relation? (isa? semantic_type :Relation/*)
percent? (or (isa? semantic_type :type/Percentage) (= number-style "percent"))
scientific? (= number-style "scientific")

View File

@@ -1623,3 +1623,40 @@
["5" "5" "165" "33.0" "11" "55"]
["Grand totals" "25" "490" "19.6" "-5" "55"]]
result))))))))
(deftest table-exports-with-non-integral-scale
(testing "Non integral scale values should be respected in table exports (csv, xlsx, json)"
(mt/dataset test-data
(mt/with-temp [:model/Card card {:display :table
:type :model
:dataset_query {:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)
:expressions {"Quantity Scaled" [:field (mt/id :orders :quantity) {:base-type :type/Integer}]}
:limit 1}}
:visualization_settings {:table.columns
[{:name "ID" :enabled false}
{:name "USER_ID" :enabled false}
{:name "PRODUCT_ID" :enabled false}
{:name "SUBTOTAL" :enabled false}
{:name "TAX" :enabled false}
{:name "TOTAL" :enabled false}
{:name "DISCOUNT" :enabled false}
{:name "CREATED_AT" :enabled false}
{:name "QUANTITY" :enabled true} {:name "QUANTITY_SCALED" :enabled true}]
:column_settings {(format "[\"ref\",[\"field\",%s,null]]" (mt/id :orders :discount))
{:currency_in_header false}
"[\"name\",\"Quantity Scaled\"]"
{:scale 2.134}}}}]
(testing "for csv"
(is (= [(take-last 2 ["ID" "User ID" "Product ID" "Subtotal" "Tax" "Total" "Discount" "Created At" "Quantity" "Quantity Scaled"])
(take-last 2 ["1" "1" "14" "37.65" "2.07" "39.72" "" "February 11, 2019, 9:40 PM" "2" "4.27"])]
(mapv (partial take-last 2) (card-download card {:export-format :json :format-rows true})))))
#_(testing "for json"
(is (= [(take-last 2 ["ID" "User ID" "Product ID" "Subtotal" "Tax" "Total" "Discount" "Created At" "Quantity" "Quantity Scaled"])
(take-last 2 ["1" "1" "14" "37.65" "2.07" "39.72" "" "February 11, 2019, 9:40 PM" "2" "4.27"])]
(card-download card {:export-format :json :format-rows true})))))
#_(testing "for xlsx"
;; the [$$] part will appear as $ when you open the Excel file in a spreadsheet app
(is (= [["Discount"] ["[$$]6.42"]]
(card-download card {:export-format :xlsx :format-rows true})))))))

View File

@@ -132,7 +132,7 @@
(let [doc (render.tu/render-card-as-hickory! card-id)
row-els (hik.s/select (hik.s/tag :tr) doc)]
(is (= [["Eh" "Bee" "Sea" "D" "E"]
["10%" "9E3" "12/10/2022" "---0.12___" "0.667"]]
["10%" "9.00E3" "12/10/2022" "---0.12___" "0.667"]]
(mapv (fn [row-el] (mapcat :content (:content row-el))) row-els)))))
(testing "Site Localization Settings are respected in columns."
(mt/with-temporary-setting-values [custom-formatting {:type/Temporal {:date_style "D/M/YYYY"
@@ -142,7 +142,7 @@
(let [doc (render.tu/render-card-as-hickory! card-id)
row-els (hik.s/select (hik.s/tag :tr) doc)]
(is (= [["Eh" "Bee" "Sea" "D" "E"]
["10%" "9E3" "12-10-2022" "---0,12___" "0,667"]]
["10%" "9,00E3" "12-10-2022" "---0,12___" "0,667"]]
(mapv (fn [row-el] (mapcat :content (:content row-el))) row-els))))))
(testing "Visibility type on Fields is respected."
(let [data-map {:data {:cols [{:name "A"