spreadsheet_architect 3.2.0 → 4.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -0
- data/README.md +57 -69
- data/lib/spreadsheet_architect.rb +5 -0
- data/lib/spreadsheet_architect/axlsx_string_width_patch.rb +23 -0
- data/lib/spreadsheet_architect/class_methods/csv.rb +2 -0
- data/lib/spreadsheet_architect/class_methods/ods.rb +9 -9
- data/lib/spreadsheet_architect/class_methods/xlsx.rb +64 -7
- data/lib/spreadsheet_architect/utils.rb +47 -4
- data/lib/spreadsheet_architect/utils/xlsx.rb +2 -13
- data/lib/spreadsheet_architect/version.rb +1 -1
- data/test/dummy_app/app/assets/config/manifest.js +3 -0
- data/test/dummy_app/config/application.rb +2 -5
- data/test/dummy_app/db/test.sqlite3 +0 -0
- data/test/dummy_app/log/test.log +55968 -64975
- data/test/dummy_app/tmp/3.0.0.pre/integration/alt_xlsx.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/integration/csv.csv +5 -5
- data/test/dummy_app/tmp/3.0.0.pre/integration/ods.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/integration/xlsx.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/kitchen_sink.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/kitchen_sink.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/data.csv +1 -1
- data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/data.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/data.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/empty.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/empty.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/instances.csv +5 -5
- data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/instances.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/instances.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/data.csv +1 -1
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/data.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/data.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/empty.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/empty.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/instances.csv +5 -5
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/instances.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/instances.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/data.csv +1 -1
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/data.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/data.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/empty.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/empty.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/instances.csv +5 -5
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/instances.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/instances.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/data.csv +1 -1
- data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/data.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/data.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/empty.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/empty.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/instances.csv +5 -5
- data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/instances.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/instances.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/data.csv +1 -1
- data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/data.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/data.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/empty.csv +1 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/empty.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/empty.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/instances.csv +5 -5
- data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/instances.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/instances.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/Post/data.csv +1 -1
- data/test/dummy_app/tmp/3.0.0.pre/models/Post/data.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/Post/data.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/Post/empty.csv +0 -1
- data/test/dummy_app/tmp/3.0.0.pre/models/Post/empty.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/Post/empty.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/Post/instances.csv +5 -5
- data/test/dummy_app/tmp/3.0.0.pre/models/Post/instances.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/models/Post/instances.xlsx +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/multi_sheet.ods +0 -0
- data/test/dummy_app/tmp/3.0.0.pre/multi_sheet.xlsx +0 -0
- data/test/test_helper.rb +8 -8
- data/test/unit/exceptions_test.rb +4 -0
- data/test/unit/kitchen_sink_test.rb +14 -8
- data/test/unit/regressions_test.rb +11 -0
- data/test/unit/utils_test.rb +35 -1
- data/test/unit/xlsx_freeze_test.rb +44 -0
- data/test/unit/xlsx_utils_test.rb +0 -21
- metadata +110 -354
- data/lib/spreadsheet_architect/monkey_patches/axlsx_column_width.rb +0 -56
- data/test/custom_assertions.rb +0 -21
- data/test/dummy_app/tmp/2.0.1/integration/alt_xlsx.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/integration/csv.csv +0 -6
- data/test/dummy_app/tmp/2.0.1/integration/ods.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/integration/xlsx.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/kitchen_sink.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/kitchen_sink.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/data.csv +0 -3
- data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/data.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/data.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/empty.csv +0 -1
- data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/empty.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/empty.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/instances.csv +0 -6
- data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/instances.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/instances.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/data.csv +0 -3
- data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/data.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/data.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/empty.csv +0 -0
- data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/empty.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/empty.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/instances.csv +0 -6
- data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/instances.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/instances.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/CustomPost/data.csv +0 -3
- data/test/dummy_app/tmp/2.0.1/models/CustomPost/data.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/CustomPost/data.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/CustomPost/empty.csv +0 -1
- data/test/dummy_app/tmp/2.0.1/models/CustomPost/empty.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/CustomPost/empty.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/CustomPost/instances.csv +0 -6
- data/test/dummy_app/tmp/2.0.1/models/CustomPost/instances.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/CustomPost/instances.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/data.csv +0 -3
- data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/data.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/data.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/empty.csv +0 -1
- data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/empty.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/empty.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/instances.csv +0 -6
- data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/instances.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/instances.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/data.csv +0 -3
- data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/data.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/data.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/empty.csv +0 -1
- data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/empty.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/empty.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/instances.csv +0 -6
- data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/instances.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/instances.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/Post/data.csv +0 -3
- data/test/dummy_app/tmp/2.0.1/models/Post/data.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/Post/data.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/Post/empty.csv +0 -0
- data/test/dummy_app/tmp/2.0.1/models/Post/empty.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/Post/empty.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/models/Post/instances.csv +0 -6
- data/test/dummy_app/tmp/2.0.1/models/Post/instances.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/models/Post/instances.xlsx +0 -0
- data/test/dummy_app/tmp/2.0.1/multi_sheet.ods +0 -0
- data/test/dummy_app/tmp/2.0.1/multi_sheet.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/integration/alt_xlsx.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/integration/csv.csv +0 -6
- data/test/dummy_app/tmp/axlsx-master/integration/ods.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/integration/xlsx.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/kitchen_sink.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/kitchen_sink.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/data.csv +0 -3
- data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/data.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/data.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/empty.csv +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/empty.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/empty.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/instances.csv +0 -6
- data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/instances.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/instances.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/data.csv +0 -3
- data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/data.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/data.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/empty.csv +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/empty.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/empty.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/instances.csv +0 -6
- data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/instances.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/instances.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/CustomPost/data.csv +0 -3
- data/test/dummy_app/tmp/axlsx-master/models/CustomPost/data.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/CustomPost/data.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/CustomPost/empty.csv +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/CustomPost/empty.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/CustomPost/empty.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/CustomPost/instances.csv +0 -6
- data/test/dummy_app/tmp/axlsx-master/models/CustomPost/instances.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/CustomPost/instances.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/data.csv +0 -3
- data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/data.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/data.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/empty.csv +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/empty.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/empty.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/instances.csv +0 -6
- data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/instances.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/instances.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/data.csv +0 -3
- data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/data.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/data.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/empty.csv +0 -1
- data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/empty.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/empty.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/instances.csv +0 -6
- data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/instances.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/instances.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/Post/data.csv +0 -3
- data/test/dummy_app/tmp/axlsx-master/models/Post/data.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/Post/data.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/Post/empty.csv +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/Post/empty.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/Post/empty.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/Post/instances.csv +0 -6
- data/test/dummy_app/tmp/axlsx-master/models/Post/instances.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/models/Post/instances.xlsx +0 -0
- data/test/dummy_app/tmp/axlsx-master/multi_sheet.ods +0 -0
- data/test/dummy_app/tmp/axlsx-master/multi_sheet.xlsx +0 -0
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Id,Name,Content,Age,Created At,Updated At
|
2
|
-
1,,,0,,
|
3
|
-
2,,,1,,
|
4
|
-
3,,,2,,
|
5
|
-
4,,,3,,
|
6
|
-
5,,,4,,
|
2
|
+
1,,,0,,2019-11-27 17:21:37 UTC
|
3
|
+
2,,,1,,2019-11-27 17:21:37 UTC
|
4
|
+
3,,,2,,2019-11-27 17:21:37 UTC
|
5
|
+
4,,,3,,2019-11-27 17:21:37 UTC
|
6
|
+
5,,,4,,2019-11-27 17:21:37 UTC
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Name,Content,Created At
|
2
|
-
0,2,
|
3
|
-
1,3,
|
4
|
-
2,4,
|
5
|
-
3,5,
|
6
|
-
4,6,
|
2
|
+
0,2,2019-11-27 09:52:42 -0800
|
3
|
+
1,3,2019-11-27 09:52:42 -0800
|
4
|
+
2,4,2019-11-27 09:52:42 -0800
|
5
|
+
3,5,2019-11-27 09:52:42 -0800
|
6
|
+
4,6,2019-11-27 09:52:42 -0800
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Name,The Content,Created At,Created At Date,asd
|
2
|
-
0,2,
|
3
|
-
1,3,
|
4
|
-
2,4,
|
5
|
-
3,5,
|
6
|
-
4,6,
|
2
|
+
0,2,2019-11-27 17:52:42 UTC,2019-11-27,tadaaa
|
3
|
+
1,3,2019-11-27 17:52:42 UTC,2019-11-27,tadaaa
|
4
|
+
2,4,2019-11-27 17:52:42 UTC,2019-11-27,tadaaa
|
5
|
+
3,5,2019-11-27 17:52:42 UTC,2019-11-27,tadaaa
|
6
|
+
4,6,2019-11-27 17:52:42 UTC,2019-11-27,tadaaa
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Name,The Content,Created At,Created At Date,asd
|
2
|
-
0,2,
|
3
|
-
1,3,
|
4
|
-
2,4,
|
5
|
-
3,5,
|
6
|
-
4,6,
|
2
|
+
0,2,2019-11-27 17:52:42 UTC,2019-11-27,tadaaa
|
3
|
+
1,3,2019-11-27 17:52:42 UTC,2019-11-27,tadaaa
|
4
|
+
2,4,2019-11-27 17:52:42 UTC,2019-11-27,tadaaa
|
5
|
+
3,5,2019-11-27 17:52:42 UTC,2019-11-27,tadaaa
|
6
|
+
4,6,2019-11-27 17:52:42 UTC,2019-11-27,tadaaa
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Name,Content,Object ID
|
2
|
-
0,2,
|
3
|
-
1,3,
|
4
|
-
2,4,
|
5
|
-
3,5,
|
6
|
-
4,6,
|
2
|
+
0,2,47100396508880
|
3
|
+
1,3,47100396508840
|
4
|
+
2,4,47100396508800
|
5
|
+
3,5,47100396508760
|
6
|
+
4,6,47100396508700
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
|
Binary file
|
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Name,Content,Object ID
|
2
|
-
0,2,
|
3
|
-
1,3,
|
4
|
-
2,4,
|
5
|
-
3,5,
|
6
|
-
4,6,
|
2
|
+
0,2,47100396538300
|
3
|
+
1,3,47100396538260
|
4
|
+
2,4,47100396538220
|
5
|
+
3,5,47100396538080
|
6
|
+
4,6,47100396537920
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
Id,Name,Content,Age,Created At,Updated At
|
Binary file
|
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Id,Name,Content,Age,Created At,Updated At
|
2
|
-
,0,2,,
|
3
|
-
,1,3,,
|
4
|
-
,2,4,,
|
5
|
-
,3,5,,
|
6
|
-
,4,6,,
|
2
|
+
,0,2,,2019-11-27 09:52:42 -0800,
|
3
|
+
,1,3,,2019-11-27 09:52:42 -0800,
|
4
|
+
,2,4,,2019-11-27 09:52:42 -0800,
|
5
|
+
,3,5,,2019-11-27 09:52:42 -0800,
|
6
|
+
,4,6,,2019-11-27 09:52:42 -0800,
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/test/test_helper.rb
CHANGED
@@ -3,7 +3,9 @@ ENV["RAILS_ENV"] = "test"
|
|
3
3
|
require File.expand_path("../dummy_app/config/environment.rb", __FILE__)
|
4
4
|
|
5
5
|
migration_path = Rails.root.join('db/migrate')
|
6
|
-
if ActiveRecord.gem_version >= ::Gem::Version.new("
|
6
|
+
if ActiveRecord.gem_version >= ::Gem::Version.new("6.0.0")
|
7
|
+
ActiveRecord::MigrationContext.new(migration_path, ActiveRecord::SchemaMigration).migrate
|
8
|
+
elsif ActiveRecord.gem_version >= ::Gem::Version.new("5.2.0")
|
7
9
|
ActiveRecord::MigrationContext.new(migration_path).migrate
|
8
10
|
else
|
9
11
|
ActiveRecord::Migrator.migrate(migration_path)
|
@@ -25,8 +27,6 @@ Minitest::Reporters.use!(
|
|
25
27
|
Minitest.backtrace_filter
|
26
28
|
)
|
27
29
|
|
28
|
-
require 'custom_assertions'
|
29
|
-
|
30
30
|
post_count = Post.count
|
31
31
|
if post_count < 5
|
32
32
|
(5 - post_count).times do |i|
|
@@ -34,14 +34,14 @@ if post_count < 5
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
|
38
|
-
if
|
39
|
-
|
37
|
+
caxlsx_spec = Gem.loaded_specs['caxlsx']
|
38
|
+
if caxlsx_spec.source.is_a?(Bundler::Source::Rubygems)
|
39
|
+
caxlsx_version = caxlsx_spec.version.to_s
|
40
40
|
else
|
41
|
-
|
41
|
+
caxlsx_version = 'caxlsx-master'
|
42
42
|
end
|
43
43
|
|
44
|
-
VERSIONED_BASE_PATH = Rails.root.join("tmp/#{
|
44
|
+
VERSIONED_BASE_PATH = Rails.root.join("../../tmp/#{caxlsx_version}")
|
45
45
|
|
46
46
|
### Cleanup old test spreadsheets
|
47
47
|
FileUtils.remove_dir(VERSIONED_BASE_PATH, true)
|
@@ -19,6 +19,10 @@ class ExceptionsTest < ActiveSupport::TestCase
|
|
19
19
|
conditional_row_styles = [{if: true, styles: false}]
|
20
20
|
SpreadsheetArchitect::Utils::XLSX.conditional_styles_for_row(conditional_row_styles, true, true)
|
21
21
|
end
|
22
|
+
|
23
|
+
assert_raise error do
|
24
|
+
SpreadsheetArchitect::Utils.get_options({freeze: {rows: 1}, freeze_headers: true}, SpreadsheetArchitect)
|
25
|
+
end
|
22
26
|
end
|
23
27
|
|
24
28
|
test "NoDataError" do
|
@@ -6,12 +6,13 @@ class KitchenSinkTest < ActiveSupport::TestCase
|
|
6
6
|
@options = {
|
7
7
|
headers: [
|
8
8
|
['Latest Posts'],
|
9
|
-
['Title','Category','Author','Posted on','Earnings']
|
9
|
+
['Title','Category','Author','Posted on','Posted At','Earnings']
|
10
10
|
],
|
11
11
|
data: 50.times.map{|i| [i, "foobar-#{i}", 5.4*i, true, Date.today, Time.now]},
|
12
12
|
header_style: {background_color: "000000", color: "FFFFFF", align: :center, font_size: 12, bold: true},
|
13
13
|
row_style: {background_color: nil, color: "000000", align: :left, font_size: 12},
|
14
|
-
sheet_name: 'Kitchen Sink'
|
14
|
+
sheet_name: 'Kitchen Sink',
|
15
|
+
freeze_headers: true,
|
15
16
|
}
|
16
17
|
end
|
17
18
|
|
@@ -19,7 +20,7 @@ class KitchenSinkTest < ActiveSupport::TestCase
|
|
19
20
|
end
|
20
21
|
|
21
22
|
def test_xlsx
|
22
|
-
@options.merge
|
23
|
+
opts = @options.merge({
|
23
24
|
column_styles: [
|
24
25
|
{columns: 0, styles: {bold: true}},
|
25
26
|
{columns: (1..3), styles: {color: "444444"}},
|
@@ -73,7 +74,7 @@ class KitchenSinkTest < ActiveSupport::TestCase
|
|
73
74
|
})
|
74
75
|
|
75
76
|
# Using Array Data
|
76
|
-
file_data = SpreadsheetArchitect.to_xlsx(
|
77
|
+
file_data = SpreadsheetArchitect.to_xlsx(opts)
|
77
78
|
|
78
79
|
File.open(VERSIONED_BASE_PATH.join("kitchen_sink.xlsx"),'w+b') do |f|
|
79
80
|
f.write file_data
|
@@ -81,12 +82,17 @@ class KitchenSinkTest < ActiveSupport::TestCase
|
|
81
82
|
end
|
82
83
|
|
83
84
|
def test_ods
|
84
|
-
@options.merge
|
85
|
+
opts = @options.merge({
|
86
|
+
headers: [
|
87
|
+
['Latest Posts'],
|
88
|
+
['Title','Category','Author','Boolean','Posted on','Posted At']
|
89
|
+
],
|
90
|
+
data: 50.times.map{|i| [i, "foobar-#{i}", (5.4*i), true, Date.today, Time.now]},
|
85
91
|
column_types: [
|
86
92
|
:string,
|
87
93
|
:float,
|
88
|
-
:
|
89
|
-
:
|
94
|
+
:float,
|
95
|
+
:boolean,
|
90
96
|
:date,
|
91
97
|
:time,
|
92
98
|
nil
|
@@ -94,7 +100,7 @@ class KitchenSinkTest < ActiveSupport::TestCase
|
|
94
100
|
})
|
95
101
|
|
96
102
|
# Using Array Data
|
97
|
-
file_data = SpreadsheetArchitect.to_ods(
|
103
|
+
file_data = SpreadsheetArchitect.to_ods(opts)
|
98
104
|
|
99
105
|
File.open(VERSIONED_BASE_PATH.join("kitchen_sink.ods"),'w+b') do |f|
|
100
106
|
f.write file_data
|
data/test/unit/utils_test.rb
CHANGED
@@ -40,6 +40,9 @@ class UtilsTest < ActiveSupport::TestCase
|
|
40
40
|
|
41
41
|
### using Data option
|
42
42
|
output = klass.get_cell_data(@options.merge(headers: true), SpreadsheetArchitect)
|
43
|
+
assert_equal [[]], output[:headers]
|
44
|
+
|
45
|
+
output = klass.get_cell_data(@options.merge(headers: false), SpreadsheetArchitect)
|
43
46
|
assert_equal false, output[:headers]
|
44
47
|
|
45
48
|
output = klass.get_cell_data(@options.merge(column_types: nil), SpreadsheetArchitect)
|
@@ -153,7 +156,7 @@ class UtilsTest < ActiveSupport::TestCase
|
|
153
156
|
end
|
154
157
|
|
155
158
|
test "stringify_keys" do
|
156
|
-
hash = klass.stringify_keys
|
159
|
+
hash = klass.stringify_keys({})
|
157
160
|
assert_empty hash
|
158
161
|
|
159
162
|
hash = klass.stringify_keys({foo: :bar})
|
@@ -176,4 +179,35 @@ class UtilsTest < ActiveSupport::TestCase
|
|
176
179
|
assert_nil hash[:foo]
|
177
180
|
assert_equal hash['foo']['foo']['foo']['foo'], :bar
|
178
181
|
end
|
182
|
+
|
183
|
+
test "symbolize_keys" do
|
184
|
+
hash = klass.symbolize_keys({})
|
185
|
+
assert_empty hash
|
186
|
+
|
187
|
+
hash = klass.symbolize_keys({'foo' => :bar})
|
188
|
+
assert_nil hash['foo']
|
189
|
+
assert_equal hash[:foo], :bar
|
190
|
+
|
191
|
+
hash = klass.symbolize_keys({'foo' => :bar, bar: :foo})
|
192
|
+
assert_nil hash['foo']
|
193
|
+
assert_equal hash[:foo], :bar
|
194
|
+
|
195
|
+
hash = klass.symbolize_keys({'foo' => {'foo' => :bar}})
|
196
|
+
assert_nil hash['foo']
|
197
|
+
assert_equal hash[:foo][:foo], :bar
|
198
|
+
|
199
|
+
hash = klass.symbolize_keys({'foo' => {'foo' => {'foo' => :bar}}})
|
200
|
+
assert_nil hash['foo']
|
201
|
+
assert_equal hash[:foo][:foo][:foo], :bar
|
202
|
+
end
|
203
|
+
|
204
|
+
test "hash_array_symbolize_keys" do
|
205
|
+
array = klass.hash_array_symbolize_keys([])
|
206
|
+
assert_empty array
|
207
|
+
|
208
|
+
array = klass.hash_array_symbolize_keys([{'foo' => :bar}])
|
209
|
+
assert_nil array[0]['foo']
|
210
|
+
assert_equal array[0][:foo], :bar
|
211
|
+
end
|
212
|
+
|
179
213
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class XlsxFreezeTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@options = {
|
7
|
+
headers: [
|
8
|
+
['Latest Posts'],
|
9
|
+
['Title','Category','Author','Posted on','Posted At','Earnings']
|
10
|
+
],
|
11
|
+
data: 50.times.map{|i| [i, "foobar-#{i}", 5.4*i, true, Date.today, Time.now]},
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
def teardown
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_1
|
19
|
+
opts = @options.merge({
|
20
|
+
freeze: {rows: 1, columns: 1},
|
21
|
+
})
|
22
|
+
|
23
|
+
# Using Array Data
|
24
|
+
file_data = SpreadsheetArchitect.to_xlsx(opts)
|
25
|
+
|
26
|
+
File.open(VERSIONED_BASE_PATH.join("freeze_test_1.xlsx"),'w+b') do |f|
|
27
|
+
f.write file_data
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_2
|
32
|
+
opts = @options.merge({
|
33
|
+
freeze: {rows: (2..4), columns: (2..4)},
|
34
|
+
})
|
35
|
+
|
36
|
+
# Using Array Data
|
37
|
+
file_data = SpreadsheetArchitect.to_xlsx(opts)
|
38
|
+
|
39
|
+
File.open(VERSIONED_BASE_PATH.join("freeze_test_2.xlsx"),'w+b') do |f|
|
40
|
+
f.write file_data
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -113,27 +113,6 @@ class XlsxUtilsTest < ActiveSupport::TestCase
|
|
113
113
|
#end
|
114
114
|
end
|
115
115
|
|
116
|
-
test "symbolize_keys" do
|
117
|
-
hash = klass.symbolize_keys
|
118
|
-
assert_empty hash
|
119
|
-
|
120
|
-
hash = klass.symbolize_keys({'foo' => :bar})
|
121
|
-
assert_nil hash['foo']
|
122
|
-
assert_equal hash[:foo], :bar
|
123
|
-
|
124
|
-
hash = klass.symbolize_keys({'foo' => :bar, bar: :foo})
|
125
|
-
assert_nil hash['foo']
|
126
|
-
assert_equal hash[:foo], :bar
|
127
|
-
|
128
|
-
hash = klass.symbolize_keys({'foo' => {'foo' => :bar}})
|
129
|
-
assert_nil hash['foo']
|
130
|
-
assert_equal hash[:foo][:foo], :bar
|
131
|
-
|
132
|
-
hash = klass.symbolize_keys({'foo' => {'foo' => {'foo' => :bar}}})
|
133
|
-
assert_nil hash['foo']
|
134
|
-
assert_equal hash[:foo][:foo][:foo], :bar
|
135
|
-
end
|
136
|
-
|
137
116
|
test "constants" do
|
138
117
|
assert_equal klass::COL_NAMES.count, 16384
|
139
118
|
assert_equal klass::COL_NAMES.first, 'A'
|