efo_nelfo 1.3.1 → 1.3.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 +4 -4
- data/lib/efo_nelfo/post_type.rb +9 -1
- data/lib/efo_nelfo/reader/csv.rb +8 -13
- data/lib/efo_nelfo/version.rb +1 -1
- data/spec/spec_helper.rb +13 -0
- data/spec/vl_spec.rb +25 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78ab950b02b7049200da1e0e5de3b2e652dafd54
|
4
|
+
data.tar.gz: 179c82aa18e4812ac7850cdcf368bad9dfa66b43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0d8371775eed749b0f1ee7351f4cdb03fffa79d4d9bc806394e034e9f7b623d980aa535b37c55aa21472743915b73e34b65c14023d94f3518de6d0699b40f31
|
7
|
+
data.tar.gz: d18f93c56c3b188942a84ee39a6b5b7269f38fe732c53f799f0c00c2fe6463d8bc828e646afa30fe4a5241bf05c6b42a2f3dab6d5b1d4d2b8a96b520025d8487
|
data/lib/efo_nelfo/post_type.rb
CHANGED
@@ -35,10 +35,18 @@ module EfoNelfo
|
|
35
35
|
self.for(hash[:post_type], hash[:version]).new(hash)
|
36
36
|
end
|
37
37
|
|
38
|
+
def parse(csv)
|
39
|
+
new EfoNelfo::Reader::CSV.new(data: csv).first
|
40
|
+
end
|
41
|
+
|
38
42
|
end
|
39
43
|
|
40
44
|
def initialize(*args)
|
41
|
-
|
45
|
+
if args && args.first.is_a?(Array)
|
46
|
+
initialize_attributes Hash[properties.keys.zip(args.first)]
|
47
|
+
else
|
48
|
+
initialize_attributes(*args)
|
49
|
+
end
|
42
50
|
end
|
43
51
|
|
44
52
|
def post_type
|
data/lib/efo_nelfo/reader/csv.rb
CHANGED
@@ -29,7 +29,7 @@ module EfoNelfo
|
|
29
29
|
|
30
30
|
def parse
|
31
31
|
# Create the head object based on the first row
|
32
|
-
head = parse_head
|
32
|
+
head = parse_head first
|
33
33
|
head.source = @data
|
34
34
|
|
35
35
|
# Read rest of the file and add them to the head
|
@@ -38,28 +38,23 @@ module EfoNelfo
|
|
38
38
|
klass = EfoNelfo::PostType.for row[0], head.version
|
39
39
|
next if klass.nil?
|
40
40
|
|
41
|
-
|
42
|
-
head.add line
|
41
|
+
head.add klass.new(row)
|
43
42
|
end
|
44
43
|
|
45
44
|
head
|
46
45
|
end
|
47
46
|
|
47
|
+
# Returns the first row of the csv file
|
48
|
+
def first
|
49
|
+
csv.first
|
50
|
+
end
|
51
|
+
|
48
52
|
private
|
49
53
|
|
50
54
|
def parse_head(row)
|
51
55
|
klass = EfoNelfo::PostType.for row[0], row[2]
|
52
56
|
raise EfoNelfo::UnsupportedPostType.new("Don't know how to handle v#{row[2]} of #{row[0]}") if klass.nil?
|
53
|
-
|
54
|
-
initialize_object_with_properties klass, row
|
55
|
-
end
|
56
|
-
|
57
|
-
def initialize_object_with_properties(klass, columns)
|
58
|
-
object = klass.new
|
59
|
-
object.class.properties.each_with_index do |property, i|
|
60
|
-
object.send "#{property.first}=", columns[i]
|
61
|
-
end
|
62
|
-
object
|
57
|
+
klass.new row
|
63
58
|
end
|
64
59
|
|
65
60
|
end
|
data/lib/efo_nelfo/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -15,3 +15,16 @@ end
|
|
15
15
|
def csv(filename)
|
16
16
|
File.expand_path("../samples/#{filename}", __FILE__)
|
17
17
|
end
|
18
|
+
|
19
|
+
# Add 'its' to minitest - copied from https://github.com/agileanimal/its-minitest (gem doesn't work)
|
20
|
+
class MiniTest::Spec
|
21
|
+
def self.its attribute, &block
|
22
|
+
describe "verify subject.#{attribute} for" do
|
23
|
+
let(:inner_subject) { subject.send(attribute) }
|
24
|
+
|
25
|
+
it "verify subject.#{attribute} for" do
|
26
|
+
inner_subject.instance_eval &block
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/spec/vl_spec.rb
CHANGED
@@ -4,6 +4,31 @@ describe EfoNelfo::V40::VL do
|
|
4
4
|
|
5
5
|
let(:vl) { EfoNelfo::V40::VL.new }
|
6
6
|
|
7
|
+
describe '.parse' do
|
8
|
+
let(:csv) { "VL;4;9455483;10-13 AF-2 Armaflex rull/krt.;35 mtr/krt. Cellegummi;2;MTR;METER;3500;10000;20130401;2;;P94551;ARMACELL G;;J;;;B" }
|
9
|
+
subject { EfoNelfo::V40::VL.parse csv }
|
10
|
+
|
11
|
+
it { subject.must_be_instance_of EfoNelfo::V40::VL }
|
12
|
+
|
13
|
+
its(:product_type) { must_equal 4 }
|
14
|
+
its(:post_type) { must_equal "VL" }
|
15
|
+
its(:product_type) { must_equal 4 }
|
16
|
+
its(:product_number) { must_equal "9455483" }
|
17
|
+
its(:name) { must_equal "10-13 AF-2 Armaflex rull/krt." }
|
18
|
+
its(:description) { must_equal "35 mtr/krt. Cellegummi" }
|
19
|
+
its(:unit) { must_equal 2 }
|
20
|
+
its(:price_unit) { must_equal "MTR" }
|
21
|
+
its(:price_unit_desc) { must_equal "METER" }
|
22
|
+
its(:price) { must_equal 3500 }
|
23
|
+
its(:amount) { must_equal 10000 }
|
24
|
+
its(:price_date) { must_equal Date.new(2013,4,1) }
|
25
|
+
its(:status) { must_equal 2 }
|
26
|
+
its(:block_number) { must_be_nil }
|
27
|
+
its(:discount_group) { must_equal "P94551" }
|
28
|
+
its(:fabrication) { must_equal "ARMACELL G" }
|
29
|
+
its(:type) { must_be_nil }
|
30
|
+
end
|
31
|
+
|
7
32
|
it "#weight returns the weight in gram" do
|
8
33
|
vl.info << { field: 'VEKT', value: 250 }
|
9
34
|
vl.weight.must_equal 250
|