mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-04-04 07:09:14 +00:00
Pass needed arguments and reorder state machine
- Arguments were misordered and `scale` is needed to compute the denominator. - Reorder "state machine" if-else as variant_unit_name is priority and "item" is too. - @andrewpbrett I need your review here ;) - Still need to test imperial system
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
describe "UnitPrices service", ->
|
||||
UnitPrices = null
|
||||
|
||||
beforeEach ->
|
||||
module "admin.products"
|
||||
module ($provide)->
|
||||
$provide.value "availableUnits", "g,kg,T,mL,L,kL"
|
||||
null
|
||||
inject (_UnitPrices_) ->
|
||||
UnitPrices = _UnitPrices_
|
||||
|
||||
describe "get correct unit price duo unit/value for weight", ->
|
||||
unit_type = "weight"
|
||||
|
||||
it "with scale: 1", ->
|
||||
price = 1
|
||||
scale = 1
|
||||
unit_value = 1
|
||||
expect(UnitPrices.price(price, scale, unit_type, unit_value)).toEqual 1000
|
||||
expect(UnitPrices.unit(scale, unit_type)).toEqual "kg"
|
||||
|
||||
it "with scale and unit_value: 1000", ->
|
||||
price = 1
|
||||
scale = 1000
|
||||
unit_value = 1000
|
||||
expect(UnitPrices.price(price, scale, unit_type, unit_value)).toEqual 1
|
||||
expect(UnitPrices.unit(scale, unit_type)).toEqual "kg"
|
||||
|
||||
it "with scale: 1000 and unit_value: 2000", ->
|
||||
price = 1
|
||||
scale = 1000
|
||||
unit_value = 2000
|
||||
expect(UnitPrices.price(price, scale, unit_type, unit_value)).toEqual 0.5
|
||||
expect(UnitPrices.unit(scale, unit_type)).toEqual "kg"
|
||||
|
||||
it "with price: 2", ->
|
||||
price = 2
|
||||
scale = 1
|
||||
unit_value = 1
|
||||
expect(UnitPrices.price(price, scale, unit_type, unit_value)).toEqual 2000
|
||||
expect(UnitPrices.unit(scale, unit_type)).toEqual "kg"
|
||||
|
||||
it "with price: 2, scale and unit_value: 1000", ->
|
||||
price = 2
|
||||
scale = 1000
|
||||
unit_value = 1000
|
||||
expect(UnitPrices.price(price, scale, unit_type, unit_value)).toEqual 2
|
||||
expect(UnitPrices.unit(scale, unit_type)).toEqual "kg"
|
||||
|
||||
it "with price: 2, scale: 1000 and unit_value: 2000", ->
|
||||
price = 2
|
||||
scale = 1000
|
||||
unit_value = 2000
|
||||
expect(UnitPrices.price(price, scale, unit_type, unit_value)).toEqual 1
|
||||
expect(UnitPrices.unit(scale, unit_type)).toEqual "kg"
|
||||
|
||||
it "with price: 2, scale: 1000 and unit_value: 500", ->
|
||||
price = 2
|
||||
scale = 1000
|
||||
unit_value = 500
|
||||
expect(UnitPrices.price(price, scale, unit_type, unit_value)).toEqual 4
|
||||
expect(UnitPrices.unit(scale, unit_type)).toEqual "kg"
|
||||
|
||||
|
||||
describe "get correct unit price duo unit/value for volume", ->
|
||||
unit_type = "volume"
|
||||
|
||||
it "with scale: 1", ->
|
||||
price = 1
|
||||
scale = 1
|
||||
unit_value = 1
|
||||
expect(UnitPrices.price(price, scale, unit_type, unit_value)).toEqual 1
|
||||
expect(UnitPrices.unit(scale, unit_type)).toEqual "L"
|
||||
|
||||
it "with price: 2 and unit_value: 0.5", ->
|
||||
price = 2
|
||||
scale = 1
|
||||
unit_value = 0.5
|
||||
expect(UnitPrices.price(price, scale, unit_type, unit_value)).toEqual 4
|
||||
expect(UnitPrices.unit(scale, unit_type)).toEqual "L"
|
||||
|
||||
it "with price: 2, scale: 0.001 and unit_value: 0.01", ->
|
||||
price = 2
|
||||
scale = 0.001
|
||||
unit_value = 0.01
|
||||
expect(UnitPrices.price(price, scale, unit_type, unit_value)).toEqual 200
|
||||
expect(UnitPrices.unit(scale, unit_type)).toEqual "L"
|
||||
|
||||
it "with price: 20000, scale: 1000 and unit_value: 10000", ->
|
||||
price = 20000
|
||||
scale = 1000
|
||||
unit_value = 10000
|
||||
expect(UnitPrices.price(price, scale, unit_type, unit_value)).toEqual 2
|
||||
expect(UnitPrices.unit(scale, unit_type)).toEqual "L"
|
||||
|
||||
describe "get correct unit price duo unit/value for items", ->
|
||||
unit_type = "items"
|
||||
scale = null
|
||||
|
||||
it "with price: 1 and unit_value: 1", ->
|
||||
price = 1
|
||||
unit_value = 1
|
||||
expect(UnitPrices.price(price, scale, unit_type, unit_value)).toEqual 1
|
||||
expect(UnitPrices.unit(scale, unit_type)).toEqual "item"
|
||||
|
||||
it "with price: 1 and unit_value: 10", ->
|
||||
price = 1
|
||||
unit_value = 10
|
||||
expect(UnitPrices.price(price, scale, unit_type, unit_value)).toEqual 0.1
|
||||
expect(UnitPrices.unit(scale, unit_type)).toEqual "item"
|
||||
|
||||
it "with price: 10 and unit_value: 1", ->
|
||||
price = 10
|
||||
unit_value = 1
|
||||
expect(UnitPrices.price(price, scale, unit_type, unit_value)).toEqual 10
|
||||
expect(UnitPrices.unit(scale, unit_type)).toEqual "item"
|
||||
Reference in New Issue
Block a user