solidus icon indicating copy to clipboard operation
solidus copied to clipboard

Calculator should always return a BigDecimal, but in same scenarios that's not happening

Open stefano-sarioli opened this issue 5 years ago • 3 comments

The calculator should always return a BigDecimal, but that's not always the case.

For example the flat_rate calculator return 0 as Integer on the else branch.

If the calculator returns a type other than BigDecimal a warning will be issued by the adjustment action for the promotions, for example create_quantity_adjustments.

I think that we should document this expected interface on the Calculator, and update our actual implementation to respect the expected interface.

I wasn't able to find a test that raises this warning on the Solidus codebase, we should probably add some tests to cover this case.

Solidus Version: First found out on Solidus 2.5.2.

To Reproduce

  • Write a test that creates a create_quantity_adjustments using a flat_rate calculator giving in input a nil object.
  • Launch it.
  • A Warning should appear in the console about results not being a BigDecimal. ("Spree::Calculator::FlatRate#compute returned 0, it should return a BigDecimal")

Current behavior

  • Raises a warning when using a standard calculator.

Expected behavior

  • Doesn't raise any warning when using a standard calculator.

stefano-sarioli avatar Sep 11 '20 09:09 stefano-sarioli

Hi! I did this PR https://github.com/solidusio/solidus/pull/3789, let me know if I made a mistake or if can I improve something thanks.

Ilyeo avatar Oct 07 '20 23:10 Ilyeo

Hi, I would like to work in this issue. Could I? it is PR #4191

redencion avatar Oct 13 '21 19:10 redencion

Hi all, I tested create_quantity_adjustments I added nil object but it is not return 0 either bigdecimal. testing this is I got added_testing_233 So, I think as I saw in description it should get back bigdecimal, but It'll not to be, because there exist another class that catching object be nil or not, this is PartialLineItem here quality_compute If I'm lost appreciate your help, thanks

redencion avatar Oct 16 '21 14:10 redencion