bbmb 2.0.9 → 2.1.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.
- checksums.yaml +4 -4
- data/History.txt +4 -0
- data/lib/bbmb/model/product.rb +45 -14
- data/lib/bbmb/version.rb +1 -1
- data/test/model/test_product.rb +19 -3
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a3b93d7a7e2800135e52951c1e54b67b04bb4b0a
|
4
|
+
data.tar.gz: 61a41c9428776513b2a11037880e421b6f5eb3a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aace6d576d08d5e9887da6a160f4dc0c08e6c4f2e066b18482d80a95c344c402771022b0afb6f065deaa6a9e5f893c9d71b0a16240261d90c6c1405a75b3dcf9
|
7
|
+
data.tar.gz: eeff85c50055ce4607c6b52dc901c1f3fa9c3e156b2cc4293ea5a00400940fea7c9715697460b979460ee47ec6878a3576c6fc128b91eff7d0a50521f159cc5e
|
data/History.txt
CHANGED
data/lib/bbmb/model/product.rb
CHANGED
@@ -62,12 +62,48 @@ class ProductInfo < Subject
|
|
62
62
|
instance_variable_get("@l#{level}_qty")
|
63
63
|
end
|
64
64
|
end
|
65
|
-
|
66
|
-
self
|
67
|
-
end
|
65
|
+
|
68
66
|
def ==(other)
|
69
67
|
other.is_a?(ProductInfo) && @article_number == other.article_number
|
70
68
|
end
|
69
|
+
|
70
|
+
def to_info
|
71
|
+
self
|
72
|
+
end
|
73
|
+
|
74
|
+
def to_product
|
75
|
+
convert_to(Product)
|
76
|
+
end
|
77
|
+
|
78
|
+
private
|
79
|
+
|
80
|
+
# Converts as new instance
|
81
|
+
#
|
82
|
+
# @param [Class] klass New class {Product|ProductInfo}
|
83
|
+
# @return [Array(Product,ProductInfo)] new instance
|
84
|
+
def convert_to(klass)
|
85
|
+
base_keys = %i{
|
86
|
+
backorder_date catalogue1 catalogue2 catalogue3
|
87
|
+
description ean13 expiry_date partner_index pcode status
|
88
|
+
}
|
89
|
+
keys = case klass.to_s
|
90
|
+
when 'BBMB::Model::Product'
|
91
|
+
base_keys
|
92
|
+
when 'BBMB::Model::ProductInfo'
|
93
|
+
base_keys += %i{
|
94
|
+
vat price
|
95
|
+
l1_qty l2_qty l3_qty l4_qty l5_qty l6_qty
|
96
|
+
l1_price l2_price l3_price l4_price l5_price l6_price
|
97
|
+
}
|
98
|
+
else
|
99
|
+
raise "Unknown class #{klass}"
|
100
|
+
end
|
101
|
+
obj = klass.new(@article_number)
|
102
|
+
keys.each { |key| obj.send("#{key}=", self.send(key)) }
|
103
|
+
obj.promotion = @promotion.dup if (@promotion && @promotion.current?)
|
104
|
+
obj.sale = @sale.dup if (@sale && @sale.current?)
|
105
|
+
obj
|
106
|
+
end
|
71
107
|
end
|
72
108
|
class Product < ProductInfo
|
73
109
|
def backorder=(value)
|
@@ -81,18 +117,13 @@ class Product < ProductInfo
|
|
81
117
|
def current_promo
|
82
118
|
[@sale, @promotion].find { |promo| promo && promo.current? }
|
83
119
|
end
|
120
|
+
|
121
|
+
def to_product
|
122
|
+
self
|
123
|
+
end
|
124
|
+
|
84
125
|
def to_info
|
85
|
-
|
86
|
-
[ :backorder_date, :catalogue1, :catalogue2, :catalogue3,
|
87
|
-
:description, :ean13, :expiry_date, :partner_index, :pcode,
|
88
|
-
:status, :l1_qty, :l2_qty, :l3_qty, :l4_qty, :l5_qty, :l6_qty, :vat,
|
89
|
-
:price, :l1_price, :l2_price, :l3_price, :l4_price, :l5_price, :l6_price
|
90
|
-
].each { |key|
|
91
|
-
info.send("#{key}=", self.send(key))
|
92
|
-
}
|
93
|
-
info.promotion = @promotion.dup if(@promotion && @promotion.current?)
|
94
|
-
info.sale = @sale.dup if(@sale && @sale.current?)
|
95
|
-
info
|
126
|
+
convert_to(ProductInfo)
|
96
127
|
end
|
97
128
|
end
|
98
129
|
end
|
data/lib/bbmb/version.rb
CHANGED
data/test/model/test_product.rb
CHANGED
@@ -79,13 +79,29 @@ class TestProduct < Minitest::Test
|
|
79
79
|
@product.l6_price = 16.50
|
80
80
|
assert_equal(16.50, @product.price(6))
|
81
81
|
end
|
82
|
-
|
82
|
+
|
83
|
+
def test_to_info
|
83
84
|
info = @product.to_info
|
84
85
|
assert_instance_of(ProductInfo, info)
|
85
86
|
assert_equal('article_number', info.article_number)
|
86
|
-
|
87
|
-
|
87
|
+
assert_equal(info, info.to_info)
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_to_product
|
91
|
+
product = @product.to_info.to_product
|
92
|
+
assert_instance_of(Product, product)
|
93
|
+
assert_equal('article_number', product.article_number)
|
94
|
+
assert_equal(product, product.to_product)
|
95
|
+
%w{
|
96
|
+
backorder_date catalogue1 catalogue2 catalogue3
|
97
|
+
description ean13 expiry_date partner_index pcode status
|
98
|
+
}.map do |attr|
|
99
|
+
assert_equal(@product.send(attr), product.send(attr))
|
100
|
+
end
|
101
|
+
assert_equal(@product.promotion, product.promotion)
|
102
|
+
assert_equal(@product.sale, product.sale)
|
88
103
|
end
|
104
|
+
|
89
105
|
def test_price_levels__no_promo
|
90
106
|
@product.l1_qty = 1
|
91
107
|
@product.l1_price = 10
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bbmb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masaomi Hatakeyama, Zeno R.R. Davatz, Niklaus Giger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: odba
|
@@ -485,3 +485,4 @@ test_files:
|
|
485
485
|
- test/util/test_server.rb
|
486
486
|
- test/util/test_target_dir.rb
|
487
487
|
- test/util/test_transfer_dat.rb
|
488
|
+
has_rdoc:
|