Skip to content

Commit

Permalink
Core: Update stamp price
Browse files Browse the repository at this point in the history
TYPE: Feature
LINK: None
  • Loading branch information
Tschuppi81 authored Jan 7, 2025
1 parent 4cbd81a commit e9bcdd7
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 16 deletions.
2 changes: 1 addition & 1 deletion src/onegov/form/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ class MyForm(Form):
stamps = IntegerRangeField(
'No. Stamps',
range=range(0, 30),
pricing={range(0, 30): (0.85, 'CHF')}
pricing={range(0, 30): (1.00, 'CHF')}
)
delivery = RadioField('Delivery', choices=[
Expand Down
4 changes: 2 additions & 2 deletions src/onegov/form/parser/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -231,9 +231,9 @@
Integer fields optionally can have a price attached to them which will be
multiplied by the supplied integer::
Number of stamps to include = 0..30 (0.85 CHF)
Number of stamps to include = 0..30 (1.00 CHF)
This will result in a price of 0.85 CHF per stamp.
This will result in a price of 1.00 CHF per stamp.
Code
~~~~
Expand Down
4 changes: 2 additions & 2 deletions tests/onegov/form/test_grammar.py
Original file line number Diff line number Diff line change
Expand Up @@ -370,10 +370,10 @@ def test_prices():
assert f.pricing.credit_card_payment

field = integer_range_field()
f = field.parseString("0..30 (0.85 CHF)")
f = field.parseString("0..30 (1.00 CHF)")
assert f.type == 'integer_range'
assert f[0] == range(0, 30)
assert f.pricing.amount == Decimal('0.85')
assert f.pricing.amount == Decimal('1.00')
assert f.pricing.currency == 'CHF'
assert not f.pricing.credit_card_payment

Expand Down
12 changes: 6 additions & 6 deletions tests/onegov/form/test_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -851,14 +851,14 @@ def test_integer_range():

def test_integer_range_with_pricing():

form_class = parse_form("Stamps = 0..20 (0.85 CHF)")
form_class = parse_form("Stamps = 0..20 (1.00 CHF)")
form = form_class(MultiDict([
('stamps', '')
]))
form.validate()
assert not form.errors
assert form.stamps.pricing.rules == {
range(0, 20): Price(Decimal('0.85'), 'CHF'),
range(0, 20): Price(Decimal('1.00'), 'CHF'),
}
assert not form.stamps.pricing.has_payment_rule
assert form.stamps.pricing.price(form.stamps) is None
Expand All @@ -877,20 +877,20 @@ def test_integer_range_with_pricing():
]))
form.validate()
assert not form.errors
assert form.stamps.pricing.price(form.stamps) == Price(8.5, 'CHF')
assert form.stamps.pricing.price(form.stamps) == Price(10.00, 'CHF')

form_class = parse_form("Stamps *= 0..20 (0.85 CHF!)")
form_class = parse_form("Stamps *= 0..20 (1.00 CHF!)")
form = form_class(MultiDict([
('stamps', '20')
]))
form.validate()
assert not form.errors
assert form.stamps.pricing.rules == {
range(0, 20): Price(Decimal('0.85'), 'CHF', credit_card_payment=True),
range(0, 20): Price(Decimal('1.00'), 'CHF', credit_card_payment=True),
}
assert form.stamps.pricing.has_payment_rule
assert form.stamps.pricing.price(form.stamps) == Price(
17, 'CHF', credit_card_payment=True
20.00, 'CHF', credit_card_payment=True
)


Expand Down
10 changes: 5 additions & 5 deletions tests/onegov/org/test_views_forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,11 +266,11 @@ def test_add_custom_form_minimum_price_validation(client):
form_page.form['definition'] = textwrap.dedent("""
E-Mail *= @@@
Stamp A = 0..20 (1.10 CHF)
Stamp B = 0..20 (0.85 CHF)
Stamp A = 0..20 (1.20 CHF)
Stamp B = 0..20 (1.00 CHF)
Discount *=
(x) First four B stamps free (-3.40 CHF)
(x) First four B stamps free (-4.00 CHF)
""")
form_page.form['minimum_price_total'] = '5.00'
form_page = form_page.form.submit().follow()
Expand All @@ -281,14 +281,14 @@ def test_add_custom_form_minimum_price_validation(client):
form_page = form_page.form.submit().follow()

assert "Der Totalbetrag für Ihre Eingaben" in form_page
assert "beläuft sich auf 1.70 CHF" in form_page
assert "beläuft sich auf 2.00 CHF" in form_page
assert "allerdings ist der Minimalbetrag 5.00 CHF" in form_page

# now that we reached the minimum price we should succeed
form_page.form['stamp_a'] = '3'
form_page = form_page.form.submit()
assert "Totalbetrag" in form_page
assert "5.00 CHF" in form_page
assert "5.60 CHF" in form_page
assert "Minimalbetrag" not in form_page


Expand Down

0 comments on commit e9bcdd7

Please sign in to comment.