active_importer 0.2.0 → 0.2.1

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.
@@ -138,7 +138,9 @@ module ActiveImporter
138
138
  end
139
139
 
140
140
  def row_processed_count
141
- row_index - 1
141
+ row_index - @header_index
142
+ rescue
143
+ 0
142
144
  end
143
145
 
144
146
  def row_success_count
@@ -1,3 +1,3 @@
1
1
  module ActiveImporter
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -10,6 +10,17 @@ describe ActiveImporter::Base do
10
10
  ]
11
11
  end
12
12
 
13
+ let(:spreadsheet_data_with_errors) do
14
+ [
15
+ ['List of employees'],
16
+ ['Name', 'Birth Date', 'Department', 'Manager'],
17
+ ['John Doe', '2013-10-25', 'IT'],
18
+ ['Invalid', '2013-10-24', 'Management'],
19
+ ['Invalid', '2013-10-24', 'Accounting'],
20
+ ['Jane Doe', '2013-10-26', 'Sales'],
21
+ ]
22
+ end
23
+
13
24
  let(:importer) { EmployeeImporter.new('/dummy/file') }
14
25
 
15
26
  before do
@@ -36,17 +47,36 @@ describe ActiveImporter::Base do
36
47
  EmployeeImporter.import('/dummy/file')
37
48
  end
38
49
 
39
- context 'when there are rows with errors' do
40
- let(:spreadsheet_data) do
41
- [
42
- ['Name', 'Birth Date', 'Department', 'Manager'],
43
- ['John Doe', '2013-10-25', 'IT'],
44
- ['Invalid', '2013-10-24', 'Management'],
45
- ['Invalid', '2013-10-24', 'Accounting'],
46
- ['Jane Doe', '2013-10-26', 'Sales'],
47
- ]
50
+ context do
51
+ let(:spreadsheet_data) { spreadsheet_data_with_errors }
52
+
53
+ before do
54
+ expect(EmployeeImporter).to receive(:new).once.and_return(importer)
55
+ EmployeeImporter.import('/dummy/file')
48
56
  end
49
57
 
58
+ describe '.row_processed_count' do
59
+ it 'reports the number of rows processed' do
60
+ expect(importer.row_processed_count).to eq(4)
61
+ end
62
+ end
63
+
64
+ describe '.row_success_count' do
65
+ it 'reports the number of rows imported successfully' do
66
+ expect(importer.row_success_count).to eq(2)
67
+ end
68
+ end
69
+
70
+ describe '.row_error_count' do
71
+ it 'reports the number of rows with errors' do
72
+ expect(importer.row_error_count).to eq(2)
73
+ end
74
+ end
75
+ end
76
+
77
+ context 'when there are rows with errors' do
78
+ let(:spreadsheet_data) { spreadsheet_data_with_errors }
79
+
50
80
  it 'does not import those rows' do
51
81
  expect { EmployeeImporter.import('/dummy/file') }.to change(Employee, :count).by(2)
52
82
  end
@@ -100,6 +130,12 @@ describe ActiveImporter::Base do
100
130
  it 'smartly skips any rows before the header' do
101
131
  expect { EmployeeImporter.import('/dummy/file') }.to change(Employee, :count).by(2)
102
132
  end
133
+
134
+ it 'reports the number of processed rows correctly' do
135
+ expect(EmployeeImporter).to receive(:new).once.and_return(importer)
136
+ EmployeeImporter.import('/dummy/file')
137
+ expect(importer.row_processed_count).to eq(2)
138
+ end
103
139
  end
104
140
 
105
141
  describe '.fetch_model' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_importer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-11 00:00:00.000000000 Z
12
+ date: 2013-11-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: roo
@@ -112,7 +112,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
112
  version: '0'
113
113
  segments:
114
114
  - 0
115
- hash: -1076262899309802271
115
+ hash: -3865447106793864810
116
116
  required_rubygems_version: !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
@@ -121,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
121
  version: '0'
122
122
  segments:
123
123
  - 0
124
- hash: -1076262899309802271
124
+ hash: -3865447106793864810
125
125
  requirements: []
126
126
  rubyforge_project:
127
127
  rubygems_version: 1.8.23