ndr_import 8.5.0 → 8.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/Gemfile +0 -3
  4. data/README.md +6 -0
  5. data/bin/console +14 -0
  6. data/bin/setup +8 -0
  7. data/code_safety.yml +27 -11
  8. data/exe/pdf_acro_form_to_yaml +23 -0
  9. data/exe/pdf_to_text +28 -0
  10. data/exe/word_to_text +26 -0
  11. data/gemfiles/Gemfile.rails52 +0 -3
  12. data/gemfiles/Gemfile.rails60 +5 -0
  13. data/lib/ndr_import/version.rb +1 -1
  14. data/ndr_import.gemspec +9 -7
  15. metadata +23 -164
  16. data/gemfiles/Gemfile.rails50 +0 -8
  17. data/gemfiles/Gemfile.rails51 +0 -9
  18. data/test/file/acro_form_test.rb +0 -39
  19. data/test/file/base_test.rb +0 -54
  20. data/test/file/delimited_test.rb +0 -233
  21. data/test/file/docx_test.rb +0 -53
  22. data/test/file/excel_test.rb +0 -124
  23. data/test/file/pdf_test.rb +0 -36
  24. data/test/file/registry_test.rb +0 -62
  25. data/test/file/seven_zip_test.rb +0 -59
  26. data/test/file/text_test.rb +0 -92
  27. data/test/file/word_test.rb +0 -35
  28. data/test/file/xml_test.rb +0 -21
  29. data/test/file/zip_test.rb +0 -47
  30. data/test/fixed_width/table_test.rb +0 -35
  31. data/test/helpers/file/delimited_test.rb +0 -105
  32. data/test/helpers/file/excel_test.rb +0 -82
  33. data/test/helpers/file/pdf_test.rb +0 -27
  34. data/test/helpers/file/word_test.rb +0 -26
  35. data/test/helpers/file/xml_test.rb +0 -131
  36. data/test/helpers/file/zip_test.rb +0 -75
  37. data/test/mapper_test.rb +0 -676
  38. data/test/non_tabular/mapping_test.rb +0 -36
  39. data/test/non_tabular/table_test.rb +0 -590
  40. data/test/non_tabular_file_helper_test.rb +0 -501
  41. data/test/pdf_form/table_test.rb +0 -119
  42. data/test/readme_test.rb +0 -53
  43. data/test/resources/acro_form.pdf +0 -0
  44. data/test/resources/blank_tab_test.xlsx +0 -0
  45. data/test/resources/bomd.csv +0 -3
  46. data/test/resources/broken.csv +0 -3
  47. data/test/resources/filesystem_paths.yml +0 -26
  48. data/test/resources/flat_file.pdf +0 -0
  49. data/test/resources/flat_file.txt +0 -27
  50. data/test/resources/flat_file.yml +0 -20
  51. data/test/resources/hello_utf16be.txt +0 -0
  52. data/test/resources/hello_utf16le.txt +0 -0
  53. data/test/resources/hello_utf8.txt +0 -2
  54. data/test/resources/hello_windows.txt +0 -2
  55. data/test/resources/hello_world.doc +0 -0
  56. data/test/resources/hello_world.docx +0 -0
  57. data/test/resources/hello_world.pdf +0 -0
  58. data/test/resources/hello_world.txt +0 -2
  59. data/test/resources/high_ascii_delimited.txt +0 -2
  60. data/test/resources/high_ascii_delimited_example_two.txt +0 -3
  61. data/test/resources/malformed.csv +0 -3
  62. data/test/resources/malformed.xml +0 -6
  63. data/test/resources/malformed_pipe.csv +0 -3
  64. data/test/resources/normal.7z +0 -0
  65. data/test/resources/normal.csv +0 -3
  66. data/test/resources/normal.csv.zip +0 -0
  67. data/test/resources/normal_pipe.csv +0 -3
  68. data/test/resources/normal_thorn.csv +0 -3
  69. data/test/resources/not_a_pdf.pdf +0 -0
  70. data/test/resources/not_a_word_file.doc +0 -0
  71. data/test/resources/not_a_word_file.docx +0 -0
  72. data/test/resources/not_sign_delimited.txt +0 -3
  73. data/test/resources/password_protected_hello_world.docx +0 -0
  74. data/test/resources/password_protected_sample_xlsx.xlsx +0 -0
  75. data/test/resources/sample.xml +0 -34
  76. data/test/resources/sample_xls.xls +0 -0
  77. data/test/resources/sample_xlsx.xlsx +0 -0
  78. data/test/resources/sheet_streaming.xls +0 -0
  79. data/test/resources/sheet_streaming.xlsx +0 -0
  80. data/test/resources/standard_mappings.yml +0 -39
  81. data/test/resources/txt_file_xls_extension.xls +0 -1
  82. data/test/resources/txt_file_xlsx_extension.xlsx +0 -1
  83. data/test/resources/utf-16be_xml.xml +0 -0
  84. data/test/resources/utf-16be_xml_with_declaration.xml +0 -0
  85. data/test/resources/utf-16le_xml.xml +0 -0
  86. data/test/resources/utf-8_xml.xml +0 -9
  87. data/test/resources/windows-1252_xml.xml +0 -9
  88. data/test/resources/windows.csv +0 -5
  89. data/test/resources/xlsx_file_xls_extension.xls +0 -0
  90. data/test/standard_mappings_test.rb +0 -22
  91. data/test/table_test.rb +0 -545
  92. data/test/test_helper.rb +0 -35
  93. data/test/universal_importer_helper_test.rb +0 -86
  94. data/test/xml/table_test.rb +0 -90
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # ooxml_decrypt is not published to rubygems.org so we need to specify where it is
4
- gem 'ooxml_decrypt', git: 'https://github.com/timgentry/ooxml_decrypt'
5
-
6
- gemspec path: '..'
7
-
8
- gem 'activesupport', '~> 5.0.0'
@@ -1,9 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # ooxml_decrypt is not published to rubygems.org so we need to specify where it is
4
- gem 'ooxml_decrypt', git: 'https://github.com/timgentry/ooxml_decrypt'
5
-
6
- gemspec path: '..'
7
-
8
- # Minitest 5.10.2 doesn't work with Rails version
9
- gem 'minitest', '< 5.10.2'
@@ -1,39 +0,0 @@
1
- require 'test_helper'
2
- require 'ndr_import/file/acro_form'
3
-
4
- module NdrImport
5
- module File
6
- # Acro Form file handler tests
7
- class AcroFormTest < ActiveSupport::TestCase
8
- def setup
9
- @permanent_test_files = SafePath.new('permanent_test_files')
10
- end
11
-
12
- test 'should read pdf correctly' do
13
- file_path = @permanent_test_files.join('acro_form.pdf')
14
- handler = NdrImport::File::AcroForm.new(file_path, nil)
15
-
16
- expected_row = { 'Group3' => nil,
17
- 'Textbox1_required' => nil,
18
- 'Textbox2_required' => nil,
19
- 'List Box_required' => '3',
20
- 'Dropdown_required' => '3',
21
- 'Textbox1_optional' => nil,
22
- 'Textbox2_optional' => nil,
23
- 'List Box_optional' => '3',
24
- 'Dropdown_optional' => '3',
25
- 'Date_required' => nil,
26
- 'Date__optional' => nil,
27
- 'Textbox3_numerical_required' => nil,
28
- 'Textbox3_numerical_optional' => nil }
29
-
30
- handler.tables.each do |tablename, sheet|
31
- assert_nil tablename
32
- assert_instance_of Enumerator, sheet
33
- assert_equal 1, sheet.to_a.size
34
- assert_equal expected_row, sheet.to_a.first
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,54 +0,0 @@
1
- require 'test_helper'
2
- require 'ndr_import/file/registry'
3
-
4
- module NdrImport
5
- module File
6
- # Base file handler tests
7
- class BaseTest < ActiveSupport::TestCase
8
- # Handles a single table file, but for test purposes,
9
- # I could be bothered to implement it fully
10
- class SingleTableLazyDeveloper < ::NdrImport::File::Base
11
- end
12
-
13
- def setup
14
- @permanent_test_files = SafePath.new('permanent_test_files')
15
- end
16
-
17
- test 'should fail on not implementing rows' do
18
- begin
19
- Registry.register(SingleTableLazyDeveloper, 'lazy_dev')
20
-
21
- exception = assert_raises(RuntimeError) do
22
- file_path = @permanent_test_files.join('normal.csv')
23
- handler = SingleTableLazyDeveloper.new(file_path, 'lazy_dev')
24
-
25
- handler.tables.each do |tablename, sheet|
26
- assert_nil tablename
27
- assert_instance_of Enumerator, sheet
28
- sheet.to_a
29
- end
30
- end
31
-
32
- msg = 'Implement NdrImport::File::BaseTest::SingleTableLazyDeveloper#rows'
33
- assert_equal msg, exception.message
34
- ensure
35
- Registry.unregister('lazy_dev')
36
- end
37
- end
38
-
39
- test 'should not fail when set up with an readable safepath' do
40
- assert Base.new(SafePath.new('test_space_r'), nil)
41
- assert Base.new(SafePath.new('test_space_rw'), nil)
42
- end
43
-
44
- test 'should fail when set up with an unreadable safepath' do
45
- assert_raises(SecurityError) { Base.new(SafePath.new('test_space_w'), nil) }
46
- end
47
-
48
- test 'should fail when set up with a non-safepath' do
49
- exception = assert_raises(ArgumentError) { Base.new(NdrImport.root, nil) }
50
- assert exception.message =~ /file_name should be of type SafePath, but it is String/
51
- end
52
- end
53
- end
54
- end
@@ -1,233 +0,0 @@
1
- require 'test_helper'
2
- require 'ndr_import/file/delimited'
3
-
4
- module NdrImport
5
- module File
6
- # Delimited file handler tests
7
- class DelimitedTest < ActiveSupport::TestCase
8
- def setup
9
- @permanent_test_files = SafePath.new('permanent_test_files')
10
- end
11
-
12
- test 'should read csv correctly' do
13
- file_path = @permanent_test_files.join('normal.csv')
14
- handler = NdrImport::File::Delimited.new(file_path, 'csv', 'col_sep' => nil)
15
- handler.tables.each do |tablename, sheet|
16
- assert_nil tablename
17
- sheet = sheet.to_a
18
- assert_equal(('A'..'Z').to_a, sheet[0])
19
- assert_equal ['1'] * 26, sheet[1]
20
- assert_equal ['2'] * 26, sheet[2]
21
- end
22
- end
23
-
24
- test 'should read pipe correctly' do
25
- file_path = @permanent_test_files.join('normal_pipe.csv')
26
- handler = NdrImport::File::Delimited.new(file_path, 'delimited', 'col_sep' => '|')
27
- handler.tables.each do |tablename, sheet|
28
- assert_nil tablename
29
- sheet = sheet.to_a
30
- assert_equal(('A'..'Z').to_a, sheet[0])
31
- assert_equal ['1'] * 26, sheet[1]
32
- assert_equal ['2'] * 26, sheet[2]
33
- end
34
- end
35
-
36
- test 'should read malformed pipe correctly' do
37
- file_path = @permanent_test_files.join('malformed_pipe.csv')
38
- handler = NdrImport::File::Delimited.new(file_path, 'delimited', 'col_sep' => '|',
39
- 'liberal_parsing' => 'true')
40
- handler.tables.each do |tablename, sheet|
41
- assert_nil tablename
42
- sheet = sheet.to_a
43
- assert_equal(('A'..'Z').to_a, sheet[0])
44
- assert_equal ['1'] * 26, sheet[1]
45
- expected_row = ['2'] * 25
46
- expected_row << '2"malformed"'
47
- assert_equal expected_row, sheet[2].sort
48
- end
49
- end
50
-
51
- test 'should read thorn correctly' do
52
- file_path = @permanent_test_files.join('normal_thorn.csv')
53
- handler = NdrImport::File::Delimited.new(file_path, 'delimited', 'col_sep' => "\xfe")
54
- handler.tables.each do |tablename, sheet|
55
- assert_nil tablename
56
- sheet = sheet.to_a
57
- assert_equal(('A'..'Z').to_a, sheet[0])
58
- assert_equal ['1'] * 26, sheet[1]
59
- assert_equal ['2'] * 26, sheet[2]
60
- end
61
- end
62
-
63
- test 'should read csv with a BOM' do
64
- file_path = @permanent_test_files.join('bomd.csv')
65
- handler = NdrImport::File::Delimited.new(file_path, 'csv', 'col_sep' => nil)
66
- handler.tables.each do |tablename, sheet|
67
- assert_nil tablename
68
- assert_instance_of Enumerator, sheet
69
- sheet = sheet.to_a
70
- assert_equal(('A'..'Z').to_a, sheet[0])
71
- assert_equal ['1'] * 26, sheet[1]
72
- assert_equal ['2'] * 26, sheet[2]
73
- end
74
- end
75
-
76
- test 'should read windows-1252 csv' do
77
- file_path = @permanent_test_files.join('windows.csv')
78
- handler = NdrImport::File::Delimited.new(file_path, 'csv', 'col_sep' => nil)
79
- handler.tables.each do |tablename, sheet|
80
- assert_nil tablename
81
- assert_instance_of Enumerator, sheet
82
- sheet = sheet.to_a
83
- assert_equal 1, sheet.length
84
- end
85
- end
86
-
87
- test 'should read acsii-delimited csv' do
88
- file_path = @permanent_test_files.join('high_ascii_delimited.txt')
89
- handler = NdrImport::File::Delimited.new(file_path, 'delimited', 'col_sep' => "\xfe")
90
- handler.tables.each do |tablename, sheet|
91
- assert_nil tablename
92
- assert_instance_of Enumerator, sheet
93
- sheet = sheet.to_a
94
- assert_equal 2, sheet.length
95
- assert_equal '1234567890', sheet[0][1]
96
- assert_equal '1234567890', sheet[1][1]
97
- end
98
- end
99
-
100
- test 'should read acsii-delimited txt' do
101
- rows = []
102
- file_path = @permanent_test_files.join('high_ascii_delimited_example_two.txt')
103
- handler = NdrImport::File::Delimited.new(file_path, 'delimited', 'col_sep' => "\xfd")
104
- handler.tables.each do |tablename, sheet|
105
- assert_nil tablename
106
- assert_instance_of Enumerator, sheet
107
- sheet.each do |row|
108
- rows << row
109
- end
110
- end
111
-
112
- assert_equal(('A'..'Z').to_a, rows[0])
113
- assert_equal ['1'] * 26, rows[1]
114
- assert_equal ['2'] * 26, rows[2]
115
- end
116
-
117
- test 'should read malformed delimited txt' do
118
- rows = []
119
- file_path = @permanent_test_files.join('malformed.csv')
120
- handler = NdrImport::File::Delimited.new(file_path, 'csv', 'col_sep' => nil,
121
- 'liberal_parsing' => 'true')
122
- handler.tables.each do |tablename, sheet|
123
- assert_nil tablename
124
- assert_instance_of Enumerator, sheet
125
- sheet.each do |row|
126
- rows << row
127
- end
128
- end
129
-
130
- assert_equal(('A'..'Z').to_a, rows[0])
131
- assert_equal ['1'] * 26, rows[1]
132
- expected_row = ['2'] * 25
133
- expected_row << '2"malformed"'
134
- assert_equal expected_row, rows[2].sort
135
- end
136
-
137
- test 'should fail to read malformed delimited txt without liberal_parsing' do
138
- rows_yielded = []
139
- exception = assert_raises(CSVLibrary::MalformedCSVError) do
140
- file_path = @permanent_test_files.join('malformed.csv')
141
- handler = NdrImport::File::Delimited.new(file_path, 'csv')
142
-
143
- handler.tables.each do |tablename, sheet|
144
- assert_nil tablename
145
- assert_instance_of Enumerator, sheet
146
- sheet.each do |row|
147
- rows_yielded << row
148
- end
149
- end
150
- end
151
-
152
- assert rows_yielded.empty?, 'no rows should have been yielded'
153
-
154
- msg = 'Invalid CSV format on row 3 of malformed.csv. Original: Illegal quoting in line 3.'
155
- assert_equal msg, exception.message
156
- end
157
-
158
- test 'should read line-by-line' do
159
- rows = []
160
- file_path = @permanent_test_files.join('normal.csv')
161
- handler = NdrImport::File::Delimited.new(file_path, 'csv')
162
-
163
- handler.tables.each do |tablename, sheet|
164
- assert_nil tablename
165
- assert_instance_of Enumerator, sheet
166
- sheet.each do |row|
167
- rows << row
168
- end
169
- end
170
-
171
- assert_equal(('A'..'Z').to_a, rows[0])
172
- assert_equal ['1'] * 26, rows[1]
173
- assert_equal ['2'] * 26, rows[2]
174
- end
175
-
176
- test 'should report addition details upon failure to slurp csv' do
177
- exception = assert_raises(CSVLibrary::MalformedCSVError) do
178
- file_path = @permanent_test_files.join('broken.csv')
179
- handler = NdrImport::File::Delimited.new(file_path, 'csv', 'col_sep' => nil)
180
-
181
- handler.tables.each do |tablename, sheet|
182
- assert_nil tablename
183
- assert_instance_of Enumerator, sheet
184
- sheet.to_a
185
- end
186
- end
187
-
188
- assert_match(/Invalid CSV format on row 2 of broken\.csv\./, exception.message)
189
- assert_match(CORRUPTED_QUOTES_MESSAGE_PATTERN, exception.message)
190
- assert_match(/in line 2/, exception.message)
191
- end
192
-
193
- test 'should report addition details upon failure to read csv line-by-line' do
194
- rows_yielded = []
195
- exception = assert_raises(CSVLibrary::MalformedCSVError) do
196
- file_path = @permanent_test_files.join('broken.csv')
197
- handler = NdrImport::File::Delimited.new(file_path, 'csv')
198
-
199
- handler.tables.each do |tablename, sheet|
200
- assert_nil tablename
201
- assert_instance_of Enumerator, sheet
202
- sheet.each do |row|
203
- rows_yielded << row
204
- end
205
- end
206
- end
207
-
208
- assert rows_yielded.empty?, 'no rows should have been yielded'
209
-
210
- assert_match(/Invalid CSV format on row 2 of broken\.csv\./, exception.message)
211
- assert_match(CORRUPTED_QUOTES_MESSAGE_PATTERN, exception.message)
212
- assert_match(/in line 2/, exception.message)
213
- end
214
-
215
- test 'should only determine encodings once' do
216
- file_path = @permanent_test_files.join('normal.csv')
217
- handler = NdrImport::File::Delimited.new(file_path, 'csv', 'col_sep' => nil)
218
-
219
- handler.expects(try_each_encoding: { mode: 'r:bom|utf-8', col_sep: ',' }).once
220
-
221
- 2.times do
222
- handler.tables.each do |tablename, sheet|
223
- assert_nil tablename
224
- sheet = sheet.to_a
225
- assert_equal(('A'..'Z').to_a, sheet[0])
226
- assert_equal ['1'] * 26, sheet[1]
227
- assert_equal ['2'] * 26, sheet[2]
228
- end
229
- end
230
- end
231
- end
232
- end
233
- end
@@ -1,53 +0,0 @@
1
- require 'test_helper'
2
- require 'ndr_import/file/docx'
3
-
4
- module NdrImport
5
- module File
6
- # Word .docx document file handler tests
7
- class DocxTest < ActiveSupport::TestCase
8
- def setup
9
- @permanent_test_files = SafePath.new('permanent_test_files')
10
- end
11
-
12
- test 'should read word file' do
13
- file_path = @permanent_test_files.join('hello_world.docx')
14
- handler = NdrImport::File::Docx.new(file_path, nil)
15
- handler.tables.each do |tablename, sheet|
16
- assert_nil tablename
17
- assert_instance_of Enumerator, sheet
18
- assert_equal [
19
- 'Hello world, this is a modern word document',
20
- 'With more than one line of text',
21
- 'Three in fact'
22
- ], sheet.to_a
23
- end
24
- end
25
-
26
- test 'should read password protected word file' do
27
- file_path = @permanent_test_files.join('password_protected_hello_world.docx')
28
- handler = NdrImport::File::Docx.new(file_path, nil, file_password: 'salad')
29
- handler.tables.each do |tablename, sheet|
30
- assert_nil tablename
31
- assert_instance_of Enumerator, sheet
32
- assert_equal [
33
- 'Hello world, this is a modern word document',
34
- 'With more than one line of text',
35
- 'Three in fact'
36
- ], sheet.to_a
37
- end
38
- end
39
-
40
- test 'should raise exception on invalid word file' do
41
- assert_raises RuntimeError do
42
- file_path = @permanent_test_files.join('not_a_word_file.docx')
43
- handler = NdrImport::File::Docx.new(file_path, nil)
44
- handler.tables.each do |tablename, sheet|
45
- assert_nil tablename
46
- assert_instance_of Enumerator, sheet
47
- sheet.to_a
48
- end
49
- end
50
- end
51
- end
52
- end
53
- end
@@ -1,124 +0,0 @@
1
- require 'test_helper'
2
- require 'ndr_import/file/excel'
3
-
4
- module NdrImport
5
- module File
6
- # Excel file handler tests
7
- class ExcelTest < ActiveSupport::TestCase
8
- def setup
9
- @permanent_test_files = SafePath.new('permanent_test_files')
10
- end
11
-
12
- test 'should read xls file' do
13
- file_path = @permanent_test_files.join('sample_xls.xls')
14
- handler = NdrImport::File::Excel.new(file_path, nil)
15
- handler.tables.each do |tablename, sheet|
16
- assert_equal 'Sheet1', tablename
17
- assert_instance_of Enumerator, sheet
18
- assert_equal %w(1A 1B), sheet.first
19
- end
20
- end
21
-
22
- test 'should read xlsx file' do
23
- file_path = @permanent_test_files.join('sample_xlsx.xlsx')
24
- handler = NdrImport::File::Excel.new(file_path, nil)
25
- handler.tables.each do |tablename, sheet|
26
- assert_equal 'Sheet1', tablename
27
- assert_instance_of Enumerator, sheet
28
- assert_equal %w(1A 1B), sheet.first
29
- end
30
- end
31
-
32
- test 'should read xlsx file with null sheet' do
33
- file_path = @permanent_test_files.join('blank_tab_test.xlsx')
34
- handler = NdrImport::File::Excel.new(file_path, nil)
35
-
36
- sheets = handler.tables.map { |_tablename, sheet| sheet }
37
-
38
- assert_equal %w(column_a column_b column_c column_d), sheets[0].next
39
- assert_equal %w(11111 ABC123 8888888888 2), sheets[0].next
40
- assert_equal %w(column_a column_b column_c column_d), sheets[1].next
41
- assert_equal %w(11111 ABC123 8888888888 3), sheets[1].next
42
- assert_raises(StopIteration) { sheets[2].next }
43
- end
44
-
45
- %w(sheet_streaming.xlsx sheet_streaming.xls).each do |filename|
46
- test "should be able to stream from multiple sheets at once from #{filename}" do
47
- file_path = @permanent_test_files.join(filename)
48
- handler = NdrImport::File::Excel.new(file_path, nil)
49
-
50
- sheets = handler.tables.map { |_tablename, sheet| sheet }
51
-
52
- assert_equal %w(1A1 1B1), sheets[0].next
53
- assert_raises(StopIteration) { sheets[2].next }
54
- assert_equal %w(2A1 2B1), sheets[1].next
55
- assert_equal %w(2A2 2B2), sheets[1].next
56
- assert_equal %w(1A2 1B2), sheets[0].next
57
- assert_raises(StopIteration) { sheets[2].next }
58
- end
59
- end
60
-
61
- test 'should read xlsx file with the incorrect xls extension' do
62
- file_path = @permanent_test_files.join('xlsx_file_xls_extension.xls')
63
- handler = NdrImport::File::Excel.new(file_path, nil)
64
- handler.tables.each do |tablename, sheet|
65
- assert_equal 'Sheet1', tablename
66
- assert_instance_of Enumerator, sheet
67
- assert_equal %w(1A 1B), sheet.first
68
- end
69
-
70
- SafeFile.delete @permanent_test_files.join('xlsx_file_xls_extension_amend.xlsx')
71
- end
72
-
73
- test 'should read password protected xlsx file' do
74
- file_path = @permanent_test_files.join('password_protected_sample_xlsx.xlsx')
75
- handler = NdrImport::File::Excel.new(file_path, nil, file_password: 'carrot')
76
- handler.tables.each do |tablename, sheet|
77
- assert_equal 'Sheet1', tablename
78
- assert_instance_of Enumerator, sheet
79
- assert_equal %w(1A 1B), sheet.first
80
- end
81
- end
82
-
83
- test 'read_excel_file helper should handle exceptions' do
84
- # txt file
85
- assert_raises RuntimeError do
86
- file_path = @permanent_test_files.join('flat_file.txt')
87
- handler = NdrImport::File::Excel.new(file_path, nil)
88
-
89
- handler.tables.each do |tablename, sheet|
90
- assert_nil tablename
91
- assert_instance_of Enumerator, sheet
92
- sheet.to_a
93
- end
94
- end
95
-
96
- # .txt file in .xls extension
97
- assert_raises RuntimeError do
98
- file_path = @permanent_test_files.join('txt_file_xls_extension.xls')
99
- handler = NdrImport::File::Excel.new(file_path, 'txt')
100
-
101
- handler.tables.each do |tablename, sheet|
102
- assert_nil tablename
103
- assert_instance_of Enumerator, sheet
104
- sheet.to_a
105
- end
106
- end
107
-
108
- # .txt file in .xlsx extension
109
- assert_raises RuntimeError do
110
- file_path = @permanent_test_files.join('txt_file_xlsx_extension.xlsx')
111
- handler = NdrImport::File::Excel.new(file_path, 'txt')
112
-
113
- handler.tables.each do |tablename, sheet|
114
- assert_nil tablename
115
- assert_instance_of Enumerator, sheet
116
- sheet.to_a
117
- end
118
- end
119
-
120
- SafeFile.delete @permanent_test_files.join('txt_file_xls_extension_amend.xlsx')
121
- end
122
- end
123
- end
124
- end