spreadsheet_architect 4.2.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -1
  3. data/README.md +10 -14
  4. data/lib/spreadsheet_architect/class_methods/ods.rb +18 -8
  5. data/lib/spreadsheet_architect/class_methods/xlsx.rb +76 -32
  6. data/lib/spreadsheet_architect/exceptions.rb +30 -13
  7. data/lib/spreadsheet_architect/utils/ods.rb +66 -0
  8. data/lib/spreadsheet_architect/utils/xlsx.rb +29 -8
  9. data/lib/spreadsheet_architect/utils.rb +13 -38
  10. data/lib/spreadsheet_architect/version.rb +1 -1
  11. data/lib/spreadsheet_architect.rb +3 -2
  12. data/test/dummy_app/app/controllers/spreadsheets_controller.rb +1 -1
  13. data/test/dummy_app/config/application.rb +4 -12
  14. data/test/dummy_app/config/routes.rb +1 -1
  15. data/test/dummy_app/db/test.sqlite3 +0 -0
  16. data/test/dummy_app/log/test.log +79842 -63691
  17. data/test/dummy_app/tmp/2.0.1/integration/alt_xlsx.xlsx +0 -0
  18. data/test/dummy_app/tmp/2.0.1/integration/csv.csv +6 -0
  19. data/test/dummy_app/tmp/2.0.1/integration/ods.ods +0 -0
  20. data/test/dummy_app/tmp/2.0.1/integration/xlsx.xlsx +0 -0
  21. data/test/dummy_app/tmp/2.0.1/kitchen_sink.ods +0 -0
  22. data/test/dummy_app/tmp/2.0.1/kitchen_sink.xlsx +0 -0
  23. data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/data.csv +3 -0
  24. data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/data.ods +0 -0
  25. data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/data.xlsx +0 -0
  26. data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/empty.csv +1 -0
  27. data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/empty.ods +0 -0
  28. data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/empty.xlsx +0 -0
  29. data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/instances.csv +6 -0
  30. data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/instances.ods +0 -0
  31. data/test/dummy_app/tmp/2.0.1/models/ActiveModelObject/instances.xlsx +0 -0
  32. data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/data.csv +3 -0
  33. data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/data.ods +0 -0
  34. data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/data.xlsx +0 -0
  35. data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/empty.csv +0 -0
  36. data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/empty.ods +0 -0
  37. data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/empty.xlsx +0 -0
  38. data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/instances.csv +6 -0
  39. data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/instances.ods +0 -0
  40. data/test/dummy_app/tmp/2.0.1/models/CustomColumnsMethodPost/instances.xlsx +0 -0
  41. data/test/dummy_app/tmp/2.0.1/models/CustomPost/data.csv +3 -0
  42. data/test/dummy_app/tmp/2.0.1/models/CustomPost/data.ods +0 -0
  43. data/test/dummy_app/tmp/2.0.1/models/CustomPost/data.xlsx +0 -0
  44. data/test/dummy_app/tmp/2.0.1/models/CustomPost/empty.csv +1 -0
  45. data/test/dummy_app/tmp/2.0.1/models/CustomPost/empty.ods +0 -0
  46. data/test/dummy_app/tmp/2.0.1/models/CustomPost/empty.xlsx +0 -0
  47. data/test/dummy_app/tmp/2.0.1/models/CustomPost/instances.csv +6 -0
  48. data/test/dummy_app/tmp/2.0.1/models/CustomPost/instances.ods +0 -0
  49. data/test/dummy_app/tmp/2.0.1/models/CustomPost/instances.xlsx +0 -0
  50. data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/data.csv +3 -0
  51. data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/data.ods +0 -0
  52. data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/data.xlsx +0 -0
  53. data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/empty.csv +1 -0
  54. data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/empty.ods +0 -0
  55. data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/empty.xlsx +0 -0
  56. data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/instances.csv +6 -0
  57. data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/instances.ods +0 -0
  58. data/test/dummy_app/tmp/2.0.1/models/LegacyPlainRubyObject/instances.xlsx +0 -0
  59. data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/data.csv +3 -0
  60. data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/data.ods +0 -0
  61. data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/data.xlsx +0 -0
  62. data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/empty.csv +1 -0
  63. data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/empty.ods +0 -0
  64. data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/empty.xlsx +0 -0
  65. data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/instances.csv +6 -0
  66. data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/instances.ods +0 -0
  67. data/test/dummy_app/tmp/2.0.1/models/PlainRubyObject/instances.xlsx +0 -0
  68. data/test/dummy_app/tmp/2.0.1/models/Post/data.csv +3 -0
  69. data/test/dummy_app/tmp/2.0.1/models/Post/data.ods +0 -0
  70. data/test/dummy_app/tmp/2.0.1/models/Post/data.xlsx +0 -0
  71. data/test/dummy_app/tmp/2.0.1/models/Post/empty.csv +0 -0
  72. data/test/dummy_app/tmp/2.0.1/models/Post/empty.ods +0 -0
  73. data/test/dummy_app/tmp/2.0.1/models/Post/empty.xlsx +0 -0
  74. data/test/dummy_app/tmp/2.0.1/models/Post/instances.csv +6 -0
  75. data/test/dummy_app/tmp/2.0.1/models/Post/instances.ods +0 -0
  76. data/test/dummy_app/tmp/2.0.1/models/Post/instances.xlsx +0 -0
  77. data/test/dummy_app/tmp/2.0.1/multi_sheet.ods +0 -0
  78. data/test/dummy_app/tmp/2.0.1/multi_sheet.xlsx +0 -0
  79. data/test/dummy_app/tmp/3.0.0.pre/integration/alt_xlsx.xlsx +0 -0
  80. data/test/dummy_app/tmp/3.0.0.pre/integration/csv.csv +5 -5
  81. data/test/dummy_app/tmp/3.0.0.pre/integration/ods.ods +0 -0
  82. data/test/dummy_app/tmp/3.0.0.pre/integration/xlsx.xlsx +0 -0
  83. data/test/dummy_app/tmp/3.0.0.pre/kitchen_sink.ods +0 -0
  84. data/test/dummy_app/tmp/3.0.0.pre/kitchen_sink.xlsx +0 -0
  85. data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/data.csv +1 -1
  86. data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/data.ods +0 -0
  87. data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/data.xlsx +0 -0
  88. data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/empty.ods +0 -0
  89. data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/empty.xlsx +0 -0
  90. data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/instances.csv +5 -5
  91. data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/instances.ods +0 -0
  92. data/test/dummy_app/tmp/3.0.0.pre/models/ActiveModelObject/instances.xlsx +0 -0
  93. data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/data.csv +1 -1
  94. data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/data.ods +0 -0
  95. data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/data.xlsx +0 -0
  96. data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/empty.ods +0 -0
  97. data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/empty.xlsx +0 -0
  98. data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/instances.csv +5 -5
  99. data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/instances.ods +0 -0
  100. data/test/dummy_app/tmp/3.0.0.pre/models/CustomColumnsMethodPost/instances.xlsx +0 -0
  101. data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/data.csv +1 -1
  102. data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/data.ods +0 -0
  103. data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/data.xlsx +0 -0
  104. data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/empty.ods +0 -0
  105. data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/empty.xlsx +0 -0
  106. data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/instances.csv +5 -5
  107. data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/instances.ods +0 -0
  108. data/test/dummy_app/tmp/3.0.0.pre/models/CustomPost/instances.xlsx +0 -0
  109. data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/data.csv +1 -1
  110. data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/data.ods +0 -0
  111. data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/data.xlsx +0 -0
  112. data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/empty.ods +0 -0
  113. data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/empty.xlsx +0 -0
  114. data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/instances.csv +5 -5
  115. data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/instances.ods +0 -0
  116. data/test/dummy_app/tmp/3.0.0.pre/models/LegacyPlainRubyObject/instances.xlsx +0 -0
  117. data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/data.csv +1 -1
  118. data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/data.ods +0 -0
  119. data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/data.xlsx +0 -0
  120. data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/empty.csv +0 -1
  121. data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/empty.ods +0 -0
  122. data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/empty.xlsx +0 -0
  123. data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/instances.csv +5 -5
  124. data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/instances.ods +0 -0
  125. data/test/dummy_app/tmp/3.0.0.pre/models/PlainRubyObject/instances.xlsx +0 -0
  126. data/test/dummy_app/tmp/3.0.0.pre/models/Post/data.csv +1 -1
  127. data/test/dummy_app/tmp/3.0.0.pre/models/Post/data.ods +0 -0
  128. data/test/dummy_app/tmp/3.0.0.pre/models/Post/data.xlsx +0 -0
  129. data/test/dummy_app/tmp/3.0.0.pre/models/Post/empty.csv +1 -0
  130. data/test/dummy_app/tmp/3.0.0.pre/models/Post/empty.ods +0 -0
  131. data/test/dummy_app/tmp/3.0.0.pre/models/Post/empty.xlsx +0 -0
  132. data/test/dummy_app/tmp/3.0.0.pre/models/Post/instances.csv +5 -5
  133. data/test/dummy_app/tmp/3.0.0.pre/models/Post/instances.ods +0 -0
  134. data/test/dummy_app/tmp/3.0.0.pre/models/Post/instances.xlsx +0 -0
  135. data/test/dummy_app/tmp/3.0.0.pre/multi_sheet.ods +0 -0
  136. data/test/dummy_app/tmp/3.0.0.pre/multi_sheet.xlsx +0 -0
  137. data/test/dummy_app/tmp/axlsx-master/integration/alt_xlsx.xlsx +0 -0
  138. data/test/dummy_app/tmp/axlsx-master/integration/csv.csv +6 -0
  139. data/test/dummy_app/tmp/axlsx-master/integration/ods.ods +0 -0
  140. data/test/dummy_app/tmp/axlsx-master/integration/xlsx.xlsx +0 -0
  141. data/test/dummy_app/tmp/axlsx-master/kitchen_sink.ods +0 -0
  142. data/test/dummy_app/tmp/axlsx-master/kitchen_sink.xlsx +0 -0
  143. data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/data.csv +4 -0
  144. data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/data.ods +0 -0
  145. data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/data.xlsx +0 -0
  146. data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/empty.csv +1 -0
  147. data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/empty.ods +0 -0
  148. data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/empty.xlsx +0 -0
  149. data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/instances.csv +6 -0
  150. data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/instances.ods +0 -0
  151. data/test/dummy_app/tmp/axlsx-master/models/ActiveModelObject/instances.xlsx +0 -0
  152. data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/data.csv +4 -0
  153. data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/data.ods +0 -0
  154. data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/data.xlsx +0 -0
  155. data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/empty.csv +1 -0
  156. data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/empty.ods +0 -0
  157. data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/empty.xlsx +0 -0
  158. data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/instances.csv +6 -0
  159. data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/instances.ods +0 -0
  160. data/test/dummy_app/tmp/axlsx-master/models/CustomColumnsMethodPost/instances.xlsx +0 -0
  161. data/test/dummy_app/tmp/axlsx-master/models/CustomPost/data.csv +4 -0
  162. data/test/dummy_app/tmp/axlsx-master/models/CustomPost/data.ods +0 -0
  163. data/test/dummy_app/tmp/axlsx-master/models/CustomPost/data.xlsx +0 -0
  164. data/test/dummy_app/tmp/axlsx-master/models/CustomPost/empty.csv +1 -0
  165. data/test/dummy_app/tmp/axlsx-master/models/CustomPost/empty.ods +0 -0
  166. data/test/dummy_app/tmp/axlsx-master/models/CustomPost/empty.xlsx +0 -0
  167. data/test/dummy_app/tmp/axlsx-master/models/CustomPost/instances.csv +6 -0
  168. data/test/dummy_app/tmp/axlsx-master/models/CustomPost/instances.ods +0 -0
  169. data/test/dummy_app/tmp/axlsx-master/models/CustomPost/instances.xlsx +0 -0
  170. data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/data.csv +4 -0
  171. data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/data.ods +0 -0
  172. data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/data.xlsx +0 -0
  173. data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/empty.csv +1 -0
  174. data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/empty.ods +0 -0
  175. data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/empty.xlsx +0 -0
  176. data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/instances.csv +6 -0
  177. data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/instances.ods +0 -0
  178. data/test/dummy_app/tmp/axlsx-master/models/LegacyPlainRubyObject/instances.xlsx +0 -0
  179. data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/data.csv +4 -0
  180. data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/data.ods +0 -0
  181. data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/data.xlsx +0 -0
  182. data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/empty.csv +1 -0
  183. data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/empty.ods +0 -0
  184. data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/empty.xlsx +0 -0
  185. data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/instances.csv +6 -0
  186. data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/instances.ods +0 -0
  187. data/test/dummy_app/tmp/axlsx-master/models/PlainRubyObject/instances.xlsx +0 -0
  188. data/test/dummy_app/tmp/axlsx-master/models/Post/data.csv +4 -0
  189. data/test/dummy_app/tmp/axlsx-master/models/Post/data.ods +0 -0
  190. data/test/dummy_app/tmp/axlsx-master/models/Post/data.xlsx +0 -0
  191. data/test/dummy_app/tmp/axlsx-master/models/Post/empty.csv +1 -0
  192. data/test/dummy_app/tmp/axlsx-master/models/Post/empty.ods +0 -0
  193. data/test/dummy_app/tmp/axlsx-master/models/Post/empty.xlsx +0 -0
  194. data/test/dummy_app/tmp/axlsx-master/models/Post/instances.csv +6 -0
  195. data/test/dummy_app/tmp/axlsx-master/models/Post/instances.ods +0 -0
  196. data/test/dummy_app/tmp/axlsx-master/models/Post/instances.xlsx +0 -0
  197. data/test/dummy_app/tmp/axlsx-master/multi_sheet.ods +0 -0
  198. data/test/dummy_app/tmp/axlsx-master/multi_sheet.xlsx +0 -0
  199. data/test/integration/application_test.rb +8 -16
  200. data/test/models/all_models_test.rb +15 -19
  201. data/test/test_helper.rb +38 -9
  202. data/test/unit/ods/general_test.rb +121 -0
  203. data/test/unit/{formats_test.rb → rails/formats_test.rb} +1 -1
  204. data/test/unit/{exceptions_test.rb → spreadsheet_architect/exceptions_test.rb} +19 -15
  205. data/test/unit/{general_test.rb → spreadsheet_architect/spreadsheet_architect_test.rb} +3 -3
  206. data/test/unit/spreadsheet_architect/utils/ods_test.rb +58 -0
  207. data/test/unit/{xlsx_utils_test.rb → spreadsheet_architect/utils/xlsx_test.rb} +13 -21
  208. data/test/unit/{utils_test.rb → spreadsheet_architect/utils_test.rb} +12 -35
  209. data/test/unit/xlsx/freeze_test.rb +79 -0
  210. data/test/unit/xlsx/general_test.rb +199 -0
  211. metadata +381 -128
  212. data/test/dummy_app/config/environments/development.rb +0 -30
  213. data/test/dummy_app/config/environments/production.rb +0 -60
  214. data/test/unit/kitchen_sink_test.rb +0 -110
  215. data/test/unit/multi_sheet_test.rb +0 -29
  216. data/test/unit/options_test.rb +0 -9
  217. data/test/unit/xlsx_freeze_test.rb +0 -44
@@ -1,30 +0,0 @@
1
- Dummy::Application.configure do
2
- # Settings specified here will take precedence over those in config/application.rb
3
-
4
- # In the development environment your application's code is reloaded on
5
- # every request. This slows down response time but is perfect for development
6
- # since you don't have to restart the web server when you make code changes.
7
- config.cache_classes = false
8
-
9
- # Log error messages when you accidentally call methods on nil.
10
- config.whiny_nils = true
11
-
12
- # Show full error reports and disable caching
13
- config.consider_all_requests_local = true
14
- config.action_controller.perform_caching = false
15
-
16
- # Don't care if the mailer can't send
17
- config.action_mailer.raise_delivery_errors = false
18
-
19
- # Print deprecation notices to the Rails logger
20
- config.active_support.deprecation = :log
21
-
22
- # Only use best-standards-support built into browsers
23
- config.action_dispatch.best_standards_support = :builtin
24
-
25
- # Do not compress assets
26
- config.assets.compress = false
27
-
28
- # Expands the lines which load the assets
29
- config.assets.debug = true
30
- end
@@ -1,60 +0,0 @@
1
- Dummy::Application.configure do
2
- # Settings specified here will take precedence over those in config/application.rb
3
-
4
- # Code is not reloaded between requests
5
- config.cache_classes = true
6
-
7
- # Full error reports are disabled and caching is turned on
8
- config.consider_all_requests_local = false
9
- config.action_controller.perform_caching = true
10
-
11
- # Disable Rails's static asset server (Apache or nginx will already do this)
12
- config.serve_static_files = false
13
-
14
- # Compress JavaScripts and CSS
15
- config.assets.compress = true
16
-
17
- # Don't fallback to assets pipeline if a precompiled asset is missed
18
- config.assets.compile = false
19
-
20
- # Generate digests for assets URLs
21
- config.assets.digest = true
22
-
23
- # Defaults to Rails.root.join("public/assets")
24
- # config.assets.manifest = YOUR_PATH
25
-
26
- # Specifies the header that your server uses for sending files
27
- # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
28
- # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
29
-
30
- # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
31
- # config.force_ssl = true
32
-
33
- # See everything in the log (default is :info)
34
- # config.log_level = :debug
35
-
36
- # Use a different logger for distributed setups
37
- # config.logger = SyslogLogger.new
38
-
39
- # Use a different cache store in production
40
- # config.cache_store = :mem_cache_store
41
-
42
- # Enable serving of images, stylesheets, and JavaScripts from an asset server
43
- # config.action_controller.asset_host = "http://assets.example.com"
44
-
45
- # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
46
- # config.assets.precompile += %w( search.js )
47
-
48
- # Disable delivery errors, bad email addresses will be ignored
49
- # config.action_mailer.raise_delivery_errors = false
50
-
51
- # Enable threaded mode
52
- # config.threadsafe!
53
-
54
- # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
55
- # the I18n.default_locale when a translation can not be found)
56
- config.i18n.fallbacks = true
57
-
58
- # Send deprecation notices to registered listeners
59
- config.active_support.deprecation = :notify
60
- end
@@ -1,110 +0,0 @@
1
- require "test_helper"
2
-
3
- class KitchenSinkTest < 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
- header_style: {background_color: "000000", color: "FFFFFF", align: :center, font_size: 12, bold: true},
13
- row_style: {background_color: nil, color: "000000", align: :left, font_size: 12},
14
- sheet_name: 'Kitchen Sink',
15
- freeze_headers: true,
16
- }
17
- end
18
-
19
- def teardown
20
- end
21
-
22
- def test_xlsx
23
- opts = @options.merge({
24
- column_styles: [
25
- {columns: 0, styles: {bold: true}},
26
- {columns: (1..3), styles: {color: "444444"}},
27
- {columns: [4], include_header: false, styles: {italic: true}}
28
- ],
29
-
30
- range_styles: [
31
- {range: "B2:C4", styles: {background_color: "CCCCCC"}},
32
- {range: {rows: 1, columns: :all}, styles: {bold: true}},
33
- {range: {rows: (20..25), columns: (1..4)}, styles: {italic: true}},
34
- {range: {rows: :all, columns: (3..4)}, styles: {color: "999999"}}
35
- ],
36
-
37
- conditional_row_styles: [
38
- {
39
- if: Proc.new{|row_data, row_index|
40
- row_index == 0 || row_data[0].to_i == 2
41
- },
42
- styles: {font_size: 18}
43
- },
44
- {
45
- unless: Proc.new{|row_data, row_index|
46
- row_index <= 10 || row_data[0].to_i == 15
47
- },
48
- styles: {align: :right}
49
- },
50
- ],
51
-
52
- borders: [
53
- {range: "B2:C4"},
54
- {range: "D6:D7", border_styles: {style: :dashDot, color: "333333"}},
55
- {range: {rows: (2..11), columns: :all}, border_styles: {edges: [:top,:bottom]}},
56
- {range: {rows: 3, columns: 4}, border_styles: {edges: [:top,:bottom]}}
57
- ],
58
-
59
- merges: [
60
- {range: "A1:C1"},
61
- {range: {rows: 2, columns: :all}},
62
- {range: {rows: (3..4), columns: (0..3)}}
63
- ],
64
-
65
- column_types: [
66
- :integer,
67
- :string,
68
- :float,
69
- :boolean,
70
- :date,
71
- :time,
72
- nil,
73
- ],
74
- })
75
-
76
- # Using Array Data
77
- file_data = SpreadsheetArchitect.to_xlsx(opts)
78
-
79
- File.open(VERSIONED_BASE_PATH.join("kitchen_sink.xlsx"),'w+b') do |f|
80
- f.write file_data
81
- end
82
- end
83
-
84
- def test_ods
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]},
91
- column_types: [
92
- :string,
93
- :float,
94
- :float,
95
- :boolean,
96
- :date,
97
- :time,
98
- nil
99
- ],
100
- })
101
-
102
- # Using Array Data
103
- file_data = SpreadsheetArchitect.to_ods(opts)
104
-
105
- File.open(VERSIONED_BASE_PATH.join("kitchen_sink.ods"),'w+b') do |f|
106
- f.write file_data
107
- end
108
- end
109
-
110
- end
@@ -1,29 +0,0 @@
1
- require 'test_helper'
2
-
3
- class MultiSheetTest < ActiveSupport::TestCase
4
-
5
- def setup
6
- @test_data = [[1,2,3], [4,5,6], [7,8,9]]
7
- end
8
-
9
- test "xlsx" do
10
- package = Post.to_axlsx_package
11
- package = CustomPost.to_axlsx_package({sheet_name: 'Latest Projects'}, package)
12
- package = SpreadsheetArchitect.to_axlsx_package({data: @test_data, sheet_name: 'Another Sheet'}, package)
13
-
14
- File.open(VERSIONED_BASE_PATH.join("multi_sheet.xlsx"),'w+b') do |f|
15
- f.write package.to_stream.read
16
- end
17
- end
18
-
19
- test "ods" do
20
- spreadsheet = Post.to_rodf_spreadsheet
21
- spreadsheet = CustomPost.to_rodf_spreadsheet({sheet_name: 'Latest Projects'}, spreadsheet)
22
- spreadsheet = SpreadsheetArchitect.to_rodf_spreadsheet({data: @test_data, sheet_name: 'Another Sheet'}, spreadsheet)
23
-
24
- File.open(VERSIONED_BASE_PATH.join("multi_sheet.ods"),'w+b') do |f|
25
- f.write spreadsheet.bytes
26
- end
27
- end
28
-
29
- end
@@ -1,9 +0,0 @@
1
- require 'test_helper'
2
-
3
- class OptionsTest < ActiveSupport::TestCase
4
-
5
- test "header: false" do
6
- assert SpreadsheetArchitect.to_xlsx(headers: false, data: [[1]])
7
- end
8
-
9
- end
@@ -1,44 +0,0 @@
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