@@ -631,6 +631,21 @@ describe("Spreadsheet Pivot", () => {
631
631
) ;
632
632
} ) ;
633
633
634
+ test ( "Sum with a field that contains a string should work" , ( ) => {
635
+ const model = createModelWithPivot ( "A1:I5" ) ;
636
+ updatePivot ( model , "1" , {
637
+ columns : [ ] ,
638
+ rows : [ ] ,
639
+ measures : [ { id : "Expected Revenue:sum" , fieldName : "Expected Revenue" , aggregator : "sum" } ] ,
640
+ } ) ;
641
+ setCellContent ( model , "A26" , `=pivot(1)` ) ;
642
+ expect ( getCellContent ( model , "B28" ) ) . toBe ( "$17,500.00" ) ;
643
+
644
+ expect ( getCellContent ( model , "F2" ) ) . toBe ( "$2,000.00" ) ;
645
+ setCellContent ( model , "F2" , "Hello" ) ;
646
+ expect ( getCellContent ( model , "B28" ) ) . toBe ( "$15,500.00" ) ;
647
+ } ) ;
648
+
634
649
test ( "quarter_number should be supported" , ( ) => {
635
650
const model = createModelWithPivot ( "A1:I5" ) ;
636
651
updatePivot ( model , "1" , {
@@ -878,15 +893,38 @@ describe("Spreadsheet Pivot", () => {
878
893
expect ( getEvaluatedCell ( model , "A27" ) . value ) . toBe ( aggregatedValue ) ;
879
894
} ) ;
880
895
896
+ test . each ( [
897
+ [ "sum" , 15 ] ,
898
+ [ "count" , 3 ] ,
899
+ [ "count_distinct" , 3 ] ,
900
+ [ "max" , 10 ] ,
901
+ [ "min" , 5 ] ,
902
+ [ "avg" , 7.5 ] ,
903
+ ] ) ( "PIVOT.VALUE measure mixing text and number %s grand total" , ( aggregator , aggregatedValue ) => {
904
+ const grid = {
905
+ A1 : "Name" ,
906
+ A2 : "Alice" ,
907
+ A3 : "5" ,
908
+ A4 : "10" ,
909
+ } ;
910
+ const model = createModelFromGrid ( grid ) ;
911
+ addPivot ( model , "A1:A4" , {
912
+ columns : [ ] ,
913
+ rows : [ ] ,
914
+ measures : [ { id : `Name:${ aggregator } ` , fieldName : "Name" , aggregator } ] ,
915
+ } ) ;
916
+ setCellContent ( model , "A27" , `=PIVOT.VALUE(1, "Name:${ aggregator } ")` ) ;
917
+ expect ( getEvaluatedCell ( model , "A27" ) . value ) . toBe ( aggregatedValue ) ;
918
+ } ) ;
919
+
881
920
test ( "min and max aggregate format is inferred" , ( ) => {
882
921
// prettier-ignore
883
922
const grid = {
884
923
A1 : "Name" , B1 : "Revenue" ,
885
- A2 : "Alice" , B2 : "22 " ,
924
+ A2 : "Alice" , B2 : "Hi " ,
886
925
A3 : "Bob" , B3 : "5" ,
887
926
} ;
888
927
const model = createModelFromGrid ( grid ) ;
889
- setFormat ( model , "B2" , "[$€]#,##0" ) ;
890
928
setFormat ( model , "B3" , "[$$]#,##0" ) ;
891
929
addPivot ( model , "A1:B3" , {
892
930
columns : [ ] ,
@@ -898,7 +936,7 @@ describe("Spreadsheet Pivot", () => {
898
936
} ) ;
899
937
setCellContent ( model , "A27" , '=PIVOT.VALUE(1, "Revenue:max")' ) ;
900
938
setCellContent ( model , "A28" , '=PIVOT.VALUE(1, "Revenue:min")' ) ;
901
- expect ( getEvaluatedCell ( model , "A27" ) . format ) . toBe ( "[$€ ]#,##0" ) ;
939
+ expect ( getEvaluatedCell ( model , "A27" ) . format ) . toBe ( "[$$ ]#,##0" ) ;
902
940
expect ( getEvaluatedCell ( model , "A28" ) . format ) . toBe ( "[$$]#,##0" ) ;
903
941
} ) ;
904
942
@@ -1993,37 +2031,6 @@ describe("Spreadsheet Pivot", () => {
1993
2031
expect ( model . getters . getPivotCoreDefinition ( "1" ) ) . toBeTruthy ( ) ;
1994
2032
expect ( model . getters . getPivot ( "1" ) ) . toBeTruthy ( ) ;
1995
2033
} ) ;
1996
-
1997
- test ( "char dimension supports mix of number and texts" , ( ) => {
1998
- // prettier-ignore
1999
- const grid = {
2000
- A1 : "Customer" , B1 : "Price" , C1 : "=PIVOT(1)" ,
2001
- A2 : "Alice" , B2 : "10" ,
2002
- A3 : "" , B3 : "20" ,
2003
- A4 : "1" , B4 : "30" ,
2004
- A5 : "2" , B5 : "40" ,
2005
- A6 : "2" , B6 : "50" ,
2006
- A7 : '="1"' , B7 : "60" ,
2007
- } ;
2008
- const model = createModelFromGrid ( grid ) ;
2009
- setFormat ( model , "A6" , "m/d/yyyy" ) ;
2010
- addPivot ( model , "A1:B7" , {
2011
- rows : [ { fieldName : "Customer" , order : "asc" } ] ,
2012
- columns : [ ] ,
2013
- measures : [ { id : "Price:sum" , fieldName : "Price" , aggregator : "sum" } ] ,
2014
- } ) ;
2015
- // prettier-ignore
2016
- expect ( getEvaluatedGrid ( model , "C1:D8" ) ) . toEqual ( [
2017
- [ "(#1) Pivot" , "Total" ] ,
2018
- [ "" , "Price" ] ,
2019
- [ "1" , "90" ] ,
2020
- [ "1/1/1900" , "50" ] ,
2021
- [ "2" , "40" ] ,
2022
- [ "Alice" , "10" ] ,
2023
- [ "(Undefined)" , "20" ] ,
2024
- [ "Total" , "210" ] ,
2025
- ] ) ;
2026
- } ) ;
2027
2034
} ) ;
2028
2035
2029
2036
describe ( "Spreadsheet arguments parsing" , ( ) => {
0 commit comments