topographer 0.0.1 → 0.0.2
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.
- checksums.yaml +13 -5
- data/lib/Topographer/importer/helpers/write_log_to_csv.rb +1 -1
- data/lib/Topographer/importer/helpers.rb +1 -1
- data/lib/Topographer/importer/importable.rb +1 -1
- data/lib/Topographer/importer/input/base.rb +1 -1
- data/lib/Topographer/importer/input/roo.rb +2 -2
- data/lib/Topographer/importer/input/source_data.rb +1 -1
- data/lib/Topographer/importer/input.rb +1 -1
- data/lib/Topographer/importer/logger/base.rb +2 -2
- data/lib/Topographer/importer/logger/fatal_error_entry.rb +1 -1
- data/lib/Topographer/importer/logger/log_entry.rb +1 -1
- data/lib/Topographer/importer/logger/simple.rb +1 -1
- data/lib/Topographer/importer/logger.rb +1 -1
- data/lib/Topographer/importer/mapper/default_field_mapping.rb +1 -1
- data/lib/Topographer/importer/mapper/field_mapping.rb +1 -1
- data/lib/Topographer/importer/mapper/ignored_field_mapping.rb +1 -1
- data/lib/Topographer/importer/mapper/result.rb +1 -1
- data/lib/Topographer/importer/mapper/validation_field_mapping.rb +1 -1
- data/lib/Topographer/importer/mapper.rb +1 -1
- data/lib/Topographer/importer/strategy/base.rb +2 -2
- data/lib/Topographer/importer/strategy/create_or_update_record.rb +1 -1
- data/lib/Topographer/importer/strategy/import_new_record.rb +1 -1
- data/lib/Topographer/importer/strategy/import_status.rb +1 -1
- data/lib/Topographer/importer/strategy/update_record.rb +1 -1
- data/lib/Topographer/importer/strategy.rb +1 -1
- data/lib/Topographer/importer.rb +1 -1
- data/lib/Topographer/version.rb +1 -1
- data/spec/Cartographer/importer/helpers/write_log_to_csv_spec.rb +8 -8
- data/spec/Cartographer/importer/helpers_spec.rb +2 -2
- data/spec/Cartographer/importer/importable_spec.rb +2 -2
- data/spec/Cartographer/importer/importer_spec.rb +12 -12
- data/spec/Cartographer/importer/logger/base_spec.rb +3 -3
- data/spec/Cartographer/importer/logger/fatal_error_entry_spec.rb +2 -2
- data/spec/Cartographer/importer/logger/simple_spec.rb +2 -2
- data/spec/Cartographer/importer/mapper/default_field_mapping_spec.rb +7 -7
- data/spec/Cartographer/importer/mapper/field_mapping_spec.rb +8 -8
- data/spec/Cartographer/importer/mapper/validation_field_mapping_spec.rb +5 -5
- data/spec/Cartographer/importer/mapper_spec.rb +23 -23
- data/spec/Cartographer/importer/strategy/base_spec.rb +3 -3
- data/spec/Cartographer/importer/strategy/create_or_update_record_spec.rb +3 -3
- data/spec/Cartographer/importer/strategy/import_new_records_spec.rb +5 -5
- data/spec/Cartographer/importer/strategy/import_status_spec.rb +2 -2
- data/spec/Cartographer/importer/strategy/mapped_model.rb +1 -1
- data/spec/Cartographer/importer/strategy/update_record_spec.rb +3 -3
- metadata +11 -10
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZjI0NDZhMDEyMDhkNzA0NzA4MTczMjBjYzY3NWZkMzQxODBmYzBjNg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
OTI1MzZhMWU2NTZhOTllOTE2Nzg4ZjMyZTVmMmU5MDQzMWU3ZmI1Ng==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YzczMzllN2M3YTc3ZTc2M2E3YTY2NmJjMjU0YmNkODdhN2ViZDY5MGEzYjg3
|
10
|
+
MTU1YTVkZmIwYjUwM2UyNWNhMjAzMTdiMjc2ZmIwZTZiMWE5OWU1MGU1OTk5
|
11
|
+
ZDYyNWUyNTNjMjYzNzhkYzM4N2FiNjU4OWYyMWY0NzViNGMzNjM=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MjExOTg5NGM5OWYzZDhkYzM1NzBlM2RmMTY5N2JiNDRmNmJkNDUyZDhhOTll
|
14
|
+
YTcwMWYyYmVkMjg5M2RkZTkwN2IwMjg5OWQ5N2I4MzhiNTEwZDQ3ZWVmNTEw
|
15
|
+
ODViNDYxMjA4NDFhODIyMTI3OWY0YzAyYTFmY2I1YjE2YmVlZDI=
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Importer::Input::Roo < Importer::Input::Base
|
1
|
+
class Topographer::Importer::Input::Roo < Topographer::Importer::Input::Base
|
2
2
|
include Enumerable
|
3
3
|
|
4
4
|
def initialize(roo_sheet, header_row=1, data_row=2)
|
@@ -21,7 +21,7 @@ class Importer::Input::Roo < Importer::Input::Base
|
|
21
21
|
@start_data_row.upto @end_data_row do |row_number|
|
22
22
|
data = @sheet.row(row_number)
|
23
23
|
source_identifier = "Row: #{row_number}"
|
24
|
-
yield Importer::Input::SourceData.new(source_identifier,
|
24
|
+
yield Topographer::Importer::Input::SourceData.new(source_identifier,
|
25
25
|
Hash[@header.zip(data)])
|
26
26
|
end
|
27
27
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Importer::Logger::Base
|
1
|
+
class Topographer::Importer::Logger::Base
|
2
2
|
|
3
3
|
attr_reader :fatal_errors
|
4
4
|
|
@@ -31,7 +31,7 @@ class Importer::Logger::Base
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def log_fatal(source, message)
|
34
|
-
@fatal_errors << Importer::Logger::FatalErrorEntry.new(source, message)
|
34
|
+
@fatal_errors << Topographer::Importer::Logger::FatalErrorEntry.new(source, message)
|
35
35
|
end
|
36
36
|
|
37
37
|
def successful_imports
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'active_support/core_ext/hash'
|
2
2
|
require 'active_support/core_ext/object/blank'
|
3
|
-
class Importer::Mapper::FieldMapping
|
3
|
+
class Topographer::Importer::Mapper::FieldMapping
|
4
4
|
attr_reader :input_columns, :output_field
|
5
5
|
|
6
6
|
def initialize(required, input_columns, output_field, &mapping_behavior)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Importer::Strategy::Base
|
1
|
+
class Topographer::Importer::Strategy::Base
|
2
2
|
|
3
3
|
attr_reader :mapper
|
4
4
|
attr_accessor :dry_run
|
@@ -27,7 +27,7 @@ class Importer::Strategy::Base
|
|
27
27
|
private
|
28
28
|
|
29
29
|
def get_import_status(mapping_result, new_model_errors)
|
30
|
-
status = Importer::Strategy::ImportStatus.new(mapping_result.source_identifier)
|
30
|
+
status = Topographer::Importer::Strategy::ImportStatus.new(mapping_result.source_identifier)
|
31
31
|
mapping_result.errors.values.each do |error|
|
32
32
|
status.add_error(:mapping, error)
|
33
33
|
end
|
data/lib/Topographer/importer.rb
CHANGED
data/lib/Topographer/version.rb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Importer::Helpers::WriteLogToCSV do
|
3
|
+
describe Topographer::Importer::Helpers::WriteLogToCSV do
|
4
4
|
let(:successful_entry) do
|
5
|
-
status = Importer::Strategy::ImportStatus.new('test-input')
|
5
|
+
status = Topographer::Importer::Strategy::ImportStatus.new('test-input')
|
6
6
|
status.set_timestamp
|
7
|
-
Importer::Logger::LogEntry.new('test-input', 'TestModel', status)
|
7
|
+
Topographer::Importer::Logger::LogEntry.new('test-input', 'TestModel', status)
|
8
8
|
end
|
9
9
|
let(:failed_entry) do
|
10
|
-
status = Importer::Strategy::ImportStatus.new('test-input')
|
10
|
+
status = Topographer::Importer::Strategy::ImportStatus.new('test-input')
|
11
11
|
status.set_timestamp
|
12
12
|
(1+rand(6)).times do |n|
|
13
13
|
status.add_error(:mapping, "Test error #{n}")
|
14
14
|
end
|
15
|
-
Importer::Logger::LogEntry.new('test-input', 'TestModel', status)
|
15
|
+
Topographer::Importer::Logger::LogEntry.new('test-input', 'TestModel', status)
|
16
16
|
end
|
17
17
|
let(:fatal_error) do
|
18
|
-
Importer::Logger::FatalErrorEntry.new('test-input', 'FATAL ERROR')
|
18
|
+
Topographer::Importer::Logger::FatalErrorEntry.new('test-input', 'FATAL ERROR')
|
19
19
|
end
|
20
20
|
let(:successes) do
|
21
21
|
successes = []
|
@@ -57,13 +57,13 @@ describe Importer::Helpers::WriteLogToCSV do
|
|
57
57
|
file = double('file')
|
58
58
|
CSV.should_receive(:open).with('fake_file_path', 'wb').and_yield(file)
|
59
59
|
file.should_receive(:<<).exactly(12).times
|
60
|
-
Importer::Helpers::WriteLogToCSV.instance.write_log_to_csv(logger, 'fake_file_path', write_all: true)
|
60
|
+
Topographer::Importer::Helpers::WriteLogToCSV.instance.write_log_to_csv(logger, 'fake_file_path', write_all: true)
|
61
61
|
end
|
62
62
|
it 'should only write failures and fatal errors if write_all is false' do
|
63
63
|
file = double('file')
|
64
64
|
CSV.should_receive(:open).with('fake_file_path', 'wb').and_yield(file)
|
65
65
|
file.should_receive(:<<).exactly(10).times
|
66
|
-
Importer::Helpers::WriteLogToCSV.instance.write_log_to_csv(logger, 'fake_file_path', write_all: false)
|
66
|
+
Topographer::Importer::Helpers::WriteLogToCSV.instance.write_log_to_csv(logger, 'fake_file_path', write_all: false)
|
67
67
|
end
|
68
68
|
end
|
69
69
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
class TestImportable
|
4
|
-
extend Importer::Helpers
|
4
|
+
extend Topographer::Importer::Helpers
|
5
5
|
end
|
6
6
|
|
7
|
-
describe Importer::Helpers do
|
7
|
+
describe Topographer::Importer::Helpers do
|
8
8
|
describe ".boolify" do
|
9
9
|
it "returns true if given 'Yes'" do
|
10
10
|
expect(TestImportable.boolify('Yes')).to eql true
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
class TestImportable
|
4
|
-
extend Importer::Importable
|
4
|
+
extend Topographer::Importer::Importable
|
5
5
|
end
|
6
6
|
|
7
|
-
describe Importer::Importable do
|
7
|
+
describe Topographer::Importer::Importable do
|
8
8
|
describe "#get_mapper" do
|
9
9
|
it 'should raise NotImplementedError' do
|
10
10
|
expect { TestImportable.get_mapper(nil) }.to raise_error(NotImplementedError)
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'ostruct'
|
3
3
|
|
4
4
|
class MockImportable < OpenStruct
|
5
|
-
include Importer::Importable
|
5
|
+
include Topographer::Importer::Importable
|
6
6
|
|
7
7
|
def self.create(params)
|
8
8
|
self.new(params)
|
@@ -21,7 +21,7 @@ class MockImportable < OpenStruct
|
|
21
21
|
def self.get_mapper(strategy_class)
|
22
22
|
case
|
23
23
|
when strategy_class == HashImportStrategy
|
24
|
-
Importer::Mapper.build_mapper(MockImportable) do |mapping|
|
24
|
+
Topographer::Importer::Mapper.build_mapper(MockImportable) do |mapping|
|
25
25
|
mapping.required_mapping 'Field1', 'field_1'
|
26
26
|
mapping.required_mapping 'Field2', 'field_2'
|
27
27
|
mapping.optional_mapping 'Field3', 'field_3'
|
@@ -32,7 +32,7 @@ class MockImportable < OpenStruct
|
|
32
32
|
|
33
33
|
end
|
34
34
|
|
35
|
-
class HashImportStrategy < Importer::Strategy::Base
|
35
|
+
class HashImportStrategy < Topographer::Importer::Strategy::Base
|
36
36
|
attr_reader :imported_data
|
37
37
|
|
38
38
|
def initialize(mapper)
|
@@ -71,14 +71,14 @@ class MockInput
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def each
|
74
|
-
yield Importer::Input::SourceData.new('1', {'Field1' => 'datum1', 'Field2' => 'datum2'})
|
75
|
-
yield Importer::Input::SourceData.new('2', {'Field1' => 'datum2', 'Field2' => 'datum2', 'Field3' => 'datum3'})
|
76
|
-
yield Importer::Input::SourceData.new('3', {'Field1' => 'datum3', 'Field2' => 'invalid value!!!!1ONE'}) #I am INVALID!!!
|
77
|
-
yield Importer::Input::SourceData.new('4', {'Field1' => 'datum4', 'Field2' => 'datum2', 'Field3' => 'datum3', 'IgnoredField' => 'ignore me'})
|
74
|
+
yield Topographer::Importer::Input::SourceData.new('1', {'Field1' => 'datum1', 'Field2' => 'datum2'})
|
75
|
+
yield Topographer::Importer::Input::SourceData.new('2', {'Field1' => 'datum2', 'Field2' => 'datum2', 'Field3' => 'datum3'})
|
76
|
+
yield Topographer::Importer::Input::SourceData.new('3', {'Field1' => 'datum3', 'Field2' => 'invalid value!!!!1ONE'}) #I am INVALID!!!
|
77
|
+
yield Topographer::Importer::Input::SourceData.new('4', {'Field1' => 'datum4', 'Field2' => 'datum2', 'Field3' => 'datum3', 'IgnoredField' => 'ignore me'})
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
|
-
describe Importer do
|
81
|
+
describe Topographer::Importer do
|
82
82
|
let(:input) { MockInput.new }
|
83
83
|
let(:model_class) { MockImportable }
|
84
84
|
let(:strategy_class) { HashImportStrategy }
|
@@ -87,8 +87,8 @@ describe Importer do
|
|
87
87
|
get_header: ['BadCol1', 'BadCol2', 'Field1', 'Field3'],
|
88
88
|
input_identifier: 'Test'
|
89
89
|
end
|
90
|
-
let(:simple_logger) { Importer::Logger::Simple.new }
|
91
|
-
let(:import_log) { Importer.import_data(input, model_class, strategy_class, simple_logger) }
|
90
|
+
let(:simple_logger) { Topographer::Importer::Logger::Simple.new }
|
91
|
+
let(:import_log) { Topographer::Importer.import_data(input, model_class, strategy_class, simple_logger) }
|
92
92
|
|
93
93
|
describe '.import_data' do
|
94
94
|
it 'returns a logger instance' do
|
@@ -109,7 +109,7 @@ describe Importer do
|
|
109
109
|
end
|
110
110
|
|
111
111
|
it 'does not import data with an invalid header' do
|
112
|
-
import_log = Importer.import_data(bad_input, model_class, strategy_class, simple_logger)
|
112
|
+
import_log = Topographer::Importer.import_data(bad_input, model_class, strategy_class, simple_logger)
|
113
113
|
expect(import_log.errors?).to be_true
|
114
114
|
expect(import_log.fatal_error?).to be_true
|
115
115
|
expect(import_log.fatal_errors.first.message).
|
@@ -118,7 +118,7 @@ describe Importer do
|
|
118
118
|
end
|
119
119
|
describe '.build_mapper' do
|
120
120
|
it 'returns a mapper with the defined mappings' do
|
121
|
-
mapper = Importer.build_mapper(MockImportable) do |mapping|
|
121
|
+
mapper = Topographer::Importer.build_mapper(MockImportable) do |mapping|
|
122
122
|
mapping.required_mapping 'Field1', 'field_1'
|
123
123
|
mapping.required_mapping 'Field2', 'field_2'
|
124
124
|
mapping.optional_mapping 'Field3', 'field_3'
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Importer::Logger::Base do
|
4
|
-
let(:logger){Importer::Logger::Base.new}
|
3
|
+
describe Topographer::Importer::Logger::Base do
|
4
|
+
let(:logger){Topographer::Importer::Logger::Base.new}
|
5
5
|
describe '#log_fatal' do
|
6
6
|
it 'should log a fatal error' do
|
7
7
|
logger.log_fatal('test input', 'Fatal Error')
|
8
|
-
expect(logger.fatal_errors.first).to be_a Importer::Logger::LogEntry
|
8
|
+
expect(logger.fatal_errors.first).to be_a Topographer::Importer::Logger::LogEntry
|
9
9
|
expect(logger.fatal_errors.first)
|
10
10
|
end
|
11
11
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Importer::Logger::FatalErrorEntry do
|
4
|
-
let(:entry) { Importer::Logger::FatalErrorEntry.new('test-input', 'failure message') }
|
3
|
+
describe Topographer::Importer::Logger::FatalErrorEntry do
|
4
|
+
let(:entry) { Topographer::Importer::Logger::FatalErrorEntry.new('test-input', 'failure message') }
|
5
5
|
describe '#failure?' do
|
6
6
|
it 'should return true' do
|
7
7
|
expect(entry.failure?).to be_true
|
@@ -1,22 +1,22 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Importer::Mapper::DefaultFieldMapping do
|
3
|
+
describe Topographer::Importer::Mapper::DefaultFieldMapping do
|
4
4
|
let(:static_mapping) do
|
5
|
-
Importer::Mapper::DefaultFieldMapping.new('field1') do
|
5
|
+
Topographer::Importer::Mapper::DefaultFieldMapping.new('field1') do
|
6
6
|
10+5
|
7
7
|
end
|
8
8
|
end
|
9
9
|
let(:failed_static_mapping) do
|
10
|
-
Importer::Mapper::DefaultFieldMapping.new('field1') do
|
10
|
+
Topographer::Importer::Mapper::DefaultFieldMapping.new('field1') do
|
11
11
|
raise 'FAILURE'
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
let(:result) { Importer::Mapper::Result.new('test') }
|
16
|
-
let(:result2) { Importer::Mapper::Result.new('test') }
|
15
|
+
let(:result) { Topographer::Importer::Mapper::Result.new('test') }
|
16
|
+
let(:result2) { Topographer::Importer::Mapper::Result.new('test') }
|
17
17
|
describe '#initialize' do
|
18
18
|
it 'should not create a static mapping without a behavior block' do
|
19
|
-
expect { Importer::Mapper::DefaultFieldMapping.new('broken mapping') }.
|
19
|
+
expect { Topographer::Importer::Mapper::DefaultFieldMapping.new('broken mapping') }.
|
20
20
|
to raise_error(Topographer::InvalidMappingError)
|
21
21
|
end
|
22
22
|
end
|
@@ -32,7 +32,7 @@ describe Importer::Mapper::DefaultFieldMapping do
|
|
32
32
|
expect(result.errors.values).to include('FAILURE')
|
33
33
|
end
|
34
34
|
it 'should not rescue Exceptions that do not inherit from standard error' do
|
35
|
-
mapper = Importer::Mapper::DefaultFieldMapping.new('output_column') do
|
35
|
+
mapper = Topographer::Importer::Mapper::DefaultFieldMapping.new('output_column') do
|
36
36
|
raise Exception, 'Field1 MUST BE 4'
|
37
37
|
end
|
38
38
|
expect{ mapper.process_input({'field1' => false}, result) }.to raise_error(Exception)
|
@@ -1,25 +1,25 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Importer::Mapper::FieldMapping do
|
4
|
-
let(:required_simple_mapping) { Importer::Mapper::FieldMapping.new(true, ['field1'], 'output_column') }
|
3
|
+
describe Topographer::Importer::Mapper::FieldMapping do
|
4
|
+
let(:required_simple_mapping) { Topographer::Importer::Mapper::FieldMapping.new(true, ['field1'], 'output_column') }
|
5
5
|
let(:required_simple_mapping_with_validation) do
|
6
|
-
Importer::Mapper::FieldMapping.new(true, ['field1'], 'output_column') do |input|
|
6
|
+
Topographer::Importer::Mapper::FieldMapping.new(true, ['field1'], 'output_column') do |input|
|
7
7
|
if input['field1'] != 4
|
8
8
|
raise 'Field1 MUST BE 4'
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
12
12
|
let(:required_complex_mapping) do
|
13
|
-
Importer::Mapper::FieldMapping.new(true, ['field1', 'field2', 'field3'], 'output_column') do |input|
|
13
|
+
Topographer::Importer::Mapper::FieldMapping.new(true, ['field1', 'field2', 'field3'], 'output_column') do |input|
|
14
14
|
if input['field1'] != 4
|
15
15
|
raise 'Field1 MUST BE 4'
|
16
16
|
end
|
17
17
|
input.values.flatten.inject(0) {|sum, x| sum+x}
|
18
18
|
end
|
19
19
|
end
|
20
|
-
let(:optional_simple_mapping) { Importer::Mapper::FieldMapping.new(false, 'field1', 'output_column') }
|
20
|
+
let(:optional_simple_mapping) { Topographer::Importer::Mapper::FieldMapping.new(false, 'field1', 'output_column') }
|
21
21
|
let(:optional_complex_mapping) do
|
22
|
-
Importer::Mapper::FieldMapping.new(false, ['field1', 'field2', 'field3'], 'output_column') do |input|
|
22
|
+
Topographer::Importer::Mapper::FieldMapping.new(false, ['field1', 'field2', 'field3'], 'output_column') do |input|
|
23
23
|
if input['field1'] != 4
|
24
24
|
raise 'Field1 MUST BE 4'
|
25
25
|
end
|
@@ -32,7 +32,7 @@ describe Importer::Mapper::FieldMapping do
|
|
32
32
|
let(:invalid_complex_input) do
|
33
33
|
{'field1' => 3, 'field2' => 4, 'field3' => 5}
|
34
34
|
end
|
35
|
-
let(:result) { Importer::Mapper::Result.new('test') }
|
35
|
+
let(:result) { Topographer::Importer::Mapper::Result.new('test') }
|
36
36
|
describe '#process_input' do
|
37
37
|
context 'required mappings' do
|
38
38
|
it 'maps required simple mappings when input is valid' do
|
@@ -116,7 +116,7 @@ describe Importer::Mapper::FieldMapping do
|
|
116
116
|
expect(result.data['output_column']).to eql(false)
|
117
117
|
end
|
118
118
|
it 'should not rescue Exceptions that do not inherit from standard error' do
|
119
|
-
mapper = Importer::Mapper::FieldMapping.new(true, 'field1', 'output_column') do |input|
|
119
|
+
mapper = Topographer::Importer::Mapper::FieldMapping.new(true, 'field1', 'output_column') do |input|
|
120
120
|
raise Exception, 'Field1 MUST BE 4'
|
121
121
|
end
|
122
122
|
expect{ mapper.process_input({'field1' => false}, result) }.to raise_error(Exception)
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Importer::Mapper::ValidationFieldMapping do
|
3
|
+
describe Topographer::Importer::Mapper::ValidationFieldMapping do
|
4
4
|
let(:validation_mapping) do
|
5
|
-
Importer::Mapper::ValidationFieldMapping.new('test mapping', ['field1', 'field2', 'field3']) do |input|
|
5
|
+
Topographer::Importer::Mapper::ValidationFieldMapping.new('test mapping', ['field1', 'field2', 'field3']) do |input|
|
6
6
|
sum = input.values.flatten.inject(0) {|sum, x| sum+x}
|
7
7
|
raise 'Sum must be 15' if sum != 15
|
8
8
|
end
|
@@ -13,10 +13,10 @@ describe Importer::Mapper::ValidationFieldMapping do
|
|
13
13
|
let(:invalid_input) do
|
14
14
|
{'field1' => 3, 'field2' => 4, 'field3' => 5}
|
15
15
|
end
|
16
|
-
let(:result) { Importer::Mapper::Result.new('test') }
|
16
|
+
let(:result) { Topographer::Importer::Mapper::Result.new('test') }
|
17
17
|
describe '#initialize' do
|
18
18
|
it 'should not create a validation mapping without a behavior block' do
|
19
|
-
expect { Importer::Mapper::ValidationFieldMapping.new('test mapping', ['field1', 'field2', 'field3']) }.
|
19
|
+
expect { Topographer::Importer::Mapper::ValidationFieldMapping.new('test mapping', ['field1', 'field2', 'field3']) }.
|
20
20
|
to raise_error(Topographer::InvalidMappingError)
|
21
21
|
end
|
22
22
|
end
|
@@ -32,7 +32,7 @@ describe Importer::Mapper::ValidationFieldMapping do
|
|
32
32
|
expect(result.errors.values).to include('Sum must be 15')
|
33
33
|
end
|
34
34
|
it 'should not rescue Exceptions that do not inherit from standard error' do
|
35
|
-
mapper = Importer::Mapper::ValidationFieldMapping.new('test mapping', ['field1', 'field2', 'field3']) do |input|
|
35
|
+
mapper = Topographer::Importer::Mapper::ValidationFieldMapping.new('test mapping', ['field1', 'field2', 'field3']) do |input|
|
36
36
|
sum = input.values.flatten.inject(0) {|sum, x| sum+x}
|
37
37
|
raise Exception, 'Sum must be 15' if sum != 15
|
38
38
|
end
|
@@ -1,24 +1,24 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Importer::Mapper do
|
3
|
+
describe Topographer::Importer::Mapper do
|
4
4
|
describe '.build_mapper' do
|
5
5
|
describe 'required mappings' do
|
6
6
|
it 'can require a one to one field mapping' do
|
7
|
-
mapper = Importer::Mapper.build_mapper(Object) do |m|
|
7
|
+
mapper = Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
8
8
|
m.required_mapping 'Field1', 'field_1'
|
9
9
|
end
|
10
10
|
mapper.required_columns.should include("Field1")
|
11
11
|
mapper.output_fields.should include('field_1')
|
12
12
|
end
|
13
13
|
it 'can require a many to one field mapping' do
|
14
|
-
mapper = Importer::Mapper.build_mapper(Object) do |m|
|
14
|
+
mapper = Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
15
15
|
m.required_mapping ['Field1', 'Field2'], 'field_1'
|
16
16
|
end
|
17
17
|
mapper.required_columns.should include("Field1", "Field2")
|
18
18
|
mapper.output_fields.should include('field_1')
|
19
19
|
end
|
20
20
|
it 'cannot require a one to many field mapping' do
|
21
|
-
expect { mapper = Importer::Mapper.build_mapper(Object) do |m|
|
21
|
+
expect { mapper = Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
22
22
|
m.required_mapping 'Field1', ['field_1', 'field_2']
|
23
23
|
end
|
24
24
|
}.to raise_error(Topographer::InvalidMappingError)
|
@@ -26,21 +26,21 @@ describe Importer::Mapper do
|
|
26
26
|
end
|
27
27
|
describe 'optional mappings' do
|
28
28
|
it 'can create an optional one to one field mapping' do
|
29
|
-
mapper = Importer::Mapper.build_mapper(Object) do |m|
|
29
|
+
mapper = Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
30
30
|
m.optional_mapping 'Field1', 'field_1'
|
31
31
|
end
|
32
32
|
mapper.optional_columns.should include("Field1")
|
33
33
|
mapper.output_fields.should include('field_1')
|
34
34
|
end
|
35
35
|
it 'can create an optional many to one field mapping' do
|
36
|
-
mapper = Importer::Mapper.build_mapper(Object) do |m|
|
36
|
+
mapper = Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
37
37
|
m.optional_mapping ['Field1', 'Field2'], 'field_1'
|
38
38
|
end
|
39
39
|
mapper.optional_columns.should include("Field1", "Field2")
|
40
40
|
mapper.output_fields.should include('field_1')
|
41
41
|
end
|
42
42
|
it 'cannot create an optional one to many field mapping' do
|
43
|
-
expect { mapper = Importer::Mapper.build_mapper(Object) do |m|
|
43
|
+
expect { mapper = Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
44
44
|
m.optional_mapping 'Field1', ['field_1', 'field_2']
|
45
45
|
end
|
46
46
|
}.to raise_error(Topographer::InvalidMappingError)
|
@@ -48,7 +48,7 @@ describe Importer::Mapper do
|
|
48
48
|
end
|
49
49
|
describe 'ignored mappings' do
|
50
50
|
it 'can ignore a column' do
|
51
|
-
mapper = Importer::Mapper.build_mapper(Object) do |m|
|
51
|
+
mapper = Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
52
52
|
m.ignored_column 'Field1'
|
53
53
|
end
|
54
54
|
mapper.ignored_columns.should include('Field1')
|
@@ -56,21 +56,21 @@ describe Importer::Mapper do
|
|
56
56
|
end
|
57
57
|
|
58
58
|
it 'raises an error when adding a mapping whose output is already an output of another mapping' do
|
59
|
-
expect { Importer::Mapper.build_mapper(Object) do |m|
|
59
|
+
expect { Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
60
60
|
m.optional_mapping 'Field1', 'field_1'
|
61
61
|
m.required_mapping 'Field2', 'field_1'
|
62
62
|
end }.to raise_error(Topographer::InvalidMappingError)
|
63
63
|
end
|
64
64
|
|
65
65
|
it 'raises an error when adding a ignored column, which is already an input of another mapping' do
|
66
|
-
expect { Importer::Mapper.build_mapper(Object) do |m|
|
66
|
+
expect { Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
67
67
|
m.optional_mapping 'Field1', 'field_1'
|
68
68
|
m.ignored_column 'Field1'
|
69
69
|
end }.to raise_error(Topographer::InvalidMappingError)
|
70
70
|
end
|
71
71
|
|
72
72
|
it 'raises an error when adding a mapped column which has already been ignored' do
|
73
|
-
expect { Importer::Mapper.build_mapper(Object) do |m|
|
73
|
+
expect { Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
74
74
|
m.ignored_column 'Field1'
|
75
75
|
m.optional_mapping 'Field1', 'field_1'
|
76
76
|
end }.to raise_error(Topographer::InvalidMappingError)
|
@@ -79,7 +79,7 @@ describe Importer::Mapper do
|
|
79
79
|
|
80
80
|
describe 'validation mappings' do
|
81
81
|
it 'can create a single column validation' do
|
82
|
-
mapper = Importer::Mapper.build_mapper(Object) do |m|
|
82
|
+
mapper = Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
83
83
|
m.validation_field 'Field 1 Validation', 'Field1' do |input|
|
84
84
|
raise 'No Input' unless input
|
85
85
|
end
|
@@ -88,7 +88,7 @@ describe Importer::Mapper do
|
|
88
88
|
expect(mapper.output_fields.empty?).to be_true
|
89
89
|
end
|
90
90
|
it 'can create a multicolumn validation' do
|
91
|
-
mapper = Importer::Mapper.build_mapper(Object) do |m|
|
91
|
+
mapper = Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
92
92
|
m.validation_field 'Multicolumn Validation', ['Field1', 'Field2'] do |input|
|
93
93
|
raise 'No Input' unless input
|
94
94
|
end
|
@@ -98,7 +98,7 @@ describe Importer::Mapper do
|
|
98
98
|
end
|
99
99
|
it 'raises an error if a validation name is repeated' do
|
100
100
|
expect {
|
101
|
-
mapper = Importer::Mapper.build_mapper(Object) do |m|
|
101
|
+
mapper = Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
102
102
|
m.validation_field 'Field 1 Validation', 'Field1' do |input|
|
103
103
|
raise 'No Input' unless input
|
104
104
|
end
|
@@ -110,7 +110,7 @@ describe Importer::Mapper do
|
|
110
110
|
|
111
111
|
describe 'static mappings' do
|
112
112
|
it 'can create a static mapping' do
|
113
|
-
mapper = Importer::Mapper.build_mapper(Object) do |m|
|
113
|
+
mapper = Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
114
114
|
m.default_value 'Field1' do
|
115
115
|
34
|
116
116
|
end
|
@@ -119,14 +119,14 @@ describe Importer::Mapper do
|
|
119
119
|
expect(mapper.output_fields).to eql(['Field1'])
|
120
120
|
end
|
121
121
|
it 'cannot create a static mapping to many columns' do
|
122
|
-
expect { mapper = Importer::Mapper.build_mapper(Object) do |m|
|
122
|
+
expect { mapper = Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
123
123
|
m.default_value ['Field1', 'Field2'] do
|
124
124
|
34
|
125
125
|
end
|
126
126
|
end }.to raise_error(Topographer::InvalidMappingError)
|
127
127
|
end
|
128
128
|
it 'cannot add a static mapping to a field that has already been mapped' do
|
129
|
-
expect { mapper = Importer::Mapper.build_mapper(Object) do |m|
|
129
|
+
expect { mapper = Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
130
130
|
m.required_mapping 'Field1', 'field1'
|
131
131
|
m.default_value 'field1' do
|
132
132
|
34
|
@@ -136,7 +136,7 @@ describe Importer::Mapper do
|
|
136
136
|
end
|
137
137
|
|
138
138
|
it 'associates the model class with the mapper instance' do
|
139
|
-
mapper = Importer::Mapper.build_mapper(Object) do |m|
|
139
|
+
mapper = Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
140
140
|
m.ignored_column 'Field1'
|
141
141
|
m.optional_mapping 'Field2', 'field_1'
|
142
142
|
end
|
@@ -145,7 +145,7 @@ describe Importer::Mapper do
|
|
145
145
|
end
|
146
146
|
|
147
147
|
describe '#key_field' do
|
148
|
-
let(:mapper) { Importer::Mapper.new(Object) }
|
148
|
+
let(:mapper) { Topographer::Importer::Mapper.new(Object) }
|
149
149
|
it 'should add a key field to the list of key fields' do
|
150
150
|
mapper.key_field 'Field1'
|
151
151
|
expect(mapper.key_fields).to eql(['Field1'])
|
@@ -165,7 +165,7 @@ describe Importer::Mapper do
|
|
165
165
|
|
166
166
|
describe '#input_structure_valid?' do
|
167
167
|
let(:mapper) do
|
168
|
-
Importer::Mapper.build_mapper(Object) do |m|
|
168
|
+
Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
169
169
|
m.required_mapping 'Field1', 'field1'
|
170
170
|
m.required_mapping 'Field2', 'field_4'
|
171
171
|
m.optional_mapping 'Field3', 'field_6'
|
@@ -203,7 +203,7 @@ describe Importer::Mapper do
|
|
203
203
|
|
204
204
|
describe '#bad_columns' do
|
205
205
|
let(:mapper) do
|
206
|
-
Importer::Mapper.build_mapper(Object) do |m|
|
206
|
+
Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
207
207
|
m.required_mapping 'Field1', 'field1'
|
208
208
|
m.required_mapping 'Field2', 'field_4'
|
209
209
|
m.validation_field('test validation 2', 'Field2') { |input| raise 'FAILURE' if !input }
|
@@ -222,7 +222,7 @@ describe Importer::Mapper do
|
|
222
222
|
|
223
223
|
describe '#missing_columns' do
|
224
224
|
let(:mapper) do
|
225
|
-
Importer::Mapper.build_mapper(Object) do |m|
|
225
|
+
Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
226
226
|
m.required_mapping 'Field1', 'field1'
|
227
227
|
m.required_mapping 'Field2', 'field_4'
|
228
228
|
m.optional_mapping 'Field3', 'field_6'
|
@@ -240,7 +240,7 @@ describe Importer::Mapper do
|
|
240
240
|
|
241
241
|
describe '#map_input' do
|
242
242
|
let(:mapper) do
|
243
|
-
Importer::Mapper.build_mapper(Object) do |m|
|
243
|
+
Topographer::Importer::Mapper.build_mapper(Object) do |m|
|
244
244
|
m.required_mapping 'Field1', 'field_1'
|
245
245
|
m.required_mapping ['Field1', 'Field2'], 'field_2'
|
246
246
|
m.validation_field('Field2 Validation', 'Field2') { |input| raise 'FAILURE' if input['Field2'] != 'datum2'}
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Importer::Strategy::Base do
|
3
|
+
describe Topographer::Importer::Strategy::Base do
|
4
4
|
let(:mapper) do
|
5
5
|
double('Mapper')
|
6
6
|
end
|
7
|
-
let(:strategy) { Importer::Strategy::Base.new(mapper) }
|
7
|
+
let(:strategy) { Topographer::Importer::Strategy::Base.new(mapper) }
|
8
8
|
let(:status) do
|
9
9
|
double 'Status',
|
10
10
|
errors?: false
|
@@ -15,7 +15,7 @@ describe Importer::Strategy::Base do
|
|
15
15
|
end
|
16
16
|
describe '#initialize' do
|
17
17
|
it 'creates a new Strategy instance with the given mapper' do
|
18
|
-
strategy = Importer::Strategy::Base.new(mapper)
|
18
|
+
strategy = Topographer::Importer::Strategy::Base.new(mapper)
|
19
19
|
strategy.instance_variable_get(:@mapper).should be(mapper)
|
20
20
|
end
|
21
21
|
end
|
@@ -2,9 +2,9 @@ require 'spec_helper'
|
|
2
2
|
require 'ostruct'
|
3
3
|
require_relative 'mapped_model'
|
4
4
|
|
5
|
-
describe Importer::Strategy::CreateOrUpdateRecord do
|
5
|
+
describe Topographer::Importer::Strategy::CreateOrUpdateRecord do
|
6
6
|
|
7
|
-
let(:strategy) { Importer::Strategy::CreateOrUpdateRecord.new(MappedModel.get_mapper) }
|
7
|
+
let(:strategy) { Topographer::Importer::Strategy::CreateOrUpdateRecord.new(MappedModel.get_mapper) }
|
8
8
|
let(:input) do
|
9
9
|
double 'Data',
|
10
10
|
source_identifier: 'record',
|
@@ -20,7 +20,7 @@ describe Importer::Strategy::CreateOrUpdateRecord do
|
|
20
20
|
|
21
21
|
describe '#import_record' do
|
22
22
|
it 'should return an ImportStatus object' do
|
23
|
-
expect(strategy.import_record(input)).to be_a Importer::Strategy::ImportStatus
|
23
|
+
expect(strategy.import_record(input)).to be_a Topographer::Importer::Strategy::ImportStatus
|
24
24
|
end
|
25
25
|
it 'should import a record from valid input' do
|
26
26
|
MappedModel.any_instance.should_receive(:save).once
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'ostruct'
|
3
3
|
require_relative 'mapped_model'
|
4
4
|
|
5
|
-
describe Importer::Strategy::ImportNewRecord do
|
5
|
+
describe Topographer::Importer::Strategy::ImportNewRecord do
|
6
6
|
let(:valid_status) do
|
7
7
|
double 'Result',
|
8
8
|
source_identifier: 'row1',
|
@@ -22,7 +22,7 @@ describe Importer::Strategy::ImportNewRecord do
|
|
22
22
|
double('Mapper', map_input: valid_status, model_class: MappedModel)
|
23
23
|
end
|
24
24
|
|
25
|
-
let(:strategy) { Importer::Strategy::ImportNewRecord.new(MappedModel.get_mapper) }
|
25
|
+
let(:strategy) { Topographer::Importer::Strategy::ImportNewRecord.new(MappedModel.get_mapper) }
|
26
26
|
let(:input) do
|
27
27
|
double 'Data',
|
28
28
|
source_identifier: 'record',
|
@@ -32,14 +32,14 @@ describe Importer::Strategy::ImportNewRecord do
|
|
32
32
|
|
33
33
|
describe '#initialize' do
|
34
34
|
it 'creates a new Strategy instance with the given mapper' do
|
35
|
-
strategy = Importer::Strategy::ImportNewRecord.new(mapper)
|
35
|
+
strategy = Topographer::Importer::Strategy::ImportNewRecord.new(mapper)
|
36
36
|
strategy.instance_variable_get(:@mapper).should be(mapper)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
40
|
describe '#import_record' do
|
41
41
|
it 'should return an ImportStatus object' do
|
42
|
-
expect(strategy.import_record(input)).to be_a Importer::Strategy::ImportStatus
|
42
|
+
expect(strategy.import_record(input)).to be_a Topographer::Importer::Strategy::ImportStatus
|
43
43
|
end
|
44
44
|
it 'should import a record from valid input' do
|
45
45
|
MappedModel.any_instance.should_receive(:save).once
|
@@ -48,7 +48,7 @@ describe Importer::Strategy::ImportNewRecord do
|
|
48
48
|
end
|
49
49
|
it 'should not import a record from invalid input' do
|
50
50
|
mapper.stub(:map_input).and_return(invalid_result)
|
51
|
-
strategy = Importer::Strategy::ImportNewRecord.new(mapper)
|
51
|
+
strategy = Topographer::Importer::Strategy::ImportNewRecord.new(mapper)
|
52
52
|
MappedModel.any_instance.should_not_receive(:save)
|
53
53
|
import_status = strategy.import_record(input)
|
54
54
|
expect(import_status.errors?).to be true
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Importer::Strategy::ImportStatus do
|
4
|
-
let(:status) {Importer::Strategy::ImportStatus.new('row1')}
|
3
|
+
describe Topographer::Importer::Strategy::ImportStatus do
|
4
|
+
let(:status) {Topographer::Importer::Strategy::ImportStatus.new('row1')}
|
5
5
|
describe '#add_error' do
|
6
6
|
it 'should add errors' do
|
7
7
|
status.add_error(:validation, 'ERROR')
|
@@ -22,7 +22,7 @@ class MappedModel < OpenStruct
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def self.get_mapper
|
25
|
-
Importer::Mapper.build_mapper(MappedModel) do |mapping|
|
25
|
+
Topographer::Importer::Mapper.build_mapper(MappedModel) do |mapping|
|
26
26
|
mapping.required_mapping 'Field1', 'field_1'
|
27
27
|
mapping.required_mapping 'Field2', 'field_2'
|
28
28
|
mapping.optional_mapping 'Field3', 'field_3'
|
@@ -2,9 +2,9 @@ require 'spec_helper'
|
|
2
2
|
require 'ostruct'
|
3
3
|
require_relative 'mapped_model'
|
4
4
|
|
5
|
-
describe Importer::Strategy::UpdateRecord do
|
5
|
+
describe Topographer::Importer::Strategy::UpdateRecord do
|
6
6
|
|
7
|
-
let(:strategy) { Importer::Strategy::UpdateRecord.new(MappedModel.get_mapper) }
|
7
|
+
let(:strategy) { Topographer::Importer::Strategy::UpdateRecord.new(MappedModel.get_mapper) }
|
8
8
|
let(:input) do
|
9
9
|
double 'Data',
|
10
10
|
source_identifier: 'record',
|
@@ -19,7 +19,7 @@ describe Importer::Strategy::UpdateRecord do
|
|
19
19
|
|
20
20
|
describe '#import_record' do
|
21
21
|
it 'should return an ImportStatus object' do
|
22
|
-
expect(strategy.import_record(input)).to be_a Importer::Strategy::ImportStatus
|
22
|
+
expect(strategy.import_record(input)).to be_a Topographer::Importer::Strategy::ImportStatus
|
23
23
|
end
|
24
24
|
it 'should import a record from valid input' do
|
25
25
|
MappedModel.any_instance.should_receive(:save).once
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: topographer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Simpson
|
@@ -15,14 +15,14 @@ dependencies:
|
|
15
15
|
name: activesupport
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - '>='
|
18
|
+
- - ! '>='
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '3'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - '>='
|
25
|
+
- - ! '>='
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '3'
|
28
28
|
- !ruby/object:Gem::Dependency
|
@@ -43,28 +43,28 @@ dependencies:
|
|
43
43
|
name: rake
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - '>='
|
46
|
+
- - ! '>='
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - '>='
|
53
|
+
- - ! '>='
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: rspec
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- - '>='
|
60
|
+
- - ! '>='
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - '>='
|
67
|
+
- - ! '>='
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
description: Topographer enables importing of models from various input sources.
|
@@ -139,17 +139,17 @@ require_paths:
|
|
139
139
|
- lib
|
140
140
|
required_ruby_version: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
|
-
- - '>='
|
142
|
+
- - ! '>='
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '0'
|
145
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
146
|
requirements:
|
147
|
-
- - '>='
|
147
|
+
- - ! '>='
|
148
148
|
- !ruby/object:Gem::Version
|
149
149
|
version: '0'
|
150
150
|
requirements: []
|
151
151
|
rubyforge_project:
|
152
|
-
rubygems_version: 2.1.
|
152
|
+
rubygems_version: 2.1.10
|
153
153
|
signing_key:
|
154
154
|
specification_version: 4
|
155
155
|
summary: Topographer allows the mapping of columnar input data to fields for active
|
@@ -173,3 +173,4 @@ test_files:
|
|
173
173
|
- spec/Cartographer/importer/strategy/mapped_model.rb
|
174
174
|
- spec/Cartographer/importer/strategy/update_record_spec.rb
|
175
175
|
- spec/spec_helper.rb
|
176
|
+
has_rdoc:
|